Terinspirasi oleh tantangan yang luar biasa ini (berdasarkan jumlah pandangan dan suara), yang, menurut pendapat saya, memiliki terlalu sedikit jawaban.
Diberikan (dengan cara apa pun) daftar string, kembalikan (dengan cara apa pun) satu set surat yang, ketika dihapus dari string yang diberikan, meninggalkan panjang total (apa yang tersisa dari) string sekecil mungkin, sambil menjaga masing-masing string yang unik dan setidaknya satu karakter.
Contoh:
Diberi "Hari" dan "hari"; kembali "ay", karena string yang diberikan akan menjadi "D" dan "d" ketika karakter "ay" dihapus.
Diberi "Hello World!", "Hello world.", Dan "Hello world"; kembali "Helo Wrd" memberi karena string akan menjadi "!", "w.", dan "w" ketika karakter "Helo Wrd" (dengan spasi) dihapus.
Diberi "abad", "dekade", "tahun", "bulan", "minggu", "hari", "jam", "menit", dan "kedua"; kembalikan "centurdowi" karena kata-kata yang diberikan adalah "y", "a", "ya", "mh", "k", "ay", "h", "m", "s" ketika karakter "centurdowi "dihapus.
Urutan dan format set yang dikembalikan tidak penting.
Jawaban:
Haskell,
138130 byteContoh penggunaan:
f ["century", "decade", "year", "month", "week", "day", "hour", "minute", "second"]
->"centurdoki"
.Ini adalah pendekatan brute force.
Sunting: @Seeq membantu saya menghemat 8 byte. Terima kasih!
sumber
map(#s)
, jadi Anda tidak perlu membaliknotElem
? EDIT: Atau tidak bisakah Anda hanya sebaris itu?map(#s)
,(#)
harus didefinisikan sebagaiflip (filter . flip notElem)
. Tapi tentu saja inlining jauh lebih pendek. Terima kasih!Pyth, 34
Mengambil input dalam format
["century", "decade", "year", "month", "week", "day", "hour", "minute", "second"]
. Tips golf sangat dihargai, seperti biasa.sumber
Pyth, 24 byte
Cobalah online. Suite uji.
Perhatikan bahwa test case terakhir akan membutuhkan waktu untuk dijalankan.
Mengambil input dalam bentuk array, misalnya
["Day", "day"]
.Satu lagi yang menarik yang saya temukan dan isaacg membaik (juga 24 byte):
sumber
-J{sQhlDsM.A#f{ITm-RdQyJ
sini