Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Cippete

1 view
Skip to first unread message

Vale

unread,
Jun 3, 2000, 3:00:00 AM6/3/00
to

Girava, tempo fa un piccolo problema : in quali casi nell'ultimo secolo, la
data nel formato gg/mm/aaaa ha contenuto tutte cifre diverse.
Mi chiedo : scrivendo l'anno per esteso, quante volte accade questo caso in
tutta la storia (prima e dopo Cristo)?

Marcello

ema

unread,
Jun 6, 2000, 3:00:00 AM6/6/00
to

Mio cuggino mi ha detto che Vale <nasom...@tin.it> scrisse:

> Girava, tempo fa un piccolo problema : in quali casi nell'ultimo secolo, la
> data nel formato gg/mm/aaaa ha contenuto tutte cifre diverse.
>
360 date su 36524 (0.985653 %)

ma perche` molte vengono eliminate "ingiustamente", ad esempio:
1/2/1987 e` scartata solo perche` viene scritta come 01/02/1987.

Se non teniamo conto di cio`, risultano:
2080 date su 36524 (5.694886 %)

> Mi chiedo : scrivendo l'anno per esteso, quante volte accade questo caso in
> tutta la storia (prima e dopo Cristo)?
>

ti posto il programmino che ho usato.
Nel parlare di prima/dopo Cristo occorre fare attenzione! Il calendario
e` stato variato spesso, quindi regolati tu :)
Cmq, se scrivi l'anno per esteso, ben poche date restano (la prima in
"valore assoluto" e` il 27/6/1345)

--- inizio prog ---
#include <stdio.h>

#define MINYEAR 1900
#define MAXYEAR 1999
#define ZERODAVANTI 1 /* 1 -> formato gg/mm/aaaa stretto
0 -> eventuali 0 sono ignorati */

int bisestile (int y);
int days (int m, int y);

main () {
int d = 1, m = 1, y = MINYEAR, /* giorno, mese ed anno */
r = 0, t = 0, /* date valide, e date totali */
v, i, j; /* var temporanee */
char c[8]; /* array per il controllo delle
8 cifre */

while (y <= MAXYEAR) {
++t;
v = 1;

/* scorre le date */
if (++d > days (m, y)) {
d = 1;
if (++m > 12) {
m = 1;
++y;
}
}

/* controlla se sono diverse le cifre */
c[1] = d % 10;
c[3] = m % 10;
c[7] = y % 10;
if (ZERODAVANTI || d > 9) c[0] = d / 10;
else c[0] = 'a';
if (ZERODAVANTI || m > 9) c[2] = m / 10;
else c[2] = 'b';
if (ZERODAVANTI || abs(y) > 999) c[4] = y / 1000;
else c[4] = 'c';
if (ZERODAVANTI || abs(y) > 99) c[5] = (y % 1000) / 100;
else c[5] = 'd';
if (ZERODAVANTI || abs(y) > 9) c[6] = (y % 100) / 10;
else c[7] = 'e';
for (i = 0; i < 8; i++)
for (j = 0; j < i; j++)
if (i != j && c[i] == c[j]) v = 0;
if (v) {
++r;
printf ("%d/%d/%d\n", d, m, y);
}
}
printf ("Totale: %d date su %d (%2f \%)\n", r, t, (float) r * 100 / t);
}

int bisestile (int y) {
return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
}

int days (int m, int y) {
switch (m) {
case 2: if (bisestile (y)) return 29;
else return 28;
break;
case 4:
case 6:
case 9:
case 11: return 30;
break;
default: return 31;
}
}
--- fine prog ---

bye!
--
Emanuele Cesena http://www.penguinpowered.com/~ecesena
<ece...@penguinpowered.com> - rimuovi XXX x rispondere ICQ #8814554

"Se l'Ulivo suona le sue trombe, il Polo suonera' le sue campane."
-- Beppe Pisanu, presidente dei deputati di Forza Italia,
sul"La Stampa" del 20 luglio 1997.

Elrond

unread,
Jun 6, 2000, 3:00:00 AM6/6/00
to

On 6 Jun 2000 19:53:02 +0200, ema <ece...@XXXpenguinpowered.com>
wrote:

>
>Mio cuggino mi ha detto che Vale <nasom...@tin.it> scrisse:
>> Girava, tempo fa un piccolo problema : in quali casi nell'ultimo secolo, la
>> data nel formato gg/mm/aaaa ha contenuto tutte cifre diverse.
>>
>360 date su 36524 (0.985653 %)
>
>ma perche` molte vengono eliminate "ingiustamente", ad esempio:
>1/2/1987 e` scartata solo perche` viene scritta come 01/02/1987.

Non sarebbe sufficiente il fatto che 1 compare nel giorno e nell'anno?
--
ciao,
Elrond

ALe RootS

unread,
Jun 7, 2000, 3:00:00 AM6/7/00
to

ema wrote:
>
> > Girava, tempo fa un piccolo problema : in quali casi nell'ultimo secolo, la
> > data nel formato gg/mm/aaaa ha contenuto tutte cifre diverse.
> >
> 360 date su 36524 (0.985653 %)
>
> ma perche` molte vengono eliminate "ingiustamente", ad esempio:
> 1/2/1987 e` scartata solo perche` viene scritta come 01/02/1987.
>
Ma non compare anche l'1 due volte? o non ho capito i termini del
problema?

--
Ale Radici | WebMail: rad...@yoyomail.com (no attach)
Il futuro dell' e-commerce: http://www.cump.ra
Notizie e approfondimenti sportivi: http://www.datasport.it

Mardy

unread,
Jun 7, 2000, 3:00:00 AM6/7/00
to

ALe RootS ha scritto nel messaggio <393D6F6B...@libero.it>...

>
>ema wrote:
>>
>> ma perche` molte vengono eliminate "ingiustamente", ad esempio:
>> 1/2/1987 e` scartata solo perche` viene scritta come 01/02/1987.
>>
>Ma non compare anche l'1 due volte? o non ho capito i termini del
>problema?


Ma se l'1 compare 2 volte, hai due cifre diverse. Se invece l'1 compare 1
volta, hai due cifre uguali. ;-)

(Si potrebbe ripetere il mio ragionamento sulla mia frase, e allora credo si
arriverebbe a qualcosa di simile al problema ritrito, 1, 11, 21, 1211,...)

Saluti,
Mardy

0 new messages