Marcello
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.
>
>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 Radici | WebMail: rad...@yoyomail.com (no attach)
Il futuro dell' e-commerce: http://www.cump.ra
Notizie e approfondimenti sportivi: http://www.datasport.it
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