Wprowadzenie
Jakiś czas temu zagubiony użytkownik SO opublikował tutaj pytanie, które teraz zostało usunięte, ale myślę, że stanowiłoby dobre wyzwanie, więc proszę ...
Wyzwanie
Napisz pełny program lub funkcję, która pobiera dwa ciągi znaków i sprawdza, czy permutacja pierwszego ciągu jest podciągiem drugiego ciągu.
Wkład
Dwa ciągi, ciąg i podciąg dla testowania (możesz wybrać kolejność).
Wydajność:
Prawdziwa wartość, jeśli ciąg zawiera permutację podciągu.
Wartość falsey, jeśli ciąg nie zawiera żadnych permutacji podciągu.
W teście rozróżniana jest wielkość liter.
Przykłady / przypadki testowe
sub-string string
input d!rl Hello World!
output truthy
input Pog Programming Puzzles & Code Golf
output falsey
input ghjuyt asdfhytgju1234
output truthy
Odpowiedzi:
Brachylog , 2 bajty
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES6), 77 bajtów
Zwraca 1 lub 0.
Skrawek
źródło
Python 2,
6766 bajtówPobiera dane wejściowe jako dwa ciągi, najpierw podłańcuch.
źródło
sorted
.05AB1E , 3 bajty
Wypróbuj online!
-1 bajt dzięki Emignie .
Wyjaśnienie:
źródło
.
Java 8,
266244 bajtówWyjaśnienie:
Wypróbuj tutaj.
źródło
Action<params>
zamiast jest pusta lambdaFunc<params, returnVal>
. Zakładam, że byłoby to coś podobnego.Consumer
iaccept(...)
zamiastFunction
iapply(...)
kiedy chcę mieć lambda z parametrem i bez typu zwracanego. Obecnie uczę się Java 8. :) Ale ponieważ muszę się zmienićvoid p(String p,String q)
,p("",p);
ip(p+q.ch...,q.sub...)
dop->q->
,p.apply("").accept(p);
ip.apply(p+q.ch...).accept(q.sub...)
krótsze jest użycie kombinacji lambda dla głównej metody i tylkovoid p(String p,String q)
metody Java 7 dla metody rekurencyjnej.Function<String, Predicate<String>>
mojego.Galaretka , 5 bajtów
Wypróbuj online!
-1 dzięki Emignie za zachęcenie mnie do ponownej gry w golfa.
Wyjaśnienie:
źródło
Japt,
107 bajtówWypróbuj online
Wyjaśnienie
źródło
Python , 60 bajtów
Zmieniona forma odpowiedzi TFelda - idź, daj kredyt!
Funkcja rekurencyjna zwracająca wartość logiczną
True
(prawda) lub pusty ciąg (fałsz).Wypróbuj online!
sortuje podłańcuch
u
i tę samą długość przodu łańcuchat
(przy użyciu plasterkat[:len(u)]
), jeśli są one takie same, wówczasTrue
jest zwracane, w przeciwnym razie, jeślit
nadal jest zgodne z prawdą (nie puste), powtarza się z kolejką odwrotnąt
(przy użyciu plasterkat[1:]
) . Jeślit
stanie się puste,and
to nie zostanie wykonane, a to pustet
zostanie zwrócone.źródło
lambda u,t,s=sorted:
dla liniowej nie zapisano bajtuPyth,
98 bajtów-1 bajt dzięki @Erik_the_Outgolfer
Pobiera dwa cytowane ciągi, z których drugim jest podłańcuch.
Spróbuj!
źródło
s
zamiast}1
.Mathematica,
5550 bajtów-5 bajtów od user202729
Zwraca,
False
jeśli permutacja pierwszego wejścia znajduje się w drugim ciągu. Zwraca,True
jeśli permutacja pierwszego wejścia nie znajduje się w drugim ciągu.Wyjaśnienie:
źródło
True
/False
.Characters
.CJam ,
1312 bajtówWypróbuj online!
Wydaje mi się, że CJam jest naprawdę ograniczony w porównaniu do innych języków golfowych, ale może po prostu jestem zły ...
Myślę o przeprowadzce do innej. 05AB1E wydaje się zabawny.
Naprawiono mały błąd dzięki Erikowi Outgolfer
Cut jeden kęs, ponieważ niezerowe liczby są prawdziwe
Wyjaśnienie:
źródło
a
iabc
?W>
.le!lf{\#)}:+
uważane za prawidłowe rozwiązanie? Powinien być wyprowadzany,0
jeśli łańcuch nie zostanie znaleziony, a w przeciwnym razie dodatnia liczba. Czy liczba niezerowa jest poprawnatruthy
?)
zamiastW>
, zgodnie z wyjaśnieniem PO.Java 9 JShell , 160 bajtów
(wstawiono nowe wiersze dla czytelności)
Wypróbuj online!
Uwaga: JShell domyślnie zawiera pewną liczbę importów. Jako rozwiązanie Java 8 lub Java 9 konieczne byłoby zaimportowanie:
Dla dodatkowych 45 bajtów lub łącznie 205 bajtów. Powyższe łącze TIO prowadzi do programu Java 9, ponieważ TIO nie ma obecnie JShell (i nie jest dla mnie jasne, jak JShell będzie działał na TIO).
źródło
C #, 320 bajtów
Jestem pewien, że obliczanie permutacji może być o wiele krótsze, ale w tej chwili nie wiem, jak to zrobić.
Sformatowana / Pełna wersja:
źródło
Rubinowy , 69 bajtów
Wypróbuj online!
źródło
Perl 6 , 48 bajtów
Zwraca łącznik obecności każdej permutacji jako podłańcuch. Na przykład z argumentami
"Hello World!"
i"d!l"
zwraca:... który „zapada się”
True
w kontekście logicznym. Oznacza to, że skrzyżowania są prawdziwymi wartościami.źródło
PHP> = 7,1, 91 bajtów
Przypadki testowe
źródło
~$p
zamiasta&$p
.,
Haskell, 54 bajty
Wykorzystanie mocy Data.List zarówno dla,
isInfixOf
jak i dlapermutations
.źródło
R , 103 bajty
Wypróbuj online!
Zwraca
TRUE
za prawdę iNA
falsey.źródło
APL (Dyalog) , 18 bajtów
Wypróbuj online!
źródło
MATL, 10 bajtów
Wypróbuj na MATL Online
źródło