Tor
Manchmal können Abendmenüs lange Namen haben. Für den Kellner ist es viel einfacher, eine Abkürzung zu schreiben, die das Gericht eindeutig identifiziert.
Zum Beispiel angesichts dieser Liste:
beef burger
chicken burger
chicken nuggets
Die Abkürzung c n
stimmt überein chicken nuggets
.
Die Abkürzung bur
stimmt mit beef burger
und überein chicken burger
.
Schreiben Sie ein Funktionsprogramm, das ein oder mehrere Elemente identifiziert, die einer Abkürzung entsprechen.
Eingang
- Die abgekürzte Zeichenfolge, die gefunden werden soll.
- Eine Liste der zu durchsuchenden Elemente.
Sie können diese Reihenfolge ändern und geeignete Datentypen verwenden.
Ausgabe
- Wenn die Abkürzung nicht mit Elementen übereinstimmt:
Not found
- Wenn die Abkürzung eindeutig mit einem Element übereinstimmt, geben Sie das nicht abgekürzte Element aus.
- Wenn die Abkürzung nicht eindeutig mit mehreren Elementen übereinstimmt: Geben Sie eine durch Kommas getrennte Liste von Wörtern aus, die die Auswahl eindeutig machen würden, gefolgt von einem Fragezeichen. Die Reihenfolge ist nicht wichtig. Zusätzliche Plätze sind erlaubt.
Übereinstimmende Regeln
Jedes Wort in der Abkürzung und die Elemente werden separat betrachtet. Wenn ein abgekürztes Wort mit dem Anfang eines Elementworts übereinstimmt, ist das Element eine potenzielle Übereinstimmung. Wenn keines der Wörter eines Elements mit einem der abgekürzten Wörter beginnt, stimmt dieses Element nicht überein.
Abgekürzte Wörter können in beliebiger Reihenfolge sein.
Ein abgekürztes Wort kann nicht verwendet werden, um mehrere Artikelwörter zuzuordnen, und umgekehrt.
Abkürzungen stimmen nur mit dem Wortanfang überein.
Angenommen, kein Element enthält alle Wörter eines anderen Elements. Zum Beispiel werden Sie nie beef burger
und haben beef cheese burger
.
Testfälle
Angesichts dieser Liste:
beef burger
crispy chicken burger
grilled chicken burger
chicken nuggets
chocolate cone
strawberry cone
vanilla cone
Diese Abkürzung ergibt die angegebene Ausgabe:
fish Not found
cones Not found
chicken cone Not found
nilla Not found
v vanilla cone
be beef burger
c n chicken nuggets
b b beef burger
c b c crispy chicken burger
c b crispy,grilled?
bu beef,crispy,grilled?
or beef,crispy chicken,grilled chicken?
ch crispy,grilled,nuggets,cone?
or crispy chicken,grilled chicken,nuggets,cone?
Wertung
Das ist Code Golf. Die kürzeste Antwort in Bytes in 12 Tagen wird akzeptiert. (Ich hätte es eine Woche geschafft, aber dafür werde ich nicht da sein.)
v
Streichhölzervanilla cone
.c b
würde übereinstimmen,crispy chicken burger
anstatt mehrdeutig zu sein. Wenn ich "Wort" sage, meine ich eine Zeichenfolge, die durch ein Leerzeichen begrenzt ist, alsog c b
drei Wörter.crispy,grilled,nuggets,chocolate
für dench
Testfall gültig sein ? Mit der zweiten Interpretationchicken,grilled
sollte für denc b
Testfall gültig sein . Was vermisse ich?b b
beef burger
battered bacon
Was wäre bei gegebener Eingabe eine akzeptable Ausgabe?Antworten:
Python 2 - 181 Bytes
Es verwandelt die abgekürzte Zeichenfolge in einen regulären Ausdruck und versucht, Gruppen aus der Suchliste zuzuordnen.
Die ternäre Operation
if
undelse
s sind 14 Bytes. Ich habe versucht, es in eine Liste zu zerschneiden und dann basierend auf dem Status von auf eines der Elemente zuzugreifenr
, habe aber noch nichts kürzeres als dieses.Rufen Sie an mit
s(str, list)
:quelle