Pertanyaan ini sangat didasarkan pada pertanyaan ini , tetapi harus menimbulkan sejumlah kesulitan tambahan.
Tugas Anda
Anda harus menulis sebuah program atau fungsi yang, saat menerima sebuah string, mencetak semua anagram yang mungkin darinya. Untuk keperluan pertanyaan ini, anagram adalah string yang berisi karakter yang sama dengan string asli, tetapi bukan string asli. Subanagram adalah anagram substring dari string yang dimasukkan. Anagram dan sub-diagram tidak harus atau mengandung kata-kata aktual.
Memasukkan
Anda dapat menerima string, yang panjangnya> 0, dengan metode input standar apa pun. Ini mungkin mengandung karakter ASCII.
Keluaran
Anda dapat menampilkan semua anagram dan sub-diagram yang mungkin dari string yang dimasukkan dengan cara standar apa pun. Anda tidak boleh mengeluarkan string yang sama dua kali, atau menghasilkan string yang sama dengan input.
Peraturan Lainnya
Celah Standar tidak diizinkan
Mencetak gol
Ini adalah kode-golf , paling tidak byte menang.
sumber
Jawaban:
05AB1E , 7 byte
Fungsi yang menerima string dari input dan meninggalkan daftar string pada stack. Sebagai program lengkap, representasi daftar dicetak.
Cobalah online!
Bagaimana?
sumber
Brachylog (2), 7 byte
Cobalah online!
Penjelasan
sumber
(v2)
.Jelly , 9 byte
Tautan monadik yang menerima daftar dan mengembalikan daftar semua sub-anagram yang berbeda kecuali input itu sendiri.
Cobalah online! (footer cukup mencetak daftar yang dihasilkan dengan bergabung dengan baris baru.)
Bagaimana?
sumber
Pyth, 12
Tes online .
sumber
Japt , 10 byte
Cobalah online!
Saya harus menggunakan
à
,á
danâ
semuanya dalam satu jawaban, juga. Kebetulan sekali...Penjelasan
sumber
Mathematica, 60 byte
Permutations
mengambil argumen numerik opsional yang menunjukkan berapa banyak nilai input yang digunakan untuk permutasi. Jika kami memberikan panjang input, itu akan menghasilkan permutasi untuk semua himpunan bagian dari input tanpa duplikat. Yang perlu kita lakukan adalah menghapus input.sumber
Java 8,
313312306 byteVersi modifikasi dari jawaban saya di sini , di mana
p("",s,l);
telah diganti denganfor(int z=s.length(),i=0,j;i<z;i++)for(j=i;j<z;p("",s.substring(i,j+++1),l));
-6 byte terima kasih kepada @ OlivierGrégoire dalam jawaban tertaut saya.
Penjelasan bagian ini:
Coba di sini.
sumber
Perl 6 , 75 byte
Cobalah
Diperluas:
sumber