Diese Frage ist von dieser Antwort inspiriert . Zufälligerweise verwendete ich als Kind die äthiopische Multiplikation, kannte aber den Namen der Methode bis vor kurzem nicht.
Die äthiopische Multiplikation ist eine Methode zur Multiplikation ganzer Zahlen, bei der nur Addition, Verdopplung und Halbierung verwendet werden.
Methode:
- Nimm zwei zu multiplizierende Zahlen und schreibe sie oben in zwei Spalten auf.
- In der linken Spalte halbieren Sie wiederholt die letzte Zahl, wobei Sie alle Reste verwerfen, und schreiben Sie das Ergebnis unter die letzte in derselben Spalte, bis Sie den Wert 1 schreiben.
- In der rechten Spalte immer wieder die letzte Zahl verdoppeln und das Ergebnis unten eintragen. stoppen Sie, wenn Sie ein Ergebnis in derselben Zeile hinzufügen, in der die linke Spalte 1 anzeigt.
- Untersuchen Sie die erzeugte Tabelle und verwerfen Sie alle Zeilen, in denen der Wert in der linken Spalte gerade ist. Addieren Sie die verbleibenden Werte in der rechten Spalte, um das Ergebnis der Multiplikation der beiden ursprünglichen Zahlen zu erhalten.
Zum Beispiel: 17 x 34
17 34
Die erste Spalte halbieren:
17 34
8
4
2
1
Verdoppelung der zweiten Spalte:
17 34
8 68
4 136
2 272
1 544
Durchgestrichene Zeilen, deren erste Zelle gerade ist, tun dies, indem Sie diese Zahlen rechts in eckige Klammern setzen:
17 34
8 [68]
4 [136]
2 [272]
1 544
Summiere die verbleibenden Zahlen in der rechten Spalte:
17 34
8 [68]
4 [136]
2 [272]
1 544
=====
578
Also ist 17 multipliziert mit 34 nach der äthiopischen Methode 578.
Die Aufgabe:
Golfcode, der zwei Zahlen zwischen 1 und 1000 annimmt und dasselbe Layout und denselben Algorithmus ausführt, wobei das folgende Produkt angezeigt wird.
Eingabemethode: Wie auch immer Sie wählen ...
Beispiel Eingabe:
19 427
Resultierende Ausgabe:
19 427
9 854
4 [1708]
2 [3416]
1 6832
======
8113
Bitte beachten Sie die Ausrichtung der Ziffern. Dies ist im Layout am wichtigsten. Beachten Sie auch, dass die durch Gleichheitszeichen dargestellte doppelte Linie zwei Zeichen länger sein muss als die Gesamtantwort und mittig ausgerichtet sein muss.
Testen
Wie werden Sie das testen? Indem Sie ein Programm ausführen, das zwei Zahlen verwendet. Diese Nummern können aus Ihrer Benutzer-ID-Nummer extrahiert werden (dies erhalten Sie, indem Sie den Mauszeiger über Ihren Avatar im oberen Fenster bewegen). Nehmen Sie Ihre Nummer und nehmen Sie die letzten drei Ziffern, dies ist die Nummer B, nehmen Sie alles, was vorne noch übrig ist, das ist die Nummer A. Dann testen Sie A mal B.
Testbeispiel:
Meine Benutzer-ID-Nummer ist 8555, meine Nummern sind also 8 und 555. Meine Ausgabe sollte also so aussehen:
8 [555]
4 [1110]
2 [2220]
1 4440
======
4440
Beschränkungen:
Es sind keine nativen Multiplikationsoperatoren zulässig, außer bei der Verwendung von "Verdopplung", wie im Algorithmus erwähnt. Mit anderen Worten, wenn Sie einen Operator wie * verwenden, kann dieser nur zum Multiplizieren mit 2 verwendet werden.
Beiträge, die sich nicht daran halten, werden nicht berücksichtigt und der Benutzer wird mit einem Pappkarton voller Habseligkeiten von den Räumlichkeiten begleitet. Jeder Eintrag enthält einen Code sowie den Test basierend auf Ihrer Benutzer-ID-Nummer.
Das ist Code Golf. Die kürzeste Anzahl von Bytes erhält den Preis, den Ruhm und die Bewunderung ihrer Kollegen ... (Und vielleicht ein Lamborghini ... Ich sagte "vielleicht"!)
*
oderx
) einschränken , aber es ist unmöglich zu erkennen, ob Multiplikation verwendet wird oder nicht. Abgesehen von diesem Teil ist die Herausforderung interessant.