Palindrome adalah kata yang kebalikannya sendiri.
Sekarang ada beberapa kata yang mungkin terlihat seperti palindrom tetapi tidak. Misalnya menganggap kata sheesh
, sheesh
bukan palindrom karena kebalikannya hseehs
yang berbeda, namun jika kita anggap sh
sebagai satu huruf, maka kebalikannya sheesh
. Kata semacam ini akan kita sebut semi palindrome.
Secara khusus sebuah kata adalah semi-palindrome jika kita dapat membagi kata menjadi beberapa bilangan sehingga ketika urutan bongkahan dibalik, kata aslinya terbentuk. (Untuk sheesh
potongan-potongan itu sh e e sh
) Kami juga tidak akan memerlukan potongan berisi huruf dari kedua bagian kata (jika tidak setiap kata akan menjadi semi-palindrome). Misalnya rear
bukan semi palindrome karena r ea r
memiliki chunk ( ea
) yang berisi huruf dari kedua sisi kata aslinya. Kami menganggap karakter sentral dalam kata panjang ganjil berada di kedua sisi kata, sehingga untuk kata-kata dengan panjang ganjil karakter pusat harus selalu dalam potongan itu sendiri.
Tugas Anda adalah mengambil daftar bilangan bulat positif dan menentukan apakah itu semi palindrom. Kode Anda harus menampilkan dua nilai tidak konsisten yang konsisten, satu jika inputnya semi-palindrome dan lainnya sebaliknya. Namun urutan byte dari kode Anda harus semi-palindrome itu sendiri.
Jawaban akan dinilai dalam byte dengan lebih sedikit byte menjadi lebih baik.
Kasus uji
[] -> True
[1] -> True
[2,1,2] -> True
[3,4,2,2,3,4] -> True
[3,5,1,3,5] -> True
[1,2,3,1] -> False
[1,2,3,3,4,1] -> False
[11,44,1,1] -> False
[1,3,2,4,1,2,3] -> False
Program untuk menghasilkan lebih banyak testcases.
Borrible menunjukkan bahwa ini mirip dengan palindrom Smarandache umum . Jadi, jika Anda ingin membaca lebih lanjut, itu adalah satu tempat untuk memulai.
sumber
Jawaban:
Retina 0.8.2 ,
8569 byteCobalah online! Penjelasan:
Memilih mode Kecocokan. Bahkan, Retina default ke mode Match untuk program single-line, tetapi salinan kode kedua akan selalu cocok jika bukan karena karakter tambahan ini.
Pertandingan harus dimulai dari awal.
Abadikan sejumlah run karakter. Setiap proses harus diakhiri dengan koma.
Secara opsional cocok dengan angka dan koma.
Secara opsional mencocokkan semua tangkapan dalam urutan terbalik, muncul masing-masing saat cocok.
Pertandingan harus berakhir di akhir.
Mundur kecuali jika semua tangkapan muncul. Ini berfungsi dengan mengharuskan pertandingan tetap berada di awal string jika kita memiliki tangkapan yang tidak dijatuhkan, yang tidak mungkin.
sumber
Jelly ,
2723 byteMengembalikan 1 untuk semi-palindrom, 0 sebaliknya.
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2 ,
157153147143 byte-4 byte terima kasih kepada tsh .
Cobalah online!
sumber
x==x[::-1]
untuklen(x)<2
menghemat 2 * 2 byte; 143 byte05AB1E ,
59474341 byte-12 byte terima kasih kepada @Emigna .
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
2ä
øøε.œ} `, menghemat 6 byte. Anda juga tampaknya telah meninggalkan 30 byte yang tidak terpakai di ...€
bukanε }
. :)05AB1E , 37 byte
Memanfaatkan teknik yang kira-kira sama dengan Jonathan .
Cobalah online!
Program lengkap. Menerima daftar dari STDIN, keluaran 1 atau 0 hingga STDOUT.
Saring-pertahankan partisi yang memuaskan ...
Kondisi ini: Panjang masing-masing (
€g
) disimpan dalam daftar, yang awalannya (η
) kemudian dijumlahkan (O
), sehingga memberi kami jumlah kumulatif dari daftar panjang. Kemudian, setengah dari batas maksimum dari daftar itu didorong ke tumpukan - tetapi menyimpan daftar asli juga (Z;î
) dan jika itu terjadi (å
) dalam jumlah kumulatif maka fungsi mengembalikan kebenaran.Untuk masing-masing, membandingkan (
Q
) a dengan sebuah terbalik, yang didorong secara terpisah pada stack olehÂ
. Mengembalikan daftar 0 s dan 1 s.Maksimum. Jika ada yang benar, maka 1 lainnya 0 . Akhiri eksekusi. Segala sesuatu yang mengikuti ini sepenuhnya diabaikan.
sumber
Python 2 ,
275251205 byte-24 byte terima kasih kepada @KevinCruijssen
-44 byte terima kasih kepada @PostLeftGhostHunter
-2 byte lebih banyak berkat @KevinCruijssen
Returns True untuk semi-palindrome, Tidak ada sebaliknya
Cobalah online!
sumber
Jelly ,
3332 byte-1 Terima kasih kepada Erik the Outgolfer
Terima kasih juga kepada Dennis untuk perbaikan bug dan melihat untuk mengubah detail implementasi di Jelly.
Semi-palindrom menghasilkan
1
, yang lain menghasilkan0
.Atau lihat test-suite .
Satu-satunya potongan adalah byte
ŒḂ
s ({3 rd & 4 th } vs {29 th & 30 th }), hanya untuk memungkinkan kode diurai.Bagaimana?
Semua pekerjaan dilakukan oleh sisi kanan - "Tautan Utama":
sumber
Perl 6 ,
8779 byte-8 Bytes dengan beberapa trik dari jawaban Jo King
Cobalah online!
Port jawaban JavaScript tsh. Mengembalikan dua objek Regex yang berbeda.
sumber
Ruby , 129 byte
Cobalah online!
sumber
JavaScript (Node.js) , 139 byte
Cobalah online!
sumber
C (gcc) (X86), 216 byte
Cobalah online!
p(L,a,n)
mengembalikan 0 jikaa
panjang arrayL
adalah semi-palindrome, 1 sebaliknya. Karena semua awalan panjang>n
sudah diperiksa, ia membandingkan awalan panjangn
dengan akhiran panjangn
.p(L,a)
adalah titik masuknya.Sayangnya, solusi yang lebih menarik lebih lama:
224 byte
Cobalah online!
Tidak Disatukan:
sumber
Japt , 66 byte
Japt Interpreter
Peningkatan besar versi ini, sebenarnya mengalahkan sebagian besar bahasa praktis sekarang. Sekarang beroperasi pada array bilangan bulat karena metode sebelumnya memiliki bug.
Penjelasan:
sumber
PHP 237 byte
fungsi rekursif, mengembalikan
true
(untuk input yang mengandung kurang dari dua elemen) atau1
untuk kebenaran,0
untuk kepalsuan. Cobalah secara online (mengandung kerusakan).Panjang kode aktual adalah 118 byte; semi-palindrome dibuat melalui duplikasi kode.
Untuk kinerja yang lebih baik, ganti
&
dengan&&
dan masukkan!$x&&
sebelumnya++$i
.sumber
Scala, 252 byte
Cobalah online!
PS. Rupanya, solusinya 2 kali lebih lama hanya untuk memenuhi persyaratan bahwa kode sumber juga semi palindrome.
PPS. Bukan kandidat kode-golf tetapi solusi murni fungsional menggunakan pencocokan pola:
sumber
Perl 6 , 81 byte
Cobalah online!
Mengembalikan regex
/../
untuk True dan regex/^(.+)(.*)$0$/
untuk False. Bekerja mirip dengan jawaban nwellnhof , tetapi mengonversi daftar menjadi string sebelumnya.sumber