Mengingat string l
, menemukan semua substring palindromic p
dari l
(termasuk duplikat dan string karakter tunggal). Selanjutnya, atur ulang semua sub-string p
menjadi palindrome yang valid (mungkin ada beberapa jawaban yang benar). Jika tidak mungkin untuk mengatur ulang p
menjadi satu palindrom tunggal, program Anda mungkin memiliki perilaku yang tidak terdefinisi (kesalahan, stack-overflow, keluar, menggantung / pembunuhan John Dvorak, dll ...)
Contohnya
Kasus Uji yang valid
l = anaa
p = ['a', 'n', 'a', 'a', 'aa', 'ana']
result = anaaaaana or aanaaanaa or aaananaaa
l = 1213235
p = ['1', '2', '1', '3', '2', '3', '5', '121', '323']
result = 1213235323121
l = racecar
p = ['r', 'a', 'c', 'e', 'c', 'a', 'r', 'cec', 'aceca', 'racecar']
result = racecarcecaacecracecar (there are others)
l = 11233
p = ['1', '11', '1', '2', '3', '33', '3']
result = 113323311 or 331121133
l = abbccdd
p = ['a', 'b', 'bb', 'b', 'c', 'cc', 'c', 'd', 'dd', 'd']
result = bbccddaddccbb or ccbbddaddbbcc or (etc...)
l = a
p = ['a']
result = a
Kasus Uji Tidak Valid (Tidak Mungkin)
l = 123456789
p = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
result = <not possible, behavior undefined>
l = hjjkl
p = ['h', 'j', 'jj', 'j', 'k', 'l']
result = <not possible, behavior undefined>
l = xjmjj
p = ['x', 'j', 'jmj', 'm', 'j', 'jj', 'j']
result = <not possible, behavior undefined>
Aturan
- Jika kata input adalah palindrome itu sendiri, itu akan selalu berlaku sebagai input.
- Hanya satu substring yang harus dikembalikan, mana yang Anda pilih sewenang-wenang asalkan valid.
- Jika input tidak memiliki output yang layak, kode Anda mungkin memiliki perilaku yang tidak terdefinisi.
- Input hanya akan berisi karakter ASCII-Printable
0x20-0x7E
. - Ini adalah kode-golf , byte-count terendah adalah pemenangnya.
code-golf
array-manipulation
permutations
palindrome
Guci Gurita Ajaib
sumber
sumber
"abbccdd"
adalah salah: dua huruf terakhir seharusnya"bb"
, bukan"dd"
.Jawaban:
Brachylog , 10 byte
Cobalah online!
Gagal (yaitu mencetak
false.
) jika tidak memungkinkan.Penjelasan
sumber
Kelapa , 140 byte
Cobalah online!
sumber
JavaScript (ES6), 193 byte
"Dengar, Ma, tidak ada permutasi yang terpasang!" (Jadi ya ... itu panjang ...)
Mengembalikan array kosong jika tidak ada solusi.
Demo
Tampilkan cuplikan kode
Bagaimana?
Mari kita membagi kode menjadi bagian-bagian yang lebih kecil.
Kami mendefinisikan P () , fungsi yang mengembalikan s jika s adalah palindrome, atau false sebaliknya.
Kami menghitung semua substring dari string input s . Menggunakan P () , kami mengisolasi palindrom non-kosong dan menyimpannya dalam array a .
Utama rekursif fungsi f () mengambil sebuah sebagai masukan dan menghitung semua permutasi nya. Itu update S setiap kali permutasi itu sendiri adalah palindrom (pernah bergabung), dan akhirnya mengembalikan nilai akhir dari S .
sumber
Jelly , 13 byte
Cobalah online!
Mencetak
0
dalam case yang tidak valid.sumber
05AB1E ,
1312 byteCobalah online!
-1 byte, terima kasih untuk Magic Octopus Mm dan Enigma.
sumber
J
secara otomatis faktorisasi sehingga Anda tidak perlu€J
hanyaJ
; juga, Anda seharusnya mengembalikan salah satu palindrom, tidak semua. Cobalah online! berlaku untuk byte-count yang sama.Ùć
bisa jadi¤
(atau sejumlah opsi lain)Ù
tidak diperlukan.Stax , 13 byte
Jalankan test case (Diperlukan sekitar 10 detik pada mesin saya saat ini)
Ini adalah representasi ascii yang sesuai dari program yang sama.
Ini bukan brute-force murni , tapi hanya sekecil implementasi brute-force yang saya tulis. Yang itu crash browser saya setelah sekitar 10 menit. Bagaimanapun, ini cara kerjanya.
sumber
Ruby ,
131123120 byteCobalah online!
Lambda menerima string dan mengembalikan string. Kembali
nil
ketika tidak ada solusi.-5 byte: Ganti
select{|t|l[t]}
denganselect(&l)
-3 byte: Ganti
map{..}.flatten
denganflat_map{...}
-1 byte: Ulangi panjang substring dan mulai substring, alih-alih mulai substring dan akhir substring
-2 byte: Deklarasikan
z
pada penggunaan pertama dan bukan sebelumnyasumber
Pyth , 13 byte
Cobalah online!
-1 byte terima kasih kepada Tn. Xcoder
sumber
h_I#sM.p_I#.:
ataue_IDsM.p_I#.:
selama 13 byte.Python 3 , 167 byte
Cobalah online!
-2 byte terima kasih kepada Tn. Xcoder
sumber
a[i:j+1]
jika Anda kemudian menggunakanfor j in range(i,len(a))
, untuk -2 byte.Japt , 19 byte
Terhambat oleh Japt belum (belum) bisa mendapatkan semua substring dari string (dan sebagian lagi oleh tingkat kelelahan saya saat ini!).
Keluaran
undefined
jika tidak ada solusi.Cobalah
Penjelasan
sumber
¬
dari jawaban Anda: P?m¬
tapi kemudian aku akan membutuhkannyaæ_¬êQ
sehingga tidak akan menyimpan byte apa pun!Sekam , 12 byte
Cobalah online!
Penjelasan
sumber
J , 53 byte
Cobalah online!
sumber