Spasibo, Boris!

Il forum di Base5, dove è possibile postare problemi, quiz, indovinelli, rompicapo, enigmi e quant'altro riguardi la matematica ricreativa e oltre.

Moderatori: Gianfranco, Bruno

Rispondi
giobimbo
Livello 5
Livello 5
Messaggi: 248
Iscritto il: sab nov 19, 2005 5:14 pm
Località: Biella

Spasibo, Boris!

Messaggio da giobimbo » dom ott 12, 2008 7:28 pm

Questo è il problema 350 che dovrebbe apparire nel numero 35 delle Sfide Matematiche. Non l'ho ancora risolto, ma ho la sensazione che la convergenza al punto fisso 6174 si possa dimostrare in modo più breve di quanto scriveva Kordemsky una quarantina di anni fa.


"Si scelga un numero di quattro cifre, non tutte uguali, con esse formare il più piccolo numero, m, e il più grande, M. Trovare (M-m) e ripetere tale procedura, mettendo uno zero davanti quando il risultato è di sole tre cifre, quindi 0397 invece di 397. Alla fine si arriverà a 6174 e da lì non ci si muove più visto che:
(M - m) = 7641 - 1467 = 6174.

Per esempio, iniziando con 4818:
8841 - 1488 = 7353;
7533 - 3357 = 4176;
7641 - 1467 = 6174.

Si può dimostrare che si arriva sempre a 6174? In origine questo era un problema irrisolto. Molti lettori han provato e presto si trovò che per una dimostrazione bastava un esame di 30 numeri di quattro cifre. La prima comunicazione al riguardo venne da Y.N. Lambina di Rjazan.
Quali sono questi 30 numeri? Che numero vien sempre raggiunto quando una simile procedura è applicata a numeri di due cifre, di tre cifre, di cinque cifre?"

delfo52
Livello 9
Livello 9
Messaggi: 1402
Iscritto il: mer mag 25, 2005 3:19 pm
Località: bologna

Re: Spasibo, Boris!

Messaggio da delfo52 » dom ott 12, 2008 7:35 pm

6174 è la costante di Kaprekar, per i numeri di quattro cifre (ad eccezione di quelli composti dalla stessa cifra).
il processo K. è proprio quello che prevede, a partire da un numero, di ottenerne due disponendo in ordine discendenete e ascendente le cifre, e sottrarre.
Iterando il passaggio si arriva sempre a 6174, che si auto-rigenera.
6174 è anche numero di Harshad, cioè è divisibile per la somma delle sue cifre.

in affari del genere, che cosa è "dimostrazione"?
Enrico

Quelo
Livello 6
Livello 6
Messaggi: 456
Iscritto il: ven giu 16, 2006 2:34 pm

Re: Spasibo, Boris!

Messaggio da Quelo » lun ott 13, 2008 7:29 pm

Sergio

« La risposta non la devi cercare fuori, la risposta è dentro di te, e però è sbagliata » Parola di Quelo

giobimbo
Livello 5
Livello 5
Messaggi: 248
Iscritto il: sab nov 19, 2005 5:14 pm
Località: Biella

Buuu, Boris!

Messaggio da giobimbo » mar ott 14, 2008 7:37 pm

A questo punto posso solo caldamente consigliare di non comperare il volume 35 delle Sfide Matematiche.

Alan
Nuovo utente
Nuovo utente
Messaggi: 15
Iscritto il: lun dic 05, 2005 12:30 pm
Località: Trieste

Re: Buuu, Boris!

Messaggio da Alan » mer ott 15, 2008 11:36 am

giobimbo ha scritto:A questo punto posso solo caldamente consigliare di non comperare il volume 35 delle Sfide Matematiche.
Questo solo perché esiste una pagina Internet che risolve uno dei problemi posto sul libro? :?


Alan

Quelo
Livello 6
Livello 6
Messaggi: 456
Iscritto il: ven giu 16, 2006 2:34 pm

Re: Spasibo, Boris!

Messaggio da Quelo » mer ott 15, 2008 5:14 pm

giobimbo ha scritto:A questo punto posso solo caldamente consigliare di non comperare il volume 35 delle Sfide Matematiche.
Forse sono stato frainteso, volevo solo segnalare che questo problema era già stato discusso qui sul forum (il secondo link proviene appunto da quella discussione).
Sergio

« La risposta non la devi cercare fuori, la risposta è dentro di te, e però è sbagliata » Parola di Quelo

Pasquale
Livello 11
Livello 11
Messaggi: 2421
Iscritto il: mer mag 25, 2005 1:14 am

Re: Spasibo, Boris!

Messaggio da Pasquale » dom ott 19, 2008 9:31 pm

Un po' di Decimal Basic ogni tanto non fa male:

applicando il procedimento descritto agli 8991 numeri esaminati (9000-9 con cifre uguali), la differenza fra il numero maggiore e quello minore è sempre un multiplo di 9, come peraltro già dimostrato in altro thread per numeri a 5 cifre: basterebbe quindi esaminare solo i numeri multipli di 9 che sono 999 (escludendo il 9999), ma se consideriamo che tutte le permutazioni di un numero a 4 cifre si riducono sempre alla stessa sottrazione da fare, allora i numeri da considerare sono ancora di meno (si è detto 30, ma il programma che segue, salvo perfezionamenti da effettuare, me ne dà 79)

DIM a$(1000,4)
DIM b$(1000)

FOR m=1000 TO 9999
IF MOD(m,9)=0 THEN 'scegli i multipli di 9
LET cont=cont+1
LET c$=STR$(m)

FOR n=1 TO 4
LET a$(cont,n)=mid$(c$,n,1)
NEXT N

FOR p=1 TO 3
FOR q=2 TO 5-p
IF a$(cont,q)<a$(cont,q-1) THEN swap a$(cont,q),a$(cont,q-1) !'ordine decrescente
NEXT Q
NEXT P

LET b$(cont)=""
FOR n=1 TO 4
LET b$(cont)=b$(cont)&a$(cont,5-n)
NEXT N

END IF
NEXT M

FOR m=1 TO 999 'elimina i doppioni
FOR n=m+1 TO 1000
IF b$(n)<>"" THEN
IF b$(m)=b$(n) THEN LET b$(n)=""
END IF
NEXT N
NEXT M

LET cont=0
FOR m=1 TO 1000
IF b$(m)<>"" and b$(m)<> "9999" THEN
LET cont=cont+1
PRINT USING "###) ":cont;
PRINT b$(m)
END if
next M

END

Comunque, con l'altro programma che segue, poiché non impiega molto tempo, si può più ignorantemente esaminare tutti i numeri di 4 cifre, "verificando" che effettivamente il risultato del procedimento descritto è sempre 6174:

DIM a$(4)
DIM b$(4)

FOR m=1000 TO 9999
LET m$=STR$(m)
10
FOR n=1 TO 4
LET a$(n)=mid$(m$,n,1)
NEXT N

FOR p=1 TO 3
FOR q=2 TO 5-p
IF a$(q)<a$(q-1) THEN swap a$(q),a$(q-1) !'ordine crescente - numero più piccolo
NEXT Q
NEXT P

FOR n=1 TO 4
LET b$(n)=a$(5-n) !'ordine decrescente - numero più grande
NEXT N

LET p$=""
LET n$=""
FOR p=1 TO 4
LET p$=p$&b$(p) !'numero maggiore
LET n$=n$&a$(p) !'numero minore
NEXT P

LET a=VAL(p$) !'numero maggiore
LET b=VAL(n$) !'numero minore
LET c = a-b

IF c=0 OR c=6174 THEN
GOTO 50
ELSE
LET m$=STR$(c)
GOTO 10
END IF

50
next M
'se l'esecuzione conduce qui, vuol dire che l'assunto è vero

PRINT "Si, è vero: applicando il procedimento a tutti i numeri fra 1000 e 9999,"
PRINT "esclusi quelli con cifre tutte uguali, il risultato è sempre 6174"
END
_________________

\text {     }ciao Immagine ciao
E' la somma che fa il totale (Totò)

0-§
Livello 6
Livello 6
Messaggi: 454
Iscritto il: ven nov 18, 2005 10:33 pm
Località: Bologna

Re: Spasibo, Boris!

Messaggio da 0-§ » mar nov 04, 2008 12:38 am

Magari non è una grande novità, ma volevo segnalare che un'altra interessante proprietà dell'algoritmo di Kaprekar: l'attrattore 6174 viene raggiunto in non più di 7 passaggi. Esempio:
1004-4086-8172-7443-3996-6264-4176-6174 e abbiamo concluso. La proprietà mi era ignota fino a ieri sera, quando con i potenti mezzi pythonici ho "dimostrato" che l'algoritmo converge sempre a 6174.
Non è difficile trovare che per numeri di 3 cifre l'attrattore è sempre 495=954-459 (tranne alcuni fastidiosi casi di convergenza a 0); più interessanti sono gli "strani anelli" prodotti da numeri di almeno 5 cifre.
A domani per gli altri risultati.
Zerinf
Lo scopo principale di una dichiarazione DATA è quello di dare dei nomi alle costanti; anziché inserire ogni volta 3.141592653589793 come valore di \pi, con una dichiarazione DATA si può assegnare tale valore alla variabile PI che può essere poi usata per indicare la costante. Ciò rende anche più semplice modificare il programma, qualora il valore di \pi dovesse cambiare.

-Da un vecchio manuale FORTRAN della Xerox

ZioGiò
Livello 4
Livello 4
Messaggi: 156
Iscritto il: sab gen 14, 2006 4:30 pm
Località: Mailand (Milano)
Contatta:

Re: Spasibo, Boris!

Messaggio da ZioGiò » mar nov 04, 2008 4:38 pm

Io non conoscevo questi numeri nè le loro proprietà ma è davvero interessante (in particolare la dissertazione del buon Pasquale in Decimal Basic).
La cosa più interessante, però, è 0-§ che usa mezzi pythonici! :mrgreen:
"Voi mi considerate un uomo sanza lettere, ma siete degli stolti perché le mie cose sono date dall'esperienza non dalle parole."
Leonardo Da Vinci

Immagine

Pasquale
Livello 11
Livello 11
Messaggi: 2421
Iscritto il: mer mag 25, 2005 1:14 am

Re: Spasibo, Boris!

Messaggio da Pasquale » ven nov 07, 2008 3:49 am

Bene Zerinf, però domani è passato e il pitone non s'è visto: se ci sei batti un colpo.
_________________

\text {     }ciao Immagine ciao
E' la somma che fa il totale (Totò)

0-§
Livello 6
Livello 6
Messaggi: 454
Iscritto il: ven nov 18, 2005 10:33 pm
Località: Bologna

Re: Spasibo, Boris!

Messaggio da 0-§ » ven nov 07, 2008 1:44 pm

Eh, gli è che ho sopravvalutato la mia confidenza con il pitone (in realtà un monty python) e non sono riuscito nel mio obiettivo. Cioè, ho creato una funzione F in grado di restituire l' "esito" (sia esso un singolo numero o un loop numerico) per ogni numero di partenza ma non sono stato in grado di realizzarne una per restituire tutti i diversi esiti per i numeri in un range prefissato. In altre parole, per studiare gli "esiti" dei numero tra 10000 e 99999 devo leggere 90000 risultati uno dopo l'altro e questo è alquanto scomodo (soprattutto se volessi studiare numeri con ancora più cifre).
Spero di essere riuscito a spiegare i termini del problema (in termini tecnici, la funzione F dà come un risultato di tipo NoneType, che non può essere inserito in una seconda funzione e che ancora non so come convertire in un altro tipo). Se c'è qualche esperto di Python si faccia sentire via MP, please...

P.S. Per motivi tecnici ora non posso, ma stasera prometto di farvi pervenire l'elenco del telefono secondo Kaprekar :mrgreen:
Lo scopo principale di una dichiarazione DATA è quello di dare dei nomi alle costanti; anziché inserire ogni volta 3.141592653589793 come valore di \pi, con una dichiarazione DATA si può assegnare tale valore alla variabile PI che può essere poi usata per indicare la costante. Ciò rende anche più semplice modificare il programma, qualora il valore di \pi dovesse cambiare.

-Da un vecchio manuale FORTRAN della Xerox

Pasquale
Livello 11
Livello 11
Messaggi: 2421
Iscritto il: mer mag 25, 2005 1:14 am

Re: Spasibo, Boris!

Messaggio da Pasquale » ven nov 07, 2008 7:15 pm

Zerinf, il tuo parlar m'è oscuro,
il tuo sapere, ormai è sicuro,
s'imperbola, questo è l'andazzo,
e non intendo un bell'amato ....

Preciso, onde evitare fraintesi,
che questo è un complimento,
almeno.....questo è l'intento,
non scomparir per altri mesi.


(mi scuso per questa licenziosa ispirazione, nel cui vortice sono stato risucchiato, impossibilitato ad opporre ogni qualsivoglia resistenza....mi accade una o due volte l'anno da quando ho smesso di fumare)
_________________

\text {     }ciao Immagine ciao
E' la somma che fa il totale (Totò)

0-§
Livello 6
Livello 6
Messaggi: 454
Iscritto il: ven nov 18, 2005 10:33 pm
Località: Bologna

Re: Spasibo, Boris!

Messaggio da 0-§ » sab nov 08, 2008 12:55 am

Puff pant... ecco qua alcuni esiti (mi paiono gli unici, purtroppo non ho proprio modo di verificare):
[74943, 62964, 71973, 83952]
[63954, 61974, 82962, 75933]
[75933, 63954, 61974, 82962]
[53955, 59994]
Posso almeno garantire che non vi sono loop da un solo elemento come 6174. Per i numeri a sei cifre abbiamo 549945 e 631764, mentre non ve ne sono a 7 cifre (che sia un'alternanza regolare tra numero di cifre pari/dispari?). Ho poi una congettura: per numeri di 5 cifre si finisce in loop in al più 10 mosse, ad es. partendo da 65361 si ha
65361, 52965, 70983, 94941, 84942, 73953, 63954, 61974, 82962, 75933
e da 75933 si entra in loop. Qualcuno può trovare un contresempio?
Saluti a tutti e grazie a Pas per il componimento.
Zerinf
Lo scopo principale di una dichiarazione DATA è quello di dare dei nomi alle costanti; anziché inserire ogni volta 3.141592653589793 come valore di \pi, con una dichiarazione DATA si può assegnare tale valore alla variabile PI che può essere poi usata per indicare la costante. Ciò rende anche più semplice modificare il programma, qualora il valore di \pi dovesse cambiare.

-Da un vecchio manuale FORTRAN della Xerox

0-§
Livello 6
Livello 6
Messaggi: 454
Iscritto il: ven nov 18, 2005 10:33 pm
Località: Bologna

Re: Spasibo, Boris!

Messaggio da 0-§ » sab nov 08, 2008 1:21 pm

Dopo una notte di calcoli (per il mio computer, non per me) ho trovato due numeri a 8 cifre che sono loop singoli: 63317664 (con una certa somiglianza al magico 6174) e 97508421.
Per i numeri di 6 cifre ho trovato (oltre ai già citati loop singoli, anche se ) ho trovato solo il loop
[420876, 851742, 750843, 840852, 860832, 862632, 642654]
ma sono ben lungi dal poter dire che non ve ne siano altri.
Bye
Zerinf
Lo scopo principale di una dichiarazione DATA è quello di dare dei nomi alle costanti; anziché inserire ogni volta 3.141592653589793 come valore di \pi, con una dichiarazione DATA si può assegnare tale valore alla variabile PI che può essere poi usata per indicare la costante. Ciò rende anche più semplice modificare il programma, qualora il valore di \pi dovesse cambiare.

-Da un vecchio manuale FORTRAN della Xerox

Pasquale
Livello 11
Livello 11
Messaggi: 2421
Iscritto il: mer mag 25, 2005 1:14 am

Re: Spasibo, Boris!

Messaggio da Pasquale » dom nov 09, 2008 4:23 am

Confermo la congettura di Zerinf sui numeri a 5 cifre: si entra nel loop al massimo con 10 sottrazioni; complimenti.

Per rispondere alla domanda iniziale di Giobimbo, possiamo dire che con numeri a 5 cifre non esiste un unico numero che viene sempre raggiunto, come per i numeri a 4 cifre.
Per i numeri a 3 cifre, viene raggiunto sempre il 495, mentre per i numeri a 2 cifre si raggiunge sempre il 9 e quindi lo 0, se è ammessa la sottrazione 9-9.

Non concordo invece per i numeri a 7 cifre, per i quali cito ad esempio i seguenti, con a fianco indicato il numero loop (il numero iniziale si riferisce alla quantità di sottrazioni da fare per entrare in loop):

15 5569493 8429652
16 3261534 8429652
17 4054443 8429652
19 4975799 8429652
20 5144540 8429652
21 2777787 8429652

Tutti i numeri a 7 cifre entrano comunque in loop, ma (qui azzardo io una congettura) occorrono da 9 a 21 sottrazioni, reiterate con i criteri che sappiamo.
_________________

\text {     }ciao Immagine ciao
E' la somma che fa il totale (Totò)

Rispondi