Twoim zadaniem jest posortowanie łańcucha, ale zamiast normalnej kolejności alfabetycznej (abc..xyz), sortujesz łańcuchy według określonego alfabetu.
Musisz napisać program lub funkcję, która pobiera dwa wejścia: alfabet A oraz ciąg S . Oba będą zawierać tylko małe litery angielskie i oba będą zawierać co najmniej jeden znak.
Musisz przesunąć litery w S, aby pierwsza litera pojawiła się pierwsza w A , a następnie dowolna litera pojawiła się druga w A itd. Mogą występować pewne litery w S , które nie pojawiają się w A , należy je pozostawić na końcu i nie poruszały się względem siebie.
Przypadki testowe:
A S Result
axd haxuizzxaxduxha aaaxxxxdhuizzuh
a xyz xyz
abc dcba abcd
il nmiuplliu iillnmupu
asdf qwerty qwerty
Wygrywa najmniej bajtów!
Odpowiedzi:
05AB1E , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Σ²sk>
.R۠
pracuję zgodnie z oczekiwaniami :). Czasami może to działać jako mniejszavy
pętla. Niezła odpowiedź, stary.Python 3 ,
50 47 4644 bajtów-3 bajty dzięki ngn!
-1 bajt dzięki mypetlion
Wypróbuj online!
Pobiera ciąg jako alfabet i listę znaków jako ciąg i sortuje listę na miejscu.
W
%27
gwarantuje, że jeśli postać nie jest w alfabecie, indeks powrócił stawia go po resztę alfabetu.źródło
-a[::-1].find(c)
->(a+c).find(c)
(a+c).find(c)
->a.find(c)%27
aby zaoszczędzić 1 bajtHaskell, 42 bajty
Wypróbuj online!
źródło
Perl 6 ,
5543 bajtówSpróbuj
Spróbuj
Rozszerzony:
źródło
Haskell ,
4034 bajtów-6 bajtów ogromne dzięki Laikoni .
Wypróbuj online!
Pierwsza linia jest wyrażeniem ma dwa argumenty: S i A .
źródło
f=
ponieważ anonimowe funkcje są dozwolone.(<>)
jest teraz w Preludium, więc można go skrócić dofoldr(\c->r(==c)<>r(/=c))
34 bajtów: Wypróbuj online!Stax , 6 bajtów
Uruchom i debuguj
Sortuje według bloku, który to robi.
źródło
Python 2 , 38 bajtów
a musi być łańcuchem, s listą łańcuchów o długości 1. f sortuje s na miejscu.
Wypróbuj online!
Alternatywna wersja, string I / O, 48 bajtów
Wypróbuj online!
Jak to działa
s.sort(None,a[::-1],1)
jest skrótem ods.sort(cmp=None,key=a[::-1],reverse=1)
.Z dokumentów :
źródło
cmp
i wykonanekey
ireverse
słowa kluczowe tylko argumenty, więc jegolist.sort
zajmuje tylko jeden pozycyjnym argumentu.J , 5 bajtów
Czasownik dynastyczny, biorąc alfabet po lewej i ciąg znaków do sortowania po prawej.
i.
znajduje indekty znaków ciągu w alfabecie, długość alfabetu, jeśli nie zostanie znaleziona./:
sortuje lewy agrument zgodnie z kolejnością określoną w prawym.]
argument argumentu (ciąg)Wypróbuj online!
źródło
Python 2 ,
3550 bajtówWypróbuj online!
Bierze
a
is
jak struny; zwraca listę ciągów singeltonów.Uwaga: Ojej! Zyskano 15 bajtów do naprawienia ...
źródło
K (ngn / k) , 9 bajtów
Wypróbuj online!
{
...}
jest funkcją z argumentamix
iy
x?y
znajduje dla każdego elementu wy
indeksie jego pierwszego wystąpienia wx
; jeśli element nie zostanie znalezionyx
, jego indeks jest brany pod uwagę0N
(-2 63 )-
neguje wszystkie indeksy oprócz tego, że zachowuje0N
-s nietknięte, ponieważ 2 63 ≡-2 63 (mod 2 64 )>
zwraca sortowanie malejącey@
indeksujey
z tymźródło
Węgiel drzewny , 13 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
Galaretka , 4 bajty
Dyadyczny link akceptujący ciąg po lewej stronie i alfabet po prawej stronie (jako listy znaków) i zwracający wynik (również jako listę znaków).
Wypróbuj online!
W jaki sposób?
źródło
APL (Dyalog Unicode) , 5 bajtów SBCS
Anonimowa funkcja ukrytego przedrostka, przyjmująca
[string,ordering]
za argument.Wypróbuj online!
…
/
Zmniejsz o następującą funkcję:… A
⍨
mianowicie wersja następującej funkcji z odwróconymi argumentami:⍋
ocenić prawą strunę zgodnie z lewą kolejnością (brakujące litery znajdują się na końcu)⌷
użyj tego, aby indeksować do…⊃
pierwszy element argumentu (tj. ciąg)źródło
JavaScript (SpiderMonkey), 50 bajtów
Pobiera dane wejściowe w składni curry
(a)(s)
, gdzie a jest łańcuchem, a s to tablica znaków. Zwraca tablicę znaków.Wypróbuj online!
W jaki sposób?
Definiujemy funkcję pomocniczą g () jako:
który zwraca:
Sortujemy s [] obliczając g (b) - g (c) dla każdej pary znaków (b, c) przekazanych do wywołania zwrotnego sort () .
Ponieważ implementacja sort () w SpiderMonkey jest stabilna, wszystkie znaki s [] , które nie należą do alfabetu, są po prostu przenoszone na końcu w kolejności pojawiania się i są pozostawione bez zmian, gdy są ze sobą porównywane.
JavaScript (ES6), 61 bajtów
Pobiera dane wejściowe w składni curry
(a)(s)
, gdzie zarówno a i s są tablicami znaków. Zwraca ciąg.Wypróbuj online!
źródło
R ,
69 6258 bajtówWypróbuj online!
Dane wejściowe i wyjściowe są wektorami poszczególnych znaków.
Wyjaśnienie:
źródło
Brain-Flak (BrainHack) , 118 bajtów
Wypróbuj online!
Dane wejściowe to pierwszy ciąg, po nim null, a po nim drugi ciąg. Wersja, która używa separatora jako separatora, zamiast tego dodaje 24 bajty:
Brain-Flak , 142 bajty
Wypróbuj online!
Wyjaśnienie
źródło
C (gcc) , 97 bajtów
Wszystkie białe znaki (spacje i znaki nowej linii) w powyższym kodzie służą wyłącznie do odczytu i powinny zostać usunięte.
Słownik jest przekazywany
D
i ma długośćd
, łańcuch jest przekazywanyS
i ma długośćs
.i
io
należy je pominąć.Wypróbuj online!
źródło
Pyth ,
95 bajtówWypróbuj tutaj!
źródło
Java 8, 98 bajtów
Wypróbuj online.
Wyjaśnienie:
źródło
String.repeat(int)
metodzie Java 11 . Miły! :).repeat(n)
wygląda obiecująco, choć. : DPerl 5 z
-pF
, 43 bajtówWypróbuj online!
źródło
$_=<>;
za darmo?@F
, ale nie dodałem go do nagłówka! Zrobię to teraz! Dziękuję Ci!Prolog (SWI) , 136 bajtów
Wypróbuj online! Przykładowe użycie:
źródło
Czysty , 61 bajtów
Wypróbuj online!
Definiuje funkcję
$ :: [Char] [Char] -> [Char]
.Nic dziwnego, że jest to dosłownie odpowiedź Haskella, ale dłuższa.
źródło
Galaretka , 7 bajtów
Wypróbuj online!
źródło
APL + WIN, 12 bajtów
Monity o wprowadzenie ekranu S, a następnie A:
Wypróbuj online! Dzięki uprzejmości Dyalog Classic
źródło
PynTree , 13 bajtów
Wypróbuj online!
Odpowiedź Port Pythona na króla króla.
Wyjaśnienie
źródło