pengantar
Sebuah singkatan rekursif adalah singkatan yang berisi atau mengacu pada itu sendiri, misalnya:
Fish
bisa menjadi singkatan rekursif Fish is shiny hero
, melihat bagaimana yang juga berisi singkatan itu sendiri. Contoh lain adalah Hi
-> Hi igloo
. Atau bahkan ppcg paints
->ppcg paints cool galaxies pouring acid into night time stars
Jadi pada dasarnya, sebuah kalimat adalah singkatan rekursif jika huruf pertama dari masing-masing kata mengeja kata pertama atau kata-kata.
Tantangan
Buat program yang mengambil string 1 atau lebih kata yang dipisahkan oleh karakter spasi, dan menghasilkan akronim rekursif, atau string kosong jika tidak mungkin. Tidak mungkin membuat akronim rekursif untuk string seperti, misalnya, ppcg elephant
karena Anda akan mulai dengan mengambil p
dari ppcg
lalu menambahkan itu ke akronim, kemudian mengambil e
dari elephant
. Tetapi sekarang kita memiliki kontradiksi, karena akronim saat ini menjabarkan "pe ..", yang bertentangan dengan "pp ..". Itu juga halnya dengan, misalnya hi
,. Anda akan mengambil h
dari hi
, tetapi hukumannya sudah berakhir dan tidak ada lagi surat untuk dijabarkan hi
dan kami hanya tinggal h
yang tidak cocokhi
. (String membutuhkan jumlah kata lebih dari atau sama dengan jumlah huruf dalam akronim)
Input dan output tidak peka huruf besar-kecil
Batasan
- Apa pun yang dimasukkan ke dalam program Anda akan menjadi kata-kata bahasa Inggris yang valid. Tetapi Anda harus memastikan untuk menghasilkan kata-kata bahasa Inggris yang valid juga (Anda dapat menggunakan database atau hanya menyimpan kata untuk masing-masing dari 26 huruf)
- Celah standar dan aturan IO standar berlaku
Uji Kasus
hi igloo -> hi
ppcg paints -> (impossible)
ppcg paints cool giraffes -> ppcg
ppcg paints cool galaxies pouring acid into night time stars -> ppcgpaints
ppcg paints cool galaxies pouring acid into night time -> ppcg
ppcg questions professional pool challengers greatly -> (impossible)
I -> I
Mencetak gol
Ini adalah kode-golf , jadi kode sumber terkecil dalam byte menang
ppcg paints cool galaxies pouring acid into night time
akan menjadi "ppcgpaint" ketika dibuat menjadi akronim, tetapi hasilnya harusppcg
meskipun itu hanya sebagian cocok?Jawaban:
Japt , 13 byte
Cobalah online!
sumber
ppcg paints cool galaxies pouring acid into night time stars
kasus uji05AB1E , 16 byte
Cobalah online!
sumber
ð¡
bukan#
di edit terakhir Anda? Beberapa kasus uji khusus yang tidak saya perhitungkan?#
akan gagal untuk input kata tunggal menghasilkan input daripada string kosong.#
harus bertindak sama sepertið¡
.. Apakah ada use-case Anda dapat memikirkan di mana Anda ingin membagi string pada spasi, tetapi jika tidak mengandung spasi, itu harus tetap menjadi string (bukan string) terbungkus daftar)? Orang lain membaca ini; FYI: Menggunakan#
(split on space) pada string tanpa spasi menghasilkan string apa adanya (yaitu"test" -> "test"
). Menggunakanð¡
(split on space) pada string tanpa spasi menghasilkan string yang terbungkus dalam daftar (yaitu"test" -> ["test"]
).#
juga digunakan sebagaiquit if true
(yang merupakan fungsi utamanya). Jika#
kembali salah, Anda mungkin tidak ingin nilai diperiksa untuk dibungkus dalam daftar, dibiarkan di tumpukan.Haskell,
5148 byteEdit: -3 byte terima kasih kepada @xnor.
Menemukan akronim.
Cobalah online!
sumber
x
, menulis(\w-> ...).words
akan lebih pendek.Perl 6 ,
50 42 5849 byte-9 byte terima kasih kepada nwellnhof
Cobalah online!
Pilihan pertama.
Saya mengeksploitasi fakta bahwaAtau regex dari jawaban moonheart lebih pendekord
hanya mengembalikan nilai ordinal dari huruf pertama dari sebuah string, sementarachrs
mengambil daftar ords dan mengembalikan sebuah string.:(
. Untuk referensi, jawaban sebelumnya.words>>.ord.chrs
bukan[~] m:g/<<./
Penjelasan:
sumber
Retina 0.8.2 , 60 byte
Cobalah online! Menemukan akronim rekursif, jika ada. Penjelasan:
Gandakan input.
Kurangi kata-kata di baris pertama menjadi huruf awal.
Masukkan spasi untuk mencocokkan kata-kata aslinya, jika mungkin.
Keluarkan baris pertama jika merupakan awalan dari baris kedua.
sumber
pp
hanya mengeja sebagian dari kata pertama, alih-alih semuanyaPerl 6 , 56 byte
Cobalah online!
Regex sebelumnya membingungkan dan tidak bisa digunakan untuk saya. Tiba-tiba saya mengerti mereka dengan sempurna. Apa yang terjadi pada saya: P
Memenuhi pilihan 1.
sumber
ppcgpaints
tes, kalau tidak saya akan menyarankan sesuatu seperti$!∈.words
untuk kondisi ifK (ngn / k) , 40 byte
Pilihan pertama:
Cobalah online!
sumber
Rust, 155, coba online!
Terpilih: Masalah 1: Menemukan akronim
Tidak disatukan, hanya sedikit:
Atau jika kita dapat berasumsi bahwa input semuanya huruf kecil, hanya 130:
sumber
Jelly , 9 byte
Program penuh mencetak singkatan rekursif jika memungkinkan.
Cobalah online!
Bagaimana?
sumber
JavaScript [ES6], 74 byte
Membuat ekspresi reguler untuk dicocokkan. Lihat contoh dalam kode.
Semua kasus uji:
sumber
increase i
Python 2 , 106 byte
Opsi pertama - menemukan akronim rekursif.
Mengembalikan hasil dalam daftar.
Cobalah online!
Python 2 , 120 byte
Opsi pertama - menemukan akronim rekursif.
Cobalah online!
sumber
Javascript, 71 byte
Pendekatan 1
Tidak Disatukan:
sumber
Ruby
-apl
, 57 byteCobalah online!
sumber
Python 2 , 109 byte
Cobalah online!
sumber
Scala, 76 byte
Solusi untuk kasing sederhana (akronim tanpa spasi putih)
Scala,
144 byte100 byte (lihat solusi oleh ASCII-satunya di komentar)Tes dalam REPL
sumber
:::
diganti++
? Juga,List[String]
->Seq[Any]
?