"Mathematischer Zaubertrick"
von heinz- SNIPPET_TEXT:
-
- #!/bin/bash
- #
- # MATHE-RAETSEL (Zaubertrick)
- #
- # Dieses Script ermittelt eine beliebige, von Ihnen bestimmte Ziffer
- # aus einer von Ihnen bestimmten Zahl.
- #
- # Ursprungstext, loesungsweg und Beispiel, siehe am Ende des Scriptes.
- #
- # Funktion, auf Tastendruck warten.
- function Warte
- {
- echo
- read -sn1 -p ' Druecken Sie eine beliebige Taste um Fortzufahren.'
- echo -e '\n'
- }
- # Beschreibung der Aufgabe ausgeben.
- clear
- echo "Fuer dieses Experiment benoetigen wir eine groessere Zahl."
- echo "Denken Sie sich zu diesem Zweck eine beliebig grosse Zahl aus und"
- echo "schreiben Sie diese auf."
- Warte
- echo "Multiplizieren Sie nun diese Zahl mit 9, um sie weiter zu vergroessern."
- echo "Notieren Sie sich auch diese Zahl."
- Warte
- echo "Suchen Sie sich nun eine Ziffer aus der errechneten Zahl aus und markieren"
- echo "Sie diese. Diese Ziffer werde ich versuchen zu erraten."
- Warte
- echo "Geben Sie nun alle Ziffern der errechneten Zahl ein (ausser der Markierten) und"
- echo "bestaetigen Sie die Eingabe mit der ENTER-Taste."
- echo "Wenn Sie moechten, koennen Sie die Ziffern auch gerne in beliebiger Reihenfolge"
- echo "eingeben."
- echo
- # Ziffern abfragen.
- read -p 'Wie lauten diese Ziffern? '
- echo -e '\n'
- # Eingabe pruefen.
- while test -n "${REPLY//[0-9]}" -o -z "$REPLY"
- do
- echo -e "\a\nIhre Eingabe enthaelt ungueltige Zeichen! (>${REPLY//[0-9]}<)"
- read -p 'Wie lauten die Ziffern? '
- echo -e '\n'
- done
- # Quersumme bilden.
- w=$((`sed 's#[0-9]#&+#g' <<<"$REPLY"`0))
- # Sonderfall: Quersumme ist null
- test $w -eq 0 && z=9 || z=0
- # Zaehlen, bis zum naechsten "glatt" durch 9 teilbaren Wert.
- while test $((($w+$z)%9)) -ne 0
- do
- let z++
- done
- # Ergebnis ausgeben.
- echo -e "\nDie von Ihnen zuvor markierte Ziffer ist eine >$z<.\n"
- # MATHE-RAETSEL
- #
- # Du bittest eine Person, sich eine beliebig lange Zahl auszudenken,
- # die sie dir nicht nennt, und diese mit 9 zu multiplizieren.
- # Aus dem Ergebnis soll er nun eine beliebige Ziffer herausstreichen und
- # dir die uebrig bleibenden Ziffern in beliebiger Reihenfolge nennen.
- # Sofort kannst du genau sagen, welche Ziffer der Zuschauer durchgestrichen hatte.
- #
- #
- # Loesung:
- # Aus den genannten Ziffern die Quersumme ausrechnen.
- # Die naechste Zahl errechnen die "glatt" durch 9 teilbar ist.
- # Die Differenz ist die Zahl, die gestrichen wurde.
- #
- # Sonderfall:
- # Ist die Quersumme 0, ist die gestrichene Ziffer 9.
- #
- #
- # Beispiel:
- # Gedachte Zahl ist 282
- # 282 * 9 = 2538
- # Gie Zahl 3 wird gestrichen. Bleibt 25 8
- # 2 + 5 + 8 = 15
- # Die naechst hoehere Zahl die durch 9 Teilbar ist, ist die 18
- # Die Differenz von 18 - 15 = 3
- # Die 3 ist die gestrichene Zahl...
- #
Quellcode
Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN