"Mathematischer Zaubertrick" [Beantwortet]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

"Mathematischer Zaubertrick" [Beantwortet]

Beitrag von heinz » 18.12.2019 13:17:49

Hallo Zusammen,

letztens bin ich auf eine Art "mathematischen Zaubertrick" gestossen, bei dem es darum geht eine beliebige Ziffer aus einer beliebigen Zahl zu erraten.

Ich habe das mal in ein kleines Script "gepackt", welches gut zu Funktionieren scheint.
(In ihm ist auch der Ursprungstext und der Loesungsweg enthalten...)
NoPaste-Eintrag40940

Nun weiss ich zwar wie der "Trick" funktioniert aber ich wuesste auch gerne warum er funktioniert...
(Mathe war leider nie meine Staerke...)
Kann mich da jemand aufklaeren oder eine Seite im Netz empfehlen die das kann?


Gruss, heinz
Zuletzt geändert von heinz am 18.12.2019 15:31:37, insgesamt 1-mal geändert.

uname
Beiträge: 12396
Registriert: 03.06.2008 09:33:02

Re: "Mathematischer Zaubertrick"

Beitrag von uname » 18.12.2019 13:49:48

Eigentlich ist es ganz einfach.

Man denkt sich eine Zahl. Diese Zahl wird mit 9 multipliziert. Durch die Multiplikation mit 9 ist die Zahl durch 9 teilbar. Jede durch 9 teilbare Zahl hat eine Quersumme, die durch 9 teilbar ist.

Code: Alles auswählen

2 -> 18 -> 1 + 8 = 9
Wenn man nun eine Zahl streicht fehlt genau so viel bis zum vielfachen der Zahl 9.

Streiche ich die 1, dann bleibt in der Summe 8 und es fehlt 1.
Streiche ich die 8, dann bleibt in der Summe 1 und es fehlt 8.

Dein genanntes Programm ist etwas kompliziert. Man muss gar nicht weiterzählen bis zur 9. (siehe: let z++)
Man hätte von 9 einfach die Zahl modulo 9 abziehen können. Problematisch ist im übrigen der Sonderfall der Ziffern 0 und 9.
Ich glaube nicht, dass der Trick beim Streichen von 0 bzw. 9 wie z. B. bei 990 korrekt funktioniert.

Code: Alles auswählen

modulo=$(($summe%9));
zahl=$((9-$modulo));
Oder vereinfacht in einer Zeile:

Code: Alles auswählen

zahl=$((9-$(($summe%9))));

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: "Mathematischer Zaubertrick"

Beitrag von heinz » 18.12.2019 15:31:14

Hallo uname,

vielen Dank fuer die Erklaerung!
uname hat geschrieben: ↑ zum Beitrag ↑
18.12.2019 13:49:48
Jede durch 9 teilbare Zahl hat eine Quersumme, die durch 9 teilbar ist.
Das scheint dann wohl der eigentliche "Trick" zu sein.
Wieder was gelernt. Danke!
uname hat geschrieben: ↑ zum Beitrag ↑
18.12.2019 13:49:48
Dein genanntes Programm ist etwas kompliziert.
Dachte ich mir schon. Wie gesagt, Mathe... :oops:
uname hat geschrieben: ↑ zum Beitrag ↑
18.12.2019 13:49:48
Man hätte von 9 einfach die Zahl modulo 9 abziehen können.
zahl=$((9-$(($summe%9))));
Ja, hast recht. Habe die while-Schleife jetzt durch:

Code: Alles auswählen

let z=$z-\($w%9\)
ersetzt. Funktioniert genauso. Danke fuer den Tipp!
uname hat geschrieben: ↑ zum Beitrag ↑
18.12.2019 13:49:48
Ich glaube nicht, dass der Trick beim Streichen von 0 bzw. 9 wie z. B. bei 990 korrekt funktioniert.
Da hast Du ebenfalls recht. Ist mir beim Testen nicht aufgefallen.
(Ich habe immer "wie wild" mehrere Zahlen eingegeben und mal 9 genommen...)
Moeglicherweise ist dem so, weil es bei 90 mehrere Moeglichkeiten gibt.
Die Ursprungszahl koennte 900 oder auch 990 gewesen sein.
Dafuer wird es wohl keine Loesung geben...

Der "Trick" funktioniert zwar oft aber halt nicht immer.
Zaubern ist halt schwierig... :-)

Nochmals Danke fuer Deine Muehe!

Gruss, heinz

wanne
Moderator
Beiträge: 7547
Registriert: 24.05.2010 12:39:42

Re: "Mathematischer Zaubertrick" [Beantwortet]

Beitrag von wanne » 19.12.2019 06:23:17

Dafuer wird es wohl keine Loesung geben...
Guck dir mal die Überlegungen hinterm ISBN-10 an. Da geht von der Idee her deutlich mehr. Die Rechnung ist aber auch komplizierter.
Die Quersumme im 10er System (alleine) ist halt doof.
Wenn du es weiter auf die Spitze treiben willst landestd du dann bie richtigen Erasur Encodings alla Hamming, reed-Solomon und Faltcodes.
rot: Moderator wanne spricht, default: User wanne spricht.

uname
Beiträge: 12396
Registriert: 03.06.2008 09:33:02

Re: "Mathematischer Zaubertrick" [Beantwortet]

Beitrag von uname » 19.12.2019 08:41:15

@wanne Neben ISBN-10 ist auch die Codierung von IBAN bzw. früher die Kontonummern ganz interessant.
heinz hat geschrieben: Das scheint dann wohl der eigentliche "Trick" zu sein.
Auch das ist schnell bewiesen.

Wenn man prüfen will ob irgendwas durch irgendwas teilbar ist, dann kann man teilbare Teile abziehen.
Am Ende ist es nur eine Modulo-Berechnung. Die Restfunktion muss 0 liefern.

Beispiel 7: 83 ist nicht durch 7 teilbar, da 13 (83-70) nicht durch 7 teilbar ist.

Bei 9:
Bei jeder Ziffer einer Zahl bleibt am Ende nur der Wert selbst übrig. Man muss nur die Werte in den Spalten addieren.

Code: Alles auswählen

0-9: Zahl direkt verwenden
10: 10 - 9 = 1
20: 20 - 18 = 2
30: 30 - 27 = 3
...
100: 99 - 1 = 1
200: 198 - 2 = 2
...
Gibt bestimmt auch einen Beweis.

wanne
Moderator
Beiträge: 7547
Registriert: 24.05.2010 12:39:42

Re: "Mathematischer Zaubertrick" [Beantwortet]

Beitrag von wanne » 19.12.2019 11:19:22

Das Problem dass du hast, ist dass du mit dem Rausstreichen defakto 2 Operationen machst:
a) Du entfernst eine Ziffer. (Also du ziehst n·10 ab mit n zwischen 0-9. Dich interessiert welche Ziffer das war.)
b) Du verschiebst alle davor liegenden um eine stelle. (Teilst also alle davor liegenden stellen durch 10).
Dazu kommt beim Quersumme bilden erneut:
c) diverse Ziffern n*10 duch 10 teilst.

Der Trick dahinter liegt, dass
10 ≡ 1 (mod 3)
=> Wenn du durch 10 teilst bleibt die Zahl mod 3 gleich. Und damit auch mod 9 (9=3·3). (Sie würde das auch defakto mod 18 mit der kleinen Einschränkung, dass 1 ≡ 10, 2 ≡ 11 usw.)
Kurz b) und c) wirken sich nicht auf deine Kongruenz aus. Was bleibt ist das abziehen.

btw: hast du auch eine schöne Erklärung, wie du deinen Algorithmus so umbaust, dass er immer funktioniert:
Multipliziere mit 18 statt 9.
Danach hast du eine Zahl die Kongruent 0 mod 18 ist. Die Summe gestrichener Ziffer wrd genau so viel weniger kongruent 18 sein.
Da du nur eine streichst ist klar welche es sein muss weil keine zwei Ziffern sind gleich mod 18...
Dein Problem dass 0 ≡ 9 (mod 9) ist existiert nicht mehr mod 18.
rot: Moderator wanne spricht, default: User wanne spricht.

uname
Beiträge: 12396
Registriert: 03.06.2008 09:33:02

Re: "Mathematischer Zaubertrick" [Beantwortet]

Beitrag von uname » 19.12.2019 21:23:29

Cool. Kannst du nicht mal ein Rätsel erfinden?

Antworten