Optimalisasi umum untuk menghemat ruang dalam biner adalah menggabungkan string literal di mana satu literal adalah akhiran dari yang lain. Misalnya, biner dengan string literal
a: foobar
b: bar
c: barbaz
d: foobarbaz
e: baz
mungkin berisi kumpulan string literal berikut ( #
mewakili \0
-terminator):
foobar#foobarbaz#
dengan simbol-simbol a
, b
, c
, dan d
memiliki nilai berikut relatif terhadap awal kolam tali:
a: 0
b: 3
c: 10
d: 7
e: 13
Dalam tugas ini, Anda harus menghitung ukuran minimal kumpulan string untuk serangkaian string input yang diberikan.
Memasukkan
Input adalah serangkaian hingga 999 string yang masing-masing terdiri hingga 80 karakter ASCII (tidak termasuk baris baru) dalam kisaran dari 32 hingga 127 inklusif dan kemudian satu karakter baris baru.
Keluaran
Temukan string terpendek sedemikian rupa sehingga masing-masing string input (termasuk baris yang mengakhiri) adalah substring dari string itu. Outputnya harus sepanjang string terpendek itu. Jangan mengeluarkan string, hanya panjangnya.
Mencetak gol
Tantangan ini adalah kode golf, berlaku celah standar. Solusi dengan panjang paling sedikit dalam oktet menang.
Contohnya
Memasukkan:
foobar bar barbaz foobarbaz baz
string terpendek,
#
mewakili baris baru:foobar#foobarbaz#
panjangnya: 17
Memasukkan:
foobar foobaz foobarbaz barbaz
string terpendek,
#
mewakili baris baru:foobar#foobaz#foobarbaz#
panjangnya: 24
Jawaban:
Pyth,
2018 byteDemonstrasi.
{
dapat dihapus jika duplikat tidak diizinkan.Penjelasan:
sumber
CJam, 22 byte
Cobalah online.
Bagaimana itu bekerja
sumber
python 2, 132
Hanya untuk memulai balapan:
Berhasil:
sumber
Haskell,
10185 byteFungsi tanpa nama. Contoh penggunaan:
Cara kerjanya: pisahkan string input di baris baru. Hapus duplikat dari daftar kata
l
. Simpan katax
dari daftar yang tersisa jika tidak ada dalam daftar semua ekor kata-katal
. Gabungx
dengan baris baru di antara (dan di akhir!) Ke satu string dan hitung panjangnya.sumber