Inspiriert von dieser Kommentarkette ...
Ich möchte
enklact
aus dieser Herausforderung herauskommen, aber ich kann nicht ...@ETHproductions to enklact (v): Implementieren einer Nachschlagetabelle unter Verwendung eines Unterabschnitts, der aus eindeutigen Elementen besteht.
Enklacting ist eine sehr nützliche Methode zum Komprimieren einer Nachschlagetabelle. Angenommen, Sie hatten die folgende Liste von Farben:
red
green
blue
yellow
purple
orange
Wenn Sie in der Lage sein möchten, eine Farbe als Eingabe zu verwenden und ihren Index in dieser Liste zurückzugeben, gibt es offensichtlich den direkten Weg:
["red", "green", "blue", "yellow", "purple", "orange"].index(input())
Aber es gibt eine Möglichkeit, wie wir dies mit weniger Bytes erreichen können:
"rgbypo".index(input()[0])
Dies funktioniert, weil der erste (oder 0.) Index jeder Zeichenfolge eindeutig ist. Dieses Beispiel ist offensichtlich, aber manchmal ist es etwas schwieriger. Was wäre, wenn wir eine Nachschlagetabelle für diese Liste erstellen wollten?
Sweet Onion Chicken Teriyaki
Oven Roasted Chicken
Turkey Breast
Italian BMT
Tuna
Black Forest Ham
Meatball Marinara
In diesem Fall können wir das nicht tun:
"SOTITBM".index(input()[0])
weil es zwei verschiedene Eingänge gibt, die mit einem beginnen 'T'
, nämlich "Thunfisch" und "Truthahn". Wir müssen uns einen anderen Index ansehen. Wenn Sie sich den 4. Index jeder Zeichenfolge ansehen, werden Sie feststellen, dass sie alle eindeutig sind. Also können wir das machen ...
"enklact".index(input()[3])
In diesem Fall lautet die "Enklaktionszeichenfolge" "enklact".
Das führt uns zur heutigen Herausforderung ...
Wenn Sie eine Liste von Zeichenfolgen angegeben haben, geben Sie eine gültige Enklaktionszeichenfolge zurück. Mit anderen Worten, wenn Sie eine Liste von Zeichenfolgen haben, geben Sie jede neue Zeichenfolge zurück, bei der jeder Buchstabe eindeutig ist, und die Zeichenfolge wird durch Verbinden des i-ten Buchstabens jeder Zeichenfolge gebildet.
Wenn es keine gültige Enklaction-Zeichenfolge gibt, muss Ihre Übermittlung stattdessen eine leere Zeichenfolge oder einen konsistenten falschen Wert zurückgeben. Wie üblich sind entweder Funktionen oder vollständige Programme zulässig, und die Eingabe- / Ausgabeformate sind (innerhalb des zulässigen Rahmens) zulässig.
Jede Zeichenfolge enthält nur druckbares ASCII, und bei dieser Abfrage wird die Groß- und Kleinschreibung beachtet.
Das ist Code-Golf , also versuchen Sie, das kürzestmögliche Programm in der Sprache Ihrer Wahl zu schreiben!
Testfälle
Input:
Programming
Puzzles
Code
Golf
Output (any one of these):
"ozdl"
"gzef"
Input:
the quick
brown fox
jumped over
lazy dogs
Output:
"tbjl"
"hrua"
"eomz"
" wpy"
"qne "
"if o"
"kxvs"
Note that "u dd" and "coog" are not valid.
Input:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Output:
""
Input:
AbC
aBc
bbC
Output:
"Aab"
Input:
@#$%^_
Hello_World
How are you?
Output:
"#eo"
"$lw"
"%l "
"^oa"
Input:
a
ab
ac
Output:
""