Newsgroup: it.hobby.enigmi
Titolo: Miliardo (a)variato

Non essendoci stati interventi, provo a proporre la mia soluzione:
Non č una soluzione esatta, e credo che tale soluzione non sia molto
agevole, ma mi pare che si possa raggiungere un'ottima approssimazione.
Nel miliardo non avariato, eliminato l'ultimo numero e aggiunto lo zero
iniziale, si otteneva
999.999.999
999.999.998
........
........
000.000.001
000.000.000
(9 colonne * 1 miliardo di righe) dove le cifre da 0 a 9 si ripetono tutte
con la stessa frequenza.
Il valore medio delle cifre e' 4,5 , quindi
4,5*9.000.000.000
Considero separatamente l'effetto dei due virus:
Il virus A trasformando i 5 in 0, cambia soltanto il valore medio delle
cifre, che diventa 4. Quindi avremo:
4*9.000.000.000
soluzione ancora esatta.
L'effetto del virus B č quello di eliminare un certo numero di righe: se i
numeri originari non fossero stati modificati, l'eliminazione avrebbe
interessato esattamente una riga ogni 7, ma nel nostro caso alcuni ex
multipli di 7 non lo sono piů e viceversa.
Credo perň, non avendo motivi che mi inducano a ritenere il contrario, che i
due fatti si compensino, e ugualmente ritengo che, nei numeri da eliminare,
la distribuzione delle cifre sia mediamente la stessa che nei numeri
restanti.
Quindi l'eliminazione riduce il totale di circa 1/7 e mi rimane,
approssimativamente:
6/7 * 4 * 9.000.000.000
a cui, volendo, aggiungo l'1 dell'ultimo numero.
Penso che lo scostamento dalla soluzione esatta sia al massimo dell'ordine
di qualche decina.
-------------------
Il problema era:
Ho predisposto un programma per la scrittura di tutti i numeri da 1 a un
miliardo.
Una coppia di virus entrati nel computer hanno modificato il programma in
questo modo:
virus A) ogni volta che incontra la cifra 5 la sostituisce con 0
virus B) ogni volta che incontra un numero multiplo di 7 lo sostituisce con
0
il virus A agisce sempre prima del virus B
mi spiego con alcuni esempi:
15 diventa 10 (effetto del virus A)
21 diventa 0 (effetto del virus B)
75 diventa 0 (prima agisce A e 75 diventa 70, poi agisce B e 70 diventa 0)
56 diventa 6 (anche se 56 e' multiplo di 7, prima agisce A e 56 diventa 6,
quindi B non agisce)
Quale sara' la somma di tutte le singole cifre scritte dal programma?
-------------------
ciao
Paolo

di qualche decina.
Il tuo ragionameto non mi sembrava molto ortodosso, cosi' ho vinto la
pigrizia e...
ta-da'!  Il virus A e il virus B ora vivono nel mio ardisco!
Semplifichiamo un po' il problema: arriviamo fino a un milione, invece che a
un miliardo. Secondo il tuo ragionamento la somma sarebbe di
6/7 * 4 * 6.000.000 +1 = 20.571.430 circa
Il mio bel programmino in C (se vuoi te lo mando), a meno di errori
(facile), dice che la Vera Soluzione Esatta (tm) e':
20.570.281
Errore = 1149 in eccesso
Per un miliardo prevedo un errore assoluto maggiore (a occhio: 44000 per
eccesso).
MF


Ti ringrazio per la verifica dell'errore, e riconosco che il mio
ragionamento non era del tutto ortodosso, anche se potrei ritenermi
abbastanza soddisfatto dell'approssimazione; in fondo se dovessi pagare :-(o
meglio riscuotere:-)  una trentina di miliardi, una commissione di 44.000
Lire non mi preoccuperebbe piu' di tanto.
Credo inoltre che si possa prevedere che se dal miliardo passiamo alla
cifra_astronomica, l'errore relativo tenderebbe ad una
cifra_irrisoria_praticamente_trascurabile.
In realta' avevo pensato (sperato) ad un errore inferiore, evidentemente
qualcosa non ha funzionato.
Sarei curioso di sapere se questo qualcosa dipende dalla cattiva
distribuzione delle cifre nei multipli di sette, o dall'effetto combinato
dei due virus.
Percio' vorrei approfittare della tua pazienza, e quindi:
se hai un momento di tempo,
se non trovi di meglio da fare,
e soprattutto se riesci a procurarti un buon antivirus selettivo,
che ne diresti di provare il tuo programma con il solo virus B?
ciao
Paolo

che ne diresti di provare il tuo programma con il solo virus B?
La seconda che hai detto.
Somma 1 - 1milione con solo Virus B = 23.142.835
                                                tua stima = 23.142.858
Bingo!
Con prima Virus B poi Virus A = 20.571.415
                       tua stima (credo)= 20.571.430
Doppio bingo!
MF