Ordnen Sie jedem dieser neun verwirrend ähnlichen Wörter eine Zahl von 1 bis 9 zu, wie Sie möchten:
though
through
thorough
Thoreau
throw
threw
trough
tough
troll
Schreiben Sie ein Programm, das einen String enthält. Wenn der Eingang eines dieser neun Wörter ist, geben Sie die Nummer aus, die Sie ihm zugewiesen haben. Wenn die Eingabe nicht eines der obigen Wörter ist, kann das Programm alles tun (einschließlich Fehler oder Endlosschleife).
Bei den Wörtern muss die Groß- und Kleinschreibung Thoreau
beachtet werden. Sie sollten beispielsweise eine Zahl von 1 thoreau
bis 9 ergeben, müssen jedoch nicht dasselbe tun.
Beispiel
Angenommen, Sie weisen die Nummern wie folgt zu:
though 9
through 2
thorough 7
Thoreau 6
throw 3
threw 5
trough 4
tough 1
troll 8
Wann tough
dann eingegeben wird, 1
sollte ausgegeben werden.
Wann through
eingegeben wird, 2
sollte ausgegeben werden.
Wann throw
eingegeben wird, 3
sollte ausgegeben werden.
. . .
Wann though
eingegeben wird, 9
sollte ausgegeben werden.
Alle anderen Eingaben können alles tun.
Einzelheiten
- Nehmen Sie die Eingabezeichenfolge über stdin oder die Befehlszeile und geben Sie sie an stdout aus.
- Die Ausgabe kann eine einzelne nachgestellte Zeile enthalten.
- Anstelle eines Programms können Sie auch eine Funktion schreiben, die einen String aufnimmt und das Ergebnis normal ausgibt oder zurückgibt.
- Die kürzeste Übermittlung in Bytes gewinnt .
quelle
find
Methode gefunden wurde. Dann haben sich die Regeln geändert. Kluge Idee jetzt nicht so klug.Antworten:
CJam,
11 97 BytesWie es funktioniert :
Wir machen uns die Tatsache zunutze, dass die Summe der mit 11 modifizierten ASCII-Codes + 2 eine sehr schöne Reihenfolge von 1 bis 9 und dann 10 für die neun betroffenen Wörter ergibt. Hier ist die Bestellung:
Code Erklärung :
4 Bytes gespart dank user23013
Probieren Sie es hier online aus
quelle
q1b2+B%
.Pyth, 8 Zeichen
Probieren Sie es online aus: Demo oder Test Suite
Ich benutze die Aufgabe:
Erläuterung:
Btw, fand ich die magische Zahl 8109 durch dieses Skript:
fqr1 10Sme%CdT.z1
.quelle
Python 2,
9254 BytesDie Indexzeichenfolge wird mit erstellt
for word in words: print chr(hash(word)%95+32),
. Wie in Jakubes Antwort ausgeführt, liefert die Hash-Funktion je nach Python-Version unterschiedliche Ergebnisse. Diese Indexzeichenfolge wird auf 64-Bit-Python 2.7.6 berechnet.Längere (92 Bytes) aber weniger kryptische Antwort:
Das Programm gibt 1-9 zurück, obwohl durch gründlichen Thoreau-Wurf durch harten Troll in dieser Reihenfolge geworfen . Wenn die Eingabe nicht gefunden wird, gibt find ein -1 zurück, das nach dem in eine Null verwandelt wird
+1
.quelle
0
Zeug nicht mehr benötigt wird. Tut mir leid, dass du es geändert hast.Python 2.7.9 32-Bit-Version, 22 Byte
Beachten Sie, dass die Version hier wirklich wichtig ist. Sie erhalten unterschiedliche Ergebnisse, wenn Sie eine 64-Bit-Version von Python verwenden. Seit der
hash
Methode 64-Bit-Hash-Werte anstelle von 32-Bit berechnet.Die Aufgabe ist:
Versuchen Sie es online: http://ideone.com/Rqp9J8
quelle
sorted(...)==range(1,10)
hörte ich auf.Pyth, 7 Bytes
Ich benutze die folgende Zuordnung:
Cz
interpretiert die Eingabe als Basis-256-Zahl. Dann nehmen wir diesen Mod 31, subtrahieren 1 und nehmen das Ergebnis Mod 10. Äquivalenter Pseudocode:Vorführung , Testgeschirr .
quelle
Python 2, 27 Bytes
Mit dieser Aufgabe:
Es sind verschiedene Variationen möglich, z
quelle
Japt , 6 Bytes
Versuchen Sie es | Überprüfen Sie alle Wörter
Erläuterung
Nutzt die Tatsache aus, dass
n
JavaScript beim Parsen einer Basiszeichenfolge in eine Ganzzahl das Parsen beendet, wenn es auf eine Ziffer stößt, die größer als ist,n
und das Ergebnis bis zu diesem Punkt zurückgibt. Durch die Verwendung von base-32 hier (Ziffern0-v
) werden diew
s in "threw" und "throw" im Wesentlichen ignoriert.JavaScript, 22 Byte
Eine direkte Übersetzung - scheint es nicht wert zu sein, sie separat zu veröffentlichen.
quelle
C (gcc) , 66 Bytes
Probieren Sie es online!
quelle
-O
Compiler-Flag.h;f(char*s){for(h=33;*s;)h^=*s++;h=index("(Z5qW]2@H",h)-"H"+9;}
Java 8,
5325 Bytesoder
Port der CJam -Antwort von @Optimizer , da es in Java (höchstwahrscheinlich) nicht kürzer geht.
Probieren Sie es online aus.
quelle
parseInt
, nicht wahr? Wäre ein Port meiner Lösung nicht kürzer?parseInt
vorgegebene Basis, ist aber aufgrund der statischen Klassenanforderung leider ziemlich byteweit :Long.parseLong(...,32)
als kürzeste Variante. Darüber hinaus scheint es aus irgendeinem Grund"throw"
(und"threw"
auch) in Java zu scheitern .w
liegt anscheinend außerhalb des Basis-32-Bereichs (und die Verwendung von 33 führt zu falschen Ergebnissen).Gelee , 7 Bytes
Probieren Sie es online!
Boring Jelly Port der fantastischen CJam-Antwort.
quelle