CJam , 6 Bytes (Vollprogramm) / 7 Bytes (Codeblock)
q),^W=
Probieren Sie es online!
Dies ist ein vollständiges CJam-Programm, das die Eingabezeichenfolge von der Standardeingabe liest und den fehlenden Buchstaben an die Standardausgabe ausgibt. CJam hat eigentlich keine "Methoden", was die Herausforderung verlangt, aber das Nächste wäre wahrscheinlich ein ausführbarer Codeblock, wie dieser:
{),^W=}
Probieren Sie es online!
Wenn dieser Codeblock ausgewertet wird, nimmt er die Eingabe als Zeichenfolge (dh als Array von Zeichen) auf dem Stapel und gibt das fehlende Zeichen auch auf dem Stapel zurück.
Erläuterung:q
Liest im vollständigen Programm die Eingabezeichenfolge und platziert sie auf dem Stapel. )
Anschließend wird das letzte Zeichen der Eingabezeichenfolge entfernt und der Bereichsoperator ,
wandelt es in ein Array um, das alle Zeichen mit darunter liegenden Codepunkten enthält (einschließlich aller Buchstaben davor im Alphabet). Wenn also beispielsweise die Eingabe wäre cdfgh
, dann ),
würde der Stapel die Zeichenfolgen enthalten cdfg
(dh die Eingabe mit dem letzten entfernten Buchstaben) und ...abcdefg
wobei ...
für eine Reihe von Zeichen mit unten stehenden ASCII-Codes stehta
(dh alle Zeichen unter der zuletzt entfernten Eingabe) Brief).
Der Unterschiedsoperator für symmetrische Mengen ^
kombiniert diese Zeichenfolgen zu einer einzigen Zeichenfolge, die genau die Zeichen enthält, die in einer der Zeichenfolgen, jedoch nicht in beiden, vorkommen. Es behält die Reihenfolge bei, in der die Zeichen in den Zeichenfolgen angezeigt werden. Für die Beispieleingabe lautet cdfg
das Ergebnis also "after ),^
" ...abe
, wobei ...
wiederum eine Reihe von Zeichen mit den folgenden ASCII-Codes angegeben wird a
. Zum Schluss W=
extrahieren Sie einfach das letzte Zeichen dieser Zeichenfolge. Dies ist genau das fehlende Zeichen e
, das wir suchen wollten (und verwerfen den Rest). Wenn das Programm endet, druckt der CJam-Interpreter implizit den Inhalt des Stapels aus.
Bonus: GolfScript , 6 Bytes (volles Programm)
),^-1>
Probieren Sie es online!
Es stellt sich heraus, dass fast derselbe Code auch in GolfScript funktioniert. Wir sparen ein Byte in der Vollversion des Programms aufgrund der impliziten Eingabe von GolfScript, verlieren aber ein Byte, weil im Gegensatz zu CJamW
keine handliche Variable mit einem Buchstaben hat, die auf -1 initialisiert ist.
Außerdem hat CJam separate Ganzzahl- und Zeichentypen (und Strings sind nur Arrays, die Zeichen enthalten), während GolfScript nur einen einzigen Ganzzahlentyp hat (und einen speziellen String-Typ, der sich etwas anders verhält als normale Arrays). Das Ergebnis all dessen ist, dass, wenn der GolfScript-Interpreter den tatsächlich fehlenden Buchstaben anstelle der ASCII-Codenummer ausdrucken soll, statt nur des Zeichens selbst eine einzelne Zeichenfolge zurückgegeben werden muss. Glücklicherweise muss für diese Änderung nur der Indexierungsoperator durch den Operator =
für die linke Kürzung des Arrays / Strings ersetzt werden >
.
Dank des impliziten I / O von GolfScript kann der obige Code natürlich auch als Snippet verwendet werden, das eine Zeichenfolge aus dem Stapel liest und eine Zeichenfolge mit einem einzelnen Buchstaben zurückgibt, die den fehlenden Buchstaben enthält. Oder vielmehr ist jedes Snippet, das eine einzelne Zeichenfolge auf dem Stapel als Argument verwendet und dessen Ausgabe als druckbare Zeichenfolge auf dem Stapel zurückgibt, auch ein vollständiges GolfScript-Programm.