Latar Belakang
Tiga tahun yang lalu, orang ini Tom Murphy memasukkannya ke dalam kepala untuk memperluas gagasan portmanteau ke semua kata dalam bahasa dan menyebut ini portmantout ( portmanteau plus tout [Bahasa Prancis untuk semua ]). Mendefinisikan bahasa Inggris sebagai daftar 108.709 kata, ia berhasil menemukan urutan 611.820 huruf dengan dua properti berikut:
- Setiap kata bahasa Inggris terkandung dalam string.
- Beberapa lingkungan yang berisi dua huruf yang berdekatan dalam string adalah kata bahasa Inggris.
Berikut ini tautan ke halaman tempat portmantout ini dapat ditemukan (bersama dengan penjelasan video).
Portmantout
Yang pertama dari dua properti portmantout mudah dimengerti. Yang kedua mungkin membutuhkan penjelasan.
Pada dasarnya, kata-kata harus tumpang tindih. "golfcode" tidak akan pernah muncul di portmantout bahasa Inggris, karena tidak ada kata di sana yang berisi "fc". Namun, Anda mungkin menemukan "codegolf" di portmantout, karena "ego" menjembatani kesenjangan (dan semua pasangan huruf lainnya berada dalam "kode" atau "golf").
Tugas Anda:
Tulis program atau fungsi yang mengambil daftar string dan mengembalikan portmantout daftar.
Kode Python 3 ini akan memverifikasi portmantout.
Uji kasus
Semua daftar tidak berurutan; itu adalah,
{"code", "ego", "golf"} -> "codegolf"
{"more", "elm", "maniac"} -> "morelmaniac" or "morelmorelmaniac" or "morelmorelmorelmaniac" or...
Would a morelmaniac be some sort of mycologist?
{"ab", "bc", "cd", "de", "ef", "fg", "gh", "hi", "ij", "jk", "kl", "lm", "mn", "no", "op", "pq", "qr", "rs", "st", "tu", "uv", "vw", "wx", "xy", "yz", "za"} -> "abcdefghijklmnopqrstuvwxyza" or "rstuvwxyzabcdefghijklmnopqrstuvwxyzabcdef" or any 27+ letters in order
Dan kenapa tidak? Yang besar di situs Murphy, jika kode Anda dieksekusi dalam waktu yang wajar.
Aturan
- Kode Anda harus dihentikan.
- Anda tidak perlu mengembalikan portmantout yang sama dengan setiap eksekusi.
- Anda mungkin menganggap semua string hanya terdiri dari huruf kecil
a
melaluiz
. - Jika tidak ada portmantout yang mungkin, program Anda dapat melakukan apa saja. Ex:
{"most", "short", "lists"}
- Aturan standar untuk I / O dan celah berlaku.
Ini adalah kode-golf , sehingga solusi terpendek (dalam byte) di setiap bahasa menang! Selamat bermain golf!
sumber
{"sic", "bar", "rabbits", "cradle"} -> "barabbitsicradle"
{"mauve", "elated", "cast", "electric", "tame"} -> "mauvelectricastamelated"
(lebih banyak test case)Jawaban:
Python 2 ,
204202 byteCobalah online!
Diselamatkan
sumber
["ab", "ba", "ca"]
. Solusi saya memiliki bug yang sama.Pyth, 39 byte
Coba di sini
Penjelasan
sumber
Stax ,
3936 byteJalankan dan debug itu
Menjalankan semua test case secara deterministik dalam waktu sekitar satu detik.
Ini adalah algoritma rekursif.
Inilah programnya membongkar, tidak berkhasiat, dan berkomentar.
Jalankan yang ini
Sunting: Ini gagal untuk kelas input yang memiliki loop, seperti
["ab", "ba", "ca"]
, seperti halnya sebagian besar jawaban yang diposting lainnya.sumber
JavaScript (ES6),
138130 byteMengembalikan kesalahan untuk daftar yang tidak dapat sepenuhnya portmantouted.
Tidak Terkumpul:
Tampilkan cuplikan kode
Kode ini sangat lambat pada contoh alfabet lengkap (tidak termasuk karena alasan itu dalam Cuplikan di atas).
Itu diperbaiki dengan mengubah
map
s kesome
s, untuk kehilangan 2 byte:Tampilkan cuplikan kode
sumber