Mein Freund und ich haben dieses Spiel, das wir mit Worten spielen. Es ist ein lustiger Zeitvertreib, bei dem Buchstaben in einem Wort "gelöscht" werden, bis nichts mehr übrig ist. Ich bin es wirklich leid, dass er so viel schneller ist als ich, also ist es deine Aufgabe, es umzusetzen und mich ihn endlich schlagen zu lassen. Da ich das Programm so einfach wie möglich ausblenden muss, muss es natürlich so klein wie möglich sein.
Wie funktioniert dieses Spiel?
Das Spiel ist ein ziemlich einfacher Algorithmus. Es reduziert eine alphabetische Zeichenfolge, bis sie nicht mehr weiter reduziert werden kann, wodurch es zu einer Art Hash wird. Das eigentliche Spiel, das wir Menschen machen, ist sehr schwer zu implementieren, aber es kann in den folgenden Algorithmus vereinfacht werden:
Sie beginnen damit, das Alphabet in zwei Hälften zu falten und die beiden Teile wie folgt auszurichten:
a b c d e f g h i j k l m
z y x w v u t s r p q o n
Ausgehend von der Mitte weisen Sie dann der oberen Hälfte die positiven Ganzzahlen und der unteren die negativen Ganzzahlen zu:
a b c d e f g h i j k l m
13 12 11 10 9 8 7 6 5 4 3 2 1
z y x w v u t s r p q o n
-13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
Dann nehmen Sie Ihre Zeichenfolge (wir werden sie verwenden hello world
) und ignorieren alle nicht alphabetischen Zeichen. Übersetzen Sie sie:
h e l l o w o r l d
6 9 2 2 -2 -10 -2 -5 2 10
Dann summieren Sie die Buchstabenwerte. Diejenigen, die im vorherigen Diagramm aufgereiht sind (z. B. d
und w
, l
und o
), werden aufgehoben, während sich die anderen summieren.
sum(6 9 2 2 -2 -10 -2 -5 2 10 )=12
12 ist die Zahl für b
, so dass der Hash hello world
ISTb
Für ein Wort, das vollständig gelöscht wird (z. B. love
), geben Sie das "0-Zeichen" aus : -
. Beachten Sie, dass in der Eingabe -
weiterhin ignoriert wird. Es ist nur in der Ausgabe wichtig.
Wenn der Betrag der Zahl größer als 13 ist, dann beginnen zu verdoppeln Sie auf den nach oben a
ist und die z
's nehmen Sie grundsätzlich so viele a
‚s oder z
‘ s fit in die Zahl und nehmen , was wie so in den letzten Brief gelassen wird:
code golf: 43.
Passend für 3 a
und hat 4 übrig:
aaa 4: j
result: aaaj
Hinweis: Dieser Teil ist im Grunde genommen divmod
außer, dass er gegen Null rundet, nicht -infinity
(z. B. -43 würde zu 3 z
und und a, -4
was p
so ist zzzp
).
Hinweis: Der Bindestrich kommt nicht, wenn das a
oder z
die perfekt passen, nur wenn es genau ist 0
.
Erläuterungen:
- Der Hash ist Groß- und Kleinschreibung
- Standardlücken sind nicht erlaubt
- E / A kann in jedem Format vorliegen, das nicht zu ausgefallen, stdin, stdout, Befehlszeilenargument, Funktion usw. ist.
- Dies ist Code-Golf, so dass die kürzeste Größe in Bytes gewinnt.
Beispiele:
hello world --> b
love --> -
this is an example --> aak
hello *&*(&(*&%& world --> b
good bye --> ae
root users --> zzs
love
ist leer ...