Diberikan daftar string unik yang merupakan anagram satu sama lain, menghasilkan anagram kata-kata yang berbeda dari setiap kata dalam daftar.
String akan berupa alfanumerik, dan dijamin ada anagram yang valid.
Program atau fungsi dapat, tetapi tidak harus non-deterministik, artinya diberi input yang sama, beberapa menjalankan kode dapat menghasilkan output yang berbeda, selama setiap kemungkinan output adalah yang valid.
Uji Kasus
[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
MildlyMilquetoast
sumber
sumber
itertools
pernah jawabannya?f=\
tajuk Try it Online dan meninggalkan fungsi anonim, tanpa memengaruhi penghitung byte TiO otomatis05AB1E , 5 byte
Cobalah online!
Penjelasan
sumber
Pyth , 5 byte
Cobalah online!
Penjelasan
sumber
Jelly , 6 byte
Cobalah online!
1 byte lebih dari jawaban 05AB1E dan Pyth.
Penjelasan:
Saya memilih
X
karena ini adalah cara terpendek yang saya tahu untuk memilih elemen apa pun dari daftar tanpa mengubah daftar (Ḣ
danṪ
tidak berfungsi,ḷ/
danṛ/
lebih lama), dan itu menyebabkan beberapa keacakan.Di
µ
sini cukup berlebihan, tetapi tanpa itu,Ḣ
akan dipasangkan denganḟ
, dan ditafsirkan sebagai "menyaring kepala input", yang bukan apa yang saya butuhkan di sini (apa yang saya butuhkan adalah "menyaring input, dan dapatkan kepala ").sumber
Javascript, 118 Bytes
menggunakan pengacak buruk untuk mengulangi setiap permutasi "acak".
Mungkin terbukti salah tetapi afaik randomizer buruk hanya berarti kita tidak akan mendapatkan keacakan yang sebenarnya, tetapi masih akan mendapatkan setiap permutasi.
Tampaknya berfungsi pada semua case di chrome untuk saya tetapi tampaknya karena perilaku yang tidak terdefinisi dalam penyalahgunaan semacam ini, itu tidak dapat bekerja di beberapa browser.
(Mungkin sangat ungolfed merasa bebas untuk memperbaikinya dalam solusi Anda sendiri)
80 byte
Berkat komentar bajak laut eBay -banyak byte
-4 byte terima kasih kepada Rick
sumber
a=>b
bukanfunction(a){return b}
). Menghemat banyak byte.s.split("")
bisa[...s]
. Jugajoin("")
bisa `join```sort
fungsi Anda tidak pernah kembali0
(atau setidaknya sangat jarang), itu sebabnya tidak berfungsi.Haskell , 58 byte
-1 byte dan perbaikan terima kasih kepada Laikoni.
Cobalah online!
Mungkin tidak layak mengimpor
Data.List
permutasi tetapi eh.sumber
notElem
. saya akan terkejut jika seseorang menemukan fungsi permutasi yang mengalahkan impor, pendekatan terpendek saya adalah 60 byte vs 29 byte impor.$
sebelumnya tidak adal!!0
.Ruby , 46 byte
Cobalah online!
sumber
Brachylog , 7 byte
Cobalah online!
Penjelasan
sumber
Mathematica, 57 byte
non-deterministik
Cobalah online!
Mathematica, 56 byte
deterministik
Cobalah online!
sumber
Japt ,
76 byte-1 byte terima kasih kepada @Shaggy
Cobalah online!
Mengambil string input sebagai beberapa input, bukan sebagai array. Menghasilkan permutasi acak; beralih
ö
keg
untuk mendapatkan yang pertama sebagai gantinya.Penjelasan
sumber
á kN ö
.MATL ,
15,13, 12 byteCobalah online!
Disimpan 2 byte berkat Sanchises.
setdiff(...,'rows')
lebih pendek daripada meniadakanismember(...,'rows')
dan menghindari satu duplikasi. Menyimpan byte lain berkat Luis Mendo, dengan beralih ke sel alih-alih array.Penjelasan:
Setara MATLAB / Oktaf juga disertakan.
Input harus satu format
{'abc', 'acb'}
.sumber
Python 3 , 78 byte
Cobalah online!
-1 byte terima kasih kepada Tn. Xcoder
sumber
if x not in a
adalahif~-(x in a)
untuk 17878
benar?Pip , 11 byte
Mengambil input sebagai argumen baris perintah. Cobalah online!
Penjelasan
sumber
Python 3 , 87 byte
Saya percaya ini adalah satu - satunya pengajuan sejauh ini yang tidak menggunakan permutasi bawaan atau acak acak / semacam. Meskipun lebih lama, saya pikir algoritma ini cukup rapi.
Cobalah online!
Penjelasan
Apa yang kami lakukan pada dasarnya adalah ini:
Inilah bukti bahwa itu bekerja:
Kode berulang
front(S)
untuk masing-masingS
dalamL
dan memilihS'
mana yang tidak adaL
. Dengan hasil di atas, akan ada setidaknya satuS'
yang memenuhi syarat.sumber
C # (Visual C # Interactive Compiler) ,
11696 byteKeterampilan bermain golf saya tentu saja menjadi lebih baik sejak saya pertama kali memposting ini!
Cobalah online!
sumber
JavaScript (ES7), 172 byte
Temukan permutasi leksikografis pertama dari elemen pertama array yang tidak terkandung dalam array.
sumber
Kotlin , 104 byte
Yg diperindahkan
Uji
sumber
C ++, 169 byte
Cobalah online!
sumber
Scala, 50 byte
Cobalah online!
Penjelasan
sumber
R, 89 byte
Contoh surat berulang-ulang dari entri pertama (karena harus menjadi anagram satu sama lain) dan berhenti ketika salah satu dari sampel tersebut tidak ada dalam daftar asli.
sumber
Sekam , 6 byte
Cobalah online!
sumber
PHP , 70 byte
Jalankan di server web, masukkan 0 nilai getar yang diindeks atau Coba online!
Tidak disatukan
sumber
do{...}while($j);
sebagai gantinya$j=1;while($j){...}
. Gunakan definisi in-place untuk$g
menyingkirkan kawat gigi (dan simpan empat byte).PHP,
5855 bytenon-deterministik; mengambil input dari argumen baris perintah
Jalankan dengan
php -r <code>
diikuti oleh kata-kata yang dipisahkan ruang atau coba online .sumber
Attache , 16 byte
Cobalah online!
Penjelasan
Alternatif
17 byte :
{&\S! !S@_[0]Ø_}
18 byte :
{&\S! !Id@_[0]Ø_}
19 byte :
{&\S!(!Id)@_[0]Ø_}
26 byte :
{&\S!Permutations@_[0]Ø_}
26 byte :
{&\S!Permutations[_@0]Ø_}
26 byte :
{(Permutations[_@0]Ø_)@0}
26 byte :
&\S##~`Ø#Permutations@&\S
27 byte :
Last@{Permutations[_@0]Ø_}
27 byte :
`@&0@{Permutations[_@0]Ø_}
28 byte :
Last##~`Ø#Permutations@&{_}
28 byte :
Last##~`Ø#Permutations@Last
28 byte :
First@{Permutations[_@0]Ø_}
30 byte :
{NestWhile[Shuffle,`in&_,_@0]}
33 byte :
{If[(q.=Shuffle[_@0])in _,$@_,q]}
33 byte :
{q.=Shuffle[_@0]If[q in _,$@_,q]}
34 byte :
{If[Has[_,q.=Shuffle[_@0]],$@_,q]}
sumber
J , 25 byte
Inputnya adalah daftar string kotak - Saya merasa adil seperti ini dan tidak menyatakan daftar string secara eksplisit sebagai $ 8 $ 'abcde123', 'ab3e1cd2', '321edbac', 'bcda1e23'.
Saya tidak suka @ mess dalam kode saya, tetapi ada banyak kata kerja berseri saat ini.
Bagaimana itu bekerja:
Cobalah online!
sumber
{.@(-.~i.@!@#@{.A.{.)
. Cobalah online!05AB1E , 5 byte
Cobalah online!
Penjelasan
Hampir sama dengan jawaban yang ditemukan oleh @ThePirateBay.
sumber
JavaScript, 87 byte
Cobalah online!
Jawaban ini didasarkan (walaupun sangat dimodifikasi) pada jawaban Imme . Dia menyarankan dalam komentar bahwa ini harus menjadi jawaban yang berbeda.
Masalah dengan pendekatan lama adalah karena
sort
sepenuhnya tergantung pada implementasi. Standar tidak menjamin urutan pemanggilan fungsi sortir, oleh karena itu secara teoritis mungkin tidak pernah berakhir untuk kasus uji pertama atau kedua.Pendekatan ini beberapa byte lebih lama, tetapi itu menjamin bahwa itu akan selesai dalam waktu terbatas, bahkan jika
Math.random
tidak pernah kembali.5
.sumber
CJam , 11 byte
Cobalah online!
Penjelasan
sumber
Perl 6 , 42 byte
Cobalah online!
Acak acak string pertama input hingga bukan merupakan elemen input.
Penjelasan:
sumber