Als ich ein Neuling in der Highschool war und Chemie studierte, schaute ich mir das Periodensystem der Elemente an und buchstabierte schmutzige Wörter mit der Anzahl der Elemente (HeCK wäre 2619, 2-6-19).
Ich habe neulich darüber nachgedacht, als ich ein tolles Shirt sah, auf dem BeEr (4-68) stand.
Meine Codegolf-Herausforderung ist also das kürzeste Programm zur Ausgabe einer Liste von Wörtern, die Sie mit dem Periodensystem der Elemente UND dem Zahlencode, der dieses Wort darstellen würde, buchstabieren können.
/ usr / share / dict / words oder ein beliebiges Wörterbuch, das Sie für die Wortliste verwenden möchten. Wenn Sie eine "nicht standardmäßige" Wortliste verwenden, teilen Sie uns mit, was es ist!
Antworten:
GolfScript (
339 303 302 301294 Zeichen)Mit Dank an PhiNotPi, dessen Beobachtung über unnötige Elemente es mir ermöglichte, 33 Zeichen zu sparen.
Dies ist IMO viel idiomatischer GolfScript als der vorherige rekursive Ansatz.
Beachten Sie, dass ich zulasse, dass Wörter im Wörterbuch in Großbuchstaben geschrieben werden (
L
eine Funktion für Kleinbuchstaben unter der Annahme, dass es keine Rolle spielt, wenn Nicht-Alpha-Zeichen gebrochen werden), aber Wörter mit Apostrophen oder Akzenten ablehne.Da dies Codegolf ist, habe ich eher die Codelänge als die Geschwindigkeit optimiert. Das ist schrecklich langsam. Es wird erwartet, dass die Wortliste bei stdin bereitgestellt wird und die Ausgaben im folgenden Format an stdout ausgegeben werden:
(Kleinbuchstaben für Eingabewörter in Großbuchstaben, für die eine Übereinstimmung gefunden wird).
Wenn Sie mehr an den Elementen als an den Zahlen an sich interessiert sind, können Sie für den niedrigen Preis von
261253 Zeichen verwendendas gibt Ausgabe wie
quelle
"
stört mich überhaupt nicht. Und natürlich kommt Peter Taylor herein und haut alle mit Golfskript um.Ruby -
547393Neue Version, danke für die Vorschläge:
verwendet reguläre Ausdrücke. langsam und viel Raum für Verbesserungen, aber ich muss jetzt gehen :-)
quelle
e='HHeLiBe...LvUusUuo'.scan(/[A-Z][a-z]*/).map &:downcase
. 2) Variable Regex wird niemals verwendet. 3) Lesen Sie die Wörter aus der Standardeingabe :$<.each{|w|...
. Mit dieser Änderung wurde der Code auf 410 Zeichen reduziert.Python 710 (357 + 261 + 92)
Irgendwo gibt es sicher Raum für Verbesserungen. Es ist auch erwähnenswert, dass die zweite Einrückungsstufe das Tabulatorzeichen verwendet.
Es dauert etwas mehr als 5 Sekunden (auf meinem Computer), um das gesamte Wörterbuch zu durchlaufen und eine Ausgabe wie folgt zu erstellen:
Durch Hinzufügen weiterer 18 Zeichen erhalten Sie eine Ausgabe mit der richtigen Groß- und Kleinschreibung:
Sie können auch einzelne Wörter überprüfen:
quelle
Python - 1328 (975 + 285 Zeichen Code + 68 Wörterbuchcode)
Für den Wörterbuchteil:
quelle
C,
775771 ZeichenEingabe : Wort pro Zeile, muss klein geschrieben sein.
usr/share/dict/words
ist gut.Ausgabe : Wort und Zahlen, zB:
acceptances,89,58,15,73,7,6,99
Logik :
c(w,o,l)
Überprüft das Wortw
, beginnend mit Elementl
.Die bidirektionale Rekursion wird verwendet. Wenn das erste Element mit dem Kopf der Elementliste übereinstimmt, überprüfen Sie den Rest von
w
mit der vollständigen Elementliste . Wenn diese Übereinstimmung fehlschlägt, überprüfen Sie das Wort am Ende der Liste.Der Puffer
o
sammelt die Elementnummern entlang des erfolgreichen Pfades. Nach einer Übereinstimmung enthält es die Liste der Zahlen und wird gedruckt.Probleme :
Die Liste ist nicht effizient codiert - zu viel
"
und,
". Aber auf diese Weise ist sie einfach zu verwenden. Ich bin sicher, dass sie ohne zu hohe Codekosten erheblich verbessert werden kann.quelle