Biorąc pod uwagę listę unikatowych ciągów, które są wzajemnie anagramami, wypisz anagram tych słów, który różni się od każdego słowa na liście.
Ciągi będą alfanumeryczne i na pewno będzie prawidłowy anagram.
Program lub funkcja może, ale nie musi być niedeterministyczna, co oznacza, że przy tym samym wejściu wielokrotne uruchomienie kodu może dawać różne dane wyjściowe, o ile każde możliwe wyjście jest prawidłowe.
Przypadki testowe
[Input] -> Possible output
-----------------
[ab] -> ba
[aba, aab] -> baa
[123, 132, 231, 312, 321] -> 213
[hq999, 9h9q9, 9qh99] -> 999hq
[abcde123, ab3e1cd2, 321edbac, bcda1e23] -> ba213ecd
code-golf
string
permutations
Łagodnie Milquetoast
źródło
źródło
itertools
kiedykolwiek odpowiedź?f=\
nagłówek Wypróbuj online i pozostawić funkcję anonimową, nie wpływając na automatyczny licznik bajtów TiO05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Pyth , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka , 6 bajtów
Wypróbuj online!
1 bajt więcej niż 05AB1E i odpowiedź Pyth.
Wyjaśnienie:
Wybrałem,
X
ponieważ jest to najkrótszy znany mi sposób na wybranie dowolnego elementu z listy bez zmiany listy (Ḣ
iṪ
nie działa,ḷ/
iṛ/
jest dłuższy), a czasami powoduje losowość.µ
Tutaj jest całkiem zbędne, ale bez niejḢ
byłoby połączone zḟ
, i to jest interpretowane jako „odfiltrować szefa wejścia”, co nie jest, co muszę tu (co jest mi potrzebne „filtr na wejściu, i zdobądź głowę ”).źródło
JavaScript, 118 bajtów
używa złego randomizatora do iteracji po każdej „losowej” permutacji.
Prawdopodobnie źle, ale afaik zły randomizer oznacza po prostu, że nie otrzymamy prawdziwej przypadkowości, ale nadal otrzymamy każdą permutację.
Wydaje mi się, że działa we wszystkich przypadkach w chrome dla mnie, ale najwyraźniej z powodu nieokreślonego zachowania w tego rodzaju nadużyciach, nie może działać w niektórych przeglądarkach.
(Prawdopodobnie bardzo nierozpoznany nie krępuje się ulepszać go we własnych rozwiązaniach)
80 bajtów
Dzięki komentarzowi pirateBay - dużo bajtów
-4 bajty dzięki Rickowi
źródło
a=>b
zamiastfunction(a){return b}
). Oszczędza to wiele bajtów.s.split("")
może być[...s]
.join("")
Można również dołączyć (dołącz)sort
funkcja nigdy nie zwraca0
(lub przynajmniej wyjątkowo rzadko), dlatego nie działała.Haskell , 58 bajtów
-1 bajt i poprawka dzięki Laikoni.
Wypróbuj online!
Prawdopodobnie nie warto importować
Data.List
dla permutacji, ale eh.źródło
notElem
. Byłbym zaskoczony, gdyby ktoś znalazł funkcję permutacji, która pokonuje import, moje najkrótsze podejście to 60 bajtów w porównaniu z 29 bajtami importu.$
wcześniej go nie byłol!!0
.Rubinowy , 46 bajtów
Wypróbuj online!
źródło
Brachylog , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Mathematica, 57 bajtów
niedeterministyczny
Wypróbuj online!
Mathematica, 56 bajtów
deterministyczny
Wypróbuj online!
źródło
Japt ,
76 bajtów-1 bajt dzięki @Shaggy
Wypróbuj online!
Pobiera ciągi wejściowe jako kilka danych wejściowych zamiast jako tablicę. Wyprowadza losową permutację; przełącz się
ö
na,g
aby otrzymać pierwszy.Wyjaśnienie
źródło
á kN ö
.MATL ,
15,13, 12 bajtówWypróbuj online!
Zaoszczędzono 2 bajty dzięki Sanchises.
setdiff(...,'rows')
jest krótszy niż negowanieismember(...,'rows')
i pozwala uniknąć jednego powielania. Zaoszczędził kolejny bajt dzięki Luisowi Mendo, przełączając się na komórki zamiast na tablice.Wyjaśnienie:
Uwzględniono również odpowiedniki MATLAB / Octave.
Dane wejściowe muszą mieć jeden format
{'abc', 'acb'}
.źródło
Python 3 , 78 bajtów
Wypróbuj online!
-1 bajt dzięki Mr. Xcoder
źródło
if x not in a
jestif~-(x in a)
za 17878
, prawda?Pip , 11 bajtów
Pobiera dane wejściowe jako argumenty wiersza polecenia. Wypróbuj online!
Wyjaśnienie
źródło
Python 3 , 87 bajtów
Uważam, że jest to jedyne jak dotąd zgłoszenie, które nie wykorzystuje ani wbudowanej permutacji, ani losowego losowania / sortowania. Mimo że jest dłuższy, algorytm jest całkiem fajny.
Wypróbuj online!
Wyjaśnienie
To, co robimy, to w zasadzie:
Oto dowód, że to działa:
Kod iteruje
front(S)
dla każdegoS
wL
i wybieraS'
, które nie jestL
. Na podstawie powyższego wyniku będzie co najmniej jeden,S'
który się kwalifikuje.źródło
C # (interaktywny kompilator Visual C #) ,
11696 bajtówMoje umiejętności gry w golfa na pewno poprawiły się od czasu, gdy opublikowałem to po raz pierwszy!
Wypróbuj online!
źródło
JavaScript (ES7), 172 bajty
Znajdź pierwszą permutację leksykograficzną pierwszego elementu tablicy, który nie jest zawarty w tablicy.
źródło
Kotlin , 104 bajty
Upiększony
Test
źródło
C ++, 169 bajtów
Wypróbuj online!
źródło
Scala, 50 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
R, 89 bajtów
Wielokrotnie próbkuj litery z pierwszego wpisu (tak jak powinny być one wzajemnymi anagramami) i zatrzymaj się, gdy jedna z tych próbek nie będzie na oryginalnej liście.
źródło
Łuska , 6 bajtów
Wypróbuj online!
źródło
PHP , 70 bajtów
Uruchom na serwerze WWW, wpisując 0 zindeksowanych wartości lub Wypróbuj online!
Nie golfił
źródło
do{...}while($j);
zamiast$j=1;while($j){...}
. Użyj definicji w miejscu,$g
aby pozbyć się nawiasów klamrowych (i zapisz cztery bajty).PHP,
5855 bajtówniedeterministyczny; pobiera dane wejściowe z argumentów wiersza poleceń
Uruchom ze
php -r <code>
słowami oddzielonymi spacjami lub wypróbuj online .źródło
Attache , 16 bajtów
Wypróbuj online!
Wyjaśnienie
Alternatywy
17 bajtów :
{&\S! !S@_[0]Ø_}
18 bajtów :
{&\S! !Id@_[0]Ø_}
19 bajtów :
{&\S!(!Id)@_[0]Ø_}
26 bajtów :
{&\S!Permutations@_[0]Ø_}
26 bajtów :
{&\S!Permutations[_@0]Ø_}
26 bajtów :
{(Permutations[_@0]Ø_)@0}
26 bajtów :
&\S##~`Ø#Permutations@&\S
27 bajtów :
Last@{Permutations[_@0]Ø_}
27 bajtów :
`@&0@{Permutations[_@0]Ø_}
28 bajtów :
Last##~`Ø#Permutations@&{_}
28 bajtów :
Last##~`Ø#Permutations@Last
28 bajtów :
First@{Permutations[_@0]Ø_}
30 bajtów :
{NestWhile[Shuffle,`in&_,_@0]}
33 bajty :
{If[(q.=Shuffle[_@0])in _,$@_,q]}
33 bajty :
{q.=Shuffle[_@0]If[q in _,$@_,q]}
34 bajty :
{If[Has[_,q.=Shuffle[_@0]],$@_,q]}
źródło
J , 25 bajtów
Dane wejściowe to lista ciągów w ramkach - czułem, że było to sprawiedliwe i nie deklarowałem jawnie list ciągów jako 4 8 $ „abcde123”, „ab3e1cd2”, „321edbac”, „bcda1e23”.
Nie podoba mi się @ bałagan w moim kodzie, ale tym razem jest wiele serializowanych czasowników.
Jak to działa:
Wypróbuj online!
źródło
{.@(-.~i.@!@#@{.A.{.)
. Wypróbuj online!05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie
Prawie ta sama odpowiedź, którą znalazła @ThePirateBay.
źródło
JavaScript, 87 bajtów
Wypróbuj online!
Ta odpowiedź jest (choć mocno zmodyfikowana) odpowiedzią Imme . W komentarzu zasugerował, że powinna to być inna odpowiedź.
Problem ze starym podejściem polega na tym, że
sort
jest całkowicie zależny od implementacji. Standard nie gwarantuje kolejności wywoływania funkcji sortowania, dlatego teoretycznie może się nigdy nie skończyć dla pierwszego lub drugiego przypadku testowego.Takie podejście jest o kilka bajtów dłuższe, ale gwarantuje, że zakończy się w ograniczonym czasie, nawet jeśli
Math.random
nigdy nie powróci.5
.źródło
CJam , 11 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Perl 6 , 42 bajtów
Wypróbuj online!
Losowo tasuje pierwszy ciąg danych wejściowych, dopóki nie będzie on elementem danych wejściowych.
Wyjaśnienie:
źródło