Hari ini Anda akan melakukan tantangan palindrom lain!
Jadi, tugas Anda hari ini adalah mengambil string, dan menentukan jumlah huruf minimum yang diperlukan untuk memasukkannya menjadi palindrome.
Sebagai contoh, mari kita ambil string fishes
.
Dalam hal ini, case cara terbaik adalah menambahkan h if
, sehingga hasilnya adalah 3.
fishe s
h if
---------
fishehsif
Sekarang mari kita coba codegolf
. Karena ada yang berulang o
, kita bisa melakukan:
codeg o lf
fl ed c
-------------
flcodegedoclf
untuk mendapatkan hasil 5.
Uji kasus
ppcg -> 2
codegolf -> 5
palindrome -> 9
stackexchange -> 8
programmingpuzzlesandcodegolf -> 20
code-golf
string
palindrome
Oliver Ni
sumber
sumber
ppcg
, skor 4 + 2 = 6)Jawaban:
Pyth, 10 byte
test suite.
Ada beberapa penokohan yang setara dari nilai yang kami kejar:
Gagasan umum adalah "kerangka" huruf dalam input yang cocok dengan huruf input dalam produk akhir.
Kerangka ini selalu palindrom, dengan huruf yang cocok dengan rekan-rekan mereka yang terbalik. Setiap huruf non-kerangka tidak cocok dan harus memiliki pasangannya yang dimasukkan.
Alternatif dengan panjang yang sama menggunakan kondisi keempat, panjang input dikurangi panjang palindromik berikutnya.
Tautan ke ruang uji.
Bagian yang berbeda adalah
Untuk keduanya, alih-alih menghapus urutan palindrom dari input dan mengambil panjang, kita bisa mengurangi panjangnya dari panjang input. Salah satu biaya 4 bytes:
-lQl
vsl.-Q
.sumber
Python, 112 byte
Sangat tidak efisien.
Cobalah online!Anda harus menunggu sebentar untuk menyelesaikan kasus terakhir.
Telepon dengan
e(<string>, 0, <length of string - 1>)
, seperti e ("ikan", 0, 5) `.Tidak dikelompokkan (semacam) dengan penjelasan:
sumber
l=0
.05AB1E , 11 byte
Menggunakan pengodean CP-1252 .
Cobalah online! atau sebagai Test suite
Penjelasan
sumber
Brachylog , 9 byte
Cobalah online!
Tantangan ini sangat membutuhkan jawaban Brachylog v2, karena penyisipan palindromisasi sangat intuitif dalam bahasa itu.
Penjelasan
⊆P↔P
benar-benar apa yang dilakukan palindromisasi dengan memasukkan (lihat contoh ini )sumber
C,
89121 bytePelabuhan Oliver yang tak tahu malu jawaban , tidak bisa memikirkan solusi yang lebih pendek.
g
panggilanf
dengan pointer ke char pertama dan terakhir dari string (char terakhir adalah bagian dari string, bukan'\0'
). Mendapat lebih tidak efisien karenaf
dipanggil dua kali untukmin
kasus ini.Tidak Disatukan:
Pemakaian:
sumber
Brachylog v1 , 13 byte
Cobalah online!
Anda dapat memeriksa palindrom yang ditemukannya dengan kode ini .
Penjelasan
Saya hampir terkejut bahkan ini berhasil, melihat betapa sederhananya itu.
Ini dijamin untuk menemukan palindrome terkecil karena
IrI
akan menghasilkan string yang semakin panjang ketika mundur, mulai dari string kosong.Ini tidak cukup efisien untuk menghitung test case terakhir pada TIO, karena penggunaan
s - Ordered subset
.sumber
Batch,
234232 byteBerfungsi secara rekursif mencoba memasukkan karakter yang tidak cocok di kedua ujungnya, jadi sangat lambat (saya tidak mencoba test case terakhir). Batas rekursi berarti bahwa ini hanya berfungsi untuk panjang string yang terbatas, sehingga
99
agak arbitrer. Saya harus menggunakancall
parameter sebagai variabel lokal karena saya tidak bisasetlocal
bekerja untuk saya, yang berarti%1
parameter ke:l
subrutin adalah ekspresi yang mengevaluasi jumlah penyisipan yang dilakukan sejauh ini.sumber