Biorąc pod uwagę listę ciągów, zamień każdy ciąg na jeden z niepustych podciągów, który nie jest podciągiem żadnego z pozostałych ciągów na liście i tak krótki, jak to możliwe.
Przykład
Biorąc pod uwagę listę ["hello","hallo","hola"]
, "hello"
należy zastąpić tylko "e"
jako ten podciąg nie jest zawarta w "hallo"
a "hola"
i to możliwie jak najkrótszy. "hallo"
mogą być zastąpione przez jedną "ha"
lub "al"
i "hola"
dowolną "ho"
, "ol"
lub "la"
.
Zasady
- Możesz założyć, że ciągi będą niepuste i będą zawierały tylko znaki alfabetu tego samego przypadku.
- Możesz założyć, że taki podciąg istnieje dla każdego ciągu na liście, tzn. Żaden ciąg na liście nie będzie podciągiem żadnego z pozostałych ciągów.
- Dane wejściowe i wyjściowe mogą mieć dowolny rozsądny format.
- To jest golf golfowy , więc spróbuj użyć jak najmniej bajtów w wybranym języku.
Przypadki testowe
W większości przypadków podana jest tylko jedna możliwa wydajność.
["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"]
Powiązane: Najkrótsze identyfikujące podciąg - podobny pomysł, ale bardziej zaangażowane reguły i kłopotliwy 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
źródło
źródło
""
(pusty ciąg) nie jest jednoznacznie identyfikujący dla pojedynczej"ppcg"
sprawy?Odpowiedzi:
Galaretka ,
129 bajtówWypróbuj online! Lub zobacz pakiet testowy (zajmuje ~ 35s)
źródło
Python 2 , 116 bajtów
Wypróbuj online!
źródło
Pyth , 12 bajtów
Wypróbuj tutaj!
Jak to działa
Zasadniczo filtruje podciągi każdego z nich, które występują tylko w jednym z ciągów na liście (to znaczy, jest unikalny dla tego ciągu) i pobiera pierwszy.
źródło
Prolog (SWI) ,
175163 bajtówWypróbuj online!
Większość rzeczy tutaj powinna być dość oczywista, ale:
Wyjaśnienie
Podpisy: (
+
= wejście,?
= opcjonalne,-
= wyjście,:
= wyrażenie)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)
\+ \+
jest po prostunot not
(tzn. konwertuje dopasowanie na wartość logiczną (w tym przypadku zapobiega dopasowywaniu obup
sppcg
osobno))źródło
APL (Dyalog) , 25 bajtów
Dzięki ngn za zapisanie jednego bajtu
Wypróbuj online!
źródło
J ,
30 2925 bajtówWypróbuj online!
źródło
Galaretka , 10 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 93 bajty
Wypróbuj online!
W jaki sposób?
Na każdy łańcuch y o długości L w tablicy wejścia A [] i wychodząc z n = 0 , używamy funkcji rekurencyjnej g (), w celu wytworzenia wszystkich podciągów U of s z:
Na przykład s = „abc” i L = 3 :
Niektóre podciągi są generowane kilka razy, ale to nie ma znaczenia. Co ważne, wszystkie podciągi o długości N zostały wygenerowane przed podciągami o długości N + 1 .
Zatrzymamy proces tak szybko, jak u nie można znaleźć w żadnym innym strun S w A [] , która jest gwarancją zdarzyć, gdy u == y w najgorszym przypadku, zgodnie z zasadą challenge # 2:
Dlatego w powyższym przykładzie kroki 7 i 8 faktycznie nigdy nie zostaną przetworzone.
źródło
PowerShell , 107 bajtów
Wypróbuj online!
Wyjaśnienie
Dla każdego dostarczonego ciągu (i przypisz całą tablicę
$a
):for
pętlę na każdej długości podciągu (w oparciu o 1) łańcucha (przypisując sam łańcuch$s
i długość do$g
)$i
):$i
a następnie dla każdego indeksu:$s
) w pozycji$_
(indeks) i długości$i
Where-Object
(?
) i zwróć, jeśli:$a
), który nie zawiera bieżącego ciągu$s
, nie ma dopasowania do bieżącego podciągu$_
Z powrotem na poziomie łańcucha, mamy wszystkie podciągi tego łańcucha, które nie zostały znalezione w innych, więc weź pierwszy,
[0]
ponieważ potrzebujemy tylko jednego z nich, a następnie przejdź do następnego.źródło
C # (interaktywny kompilator Visual C #) , 149 bajtów
Wypróbuj online!
Mniej golfa ...
źródło