Ersetzen Sie bei einer vorgegebenen Liste von Zeichenfolgen jede Zeichenfolge durch eine ihrer nicht leeren Teilzeichenfolgen, die keine Teilzeichenfolge der anderen Zeichenfolgen in der Liste ist und so kurz wie möglich ist.
Beispiel
In Anbetracht der Liste ["hello","hallo","hola"]
, "hello"
sollte nur ersetzt werden , "e"
da diese Teilzeichen nicht enthalten ist in "hallo"
und "hola"
und es ist so kurz wie möglich. "hallo"
ersetzt werden könnte durch entweder "ha"
oder "al"
und "hola"
durch irgendeine "ho"
, "ol"
oder "la"
.
Regeln
- Sie können davon ausgehen, dass die Zeichenfolgen nicht leer sind und nur alphabetische Zeichen derselben Groß- / Kleinschreibung enthalten.
- Sie können davon ausgehen, dass für jede Zeichenfolge in der Liste eine solche Teilzeichenfolge vorhanden ist, dh, keine Zeichenfolge in der Liste ist eine Teilzeichenfolge einer der anderen Zeichenfolgen.
- Eingabe und Ausgabe können in jedem vernünftigen Format erfolgen.
- Das ist Code-Golf , also versuchen Sie, so wenig Bytes wie möglich in der Sprache Ihrer Wahl zu verwenden.
Testfälle
In den meisten Fällen wird nur eine mögliche Ausgabe angegeben.
["ppcg"] -> ["p"] (or ["c"] or ["g"])
["hello","hallo","hola"] -> ["e","ha","ho"]
["abc","bca","bac"] -> ["ab","ca","ba"]
["abc","abd","dbc"] -> ["abc","bd","db"]
["lorem","ipsum","dolor","sit","amet"] -> ["re","p","d","si","a"]
["abc","acb","bac","bca","cab","cba"] -> ["abc","acb","bac","bca","cab","cba"]
Verwandte Themen : Kürzeste identifizierende Teilzeichenfolge - ähnliche Idee, aber komplexere Regeln und umständliches Format.
code-golf
string
code-golf
string
code-golf
array-manipulation
code-golf
quine
code-golf
array-manipulation
integer
matrix
classification
code-golf
quine
code-golf
string
matrix
conversion
code-golf
string
number
code-golf
string
code-golf
number
sequence
integer
code-golf
decision-problem
matrix
code-golf
string
code-golf
math
code-golf
math
array-manipulation
combinatorics
code-golf
random
code-golf
code-golf
alphabet
code-golf
python
c
code-golf
base-conversion
code-golf
string
counting
code-challenge
code-generation
fastest-code
code-golf
kolmogorov-complexity
matrix
code-golf
string
code-golf
array-manipulation
decision-problem
random
sudoku
code-golf
chess
code-golf
card-games
encode
code-golf
decision-problem
code-golf
code-golf
math
array-manipulation
matrix
Laikoni
quelle
quelle
""
(leere Zeichenfolge) eindeutig für den Einzelfall zu identifizieren"ppcg"
?Antworten:
Gelee ,
129 BytesProbieren Sie es online! Oder schauen Sie sich die Testsuite an (dauert ca. 35s)
quelle
Python 2 , 116 Bytes
Probieren Sie es online!
quelle
Pyth , 12 Bytes
Probieren Sie es hier aus!
Wie es funktioniert
Grundsätzlich werden die Teilzeichenfolgen der einzelnen Zeichenfolgen gefiltert, die nur in einer der Zeichenfolgen in der Liste vorkommen (d. H., Diese Zeichenfolge ist eindeutig), und die erste wird abgerufen.
quelle
Prolog (SWI) ,
175163 BytesProbieren Sie es online!
Die meisten Dinge hier sollten ziemlich offensichtlich sein, aber:
Erläuterung
Signaturen: (
+
= Eingabe,?
= optional,-
= Ausgabe,:
= Ausdruck)sub_string(+String, ?Before, ?Length, ?After, ?SubString)
string_length(+String, -Length)
member(?Elem, ?List)
between(+Low, +High, ?Value)
findall(+Template, :Goal, -Bag)
forall(:Cond, :Action)
\+ \+
is justnot not
(dh konvertiert eine Übereinstimmung in einen Booleschen Wert (in diesem Fall wird verhindert, dass beidep
sppcg
getrennt übereinstimmen )quelle
APL (Dyalog) , 25 Bytes
Danke ngn für das Speichern eines Bytes
Probieren Sie es online!
quelle
J ,
30 2925 ByteProbieren Sie es online!
quelle
Gelee , 10 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 93 Byte
Probieren Sie es online!
Wie?
Für jede Saite s der Länge L in dem Eingangsfeld a [] und beginnend mit n = 0 , verwenden wir die rekursive Funktion g () alle Teilketten zu erzeugen , u von s mit:
Zum Beispiel mit s = "abc" und L = 3 :
Einige Teilzeichenfolgen werden mehrmals generiert, aber das spielt keine Rolle. Wichtig ist, dass alle Teilzeichenfolgen der Länge N vor allen Teilzeichenfolgen der Länge N + 1 generiert wurden .
Wir stoppen den Prozess, sobald u in keinem anderen String S in a [] gefunden wird. Dies ist garantiert, wenn u == s im schlimmsten Fall gemäß der Herausforderungsregel # 2 ist:
Daher werden in dem obigen Beispiel die Schritte 7 und 8 tatsächlich niemals verarbeitet.
quelle
PowerShell , 107 Byte
Probieren Sie es online!
Erläuterung
Für jede angegebene Zeichenfolge (und weisen Sie das gesamte Array zu
$a
):for
Führen Sie eine Schleife über jede Teilzeichenfolgenlänge (1 basierend) der Zeichenfolge aus (indem Sie die Zeichenfolge selbst$s
und die Länge der Zeichenfolge zuweisen$g
).$i
):$i
für jeden Index eine Indexschleife von 0 bis Länge - :$s
) an Position$_
(Index) und Länge ab$i
Where-Object
(?
) und geben Sie ihn zurück, wenn:$a
), die die aktuelle Zeichenfolge nicht enthält$s
, hat keine Übereinstimmung mit der aktuellen Teilzeichenfolge$_
Zurück auf der Zeichenfolgeebene haben wir alle Teilzeichenfolgen dieser Zeichenfolge, die in den anderen nicht gefunden wurden. Nehmen Sie also die erste,
[0]
da wir nur eine von ihnen benötigen, und fahren Sie mit der nächsten Zeichenfolge fort.quelle
C # (Visual C # Interactive Compiler) , 149 Byte
Probieren Sie es online!
Weniger golfen ...
quelle