Semua orang tahu bahwa kucing mengeong, tetapi yang tidak disadari banyak orang adalah bahwa caaaats pergi meeeeoooow. Faktanya, panjang bunyi vokal yang dibuat kucing tergantung pada panjang vokal yang digunakan untuk mengatasinya.
Dengan cara yang sama, sapi pergi moo, tetapi coooow pergi moooooooo
Tantangan
Anda harus menulis sebuah program yang mengambil input, kata yang berarti kucing, dan kata yang berarti sapi, menentukan jumlah vokal utama, dan mencetak salah satu dari string berikut, yang sesuai:
C[]ts go M[]w
C[]ws go M[]
Di mana []
singkatan vokal, sesuai dengan aturan berikut:
- Jumlah e dan o dalam "Meow" harus sama dengan jumlah vokal yang ditemukan dalam kata input.
- Jumlah o dalam "Moo" harus dua kali lipat jumlah vokal yang ditemukan di kata input.
Program harus mengenali kata cat
- kata input dan cow
. Input dapat menggunakan kapitalisasi apa saja yang paling nyaman, tetapi output harus dikapitalisasi persis seperti yang ditunjukkan di atas.
Meooeoew
output yang valid untukCaaat
, misalnya?Jawaban:
Retina ,
5749444341 byteSangat dekat ...:)Pyth ...Cobalah online.
Diharapkan input dikapitalisasi seperti
Caaat
atauCoooow
.Penjelasan
Regex cocok dengan seluruh input, dan menangkap vokal dalam grup
1
(kita tidak perlu jangkar, karena kecocokan tidak dapat gagal dan dengan rakus akan mencocokkan seluruh input). Substitusi menulis kembali input itu, dan menambahkans go M
, diikuti oleh dua kali vokal. Untuk inputCaaat
danCoooow
, kami mendapatkan:Output untuk sapi sudah benar. Kami hanya perlu melakukan sesuatu tentang kucing-kucing itu.
The
+
memberitahu Retina mengulangi tahap ini sesering mungkin. Regex cocok dengan duaa
s di bagian terakhir dari string (kami memastikan ini dengan$
jangkar, sehingga kami tidak mengganti hal-hal di dalamnyaCaaats
). Ini pada dasarnya akan cocok dengan semuanya setelahM
, selama bagian itu masih memilikia
s. Keduanyaa
dihapus dan seluruh sufiks setelah dibungkuse...ow
:Akhirnya, ada dua
w
s banyak dalam hasilnya, jadi kami menghapus yang mendahuluio
(untuk memastikan kami tidak mengacaukanw
diCoooows
):Dan kita pergi dengan:
sumber
LabVIEW, 58 LabVIEW Primitif
membuat string seperti ini menyakitkan ...
Vis paling kiri adalah pencocokan pola, a + dan o + masing-masing mencari jumlah paling lambat as dan os dalam satu baris.
Mengambil panjang dari yang saya buat 3 array 1 dengan panjang os 1 dengan panjang es dan satu dengan 2 kali panjang os.
Lalu semua bagian disatukan. Pertama input asli, lalu lanjutkan ke semua Array, yang tidak digunakan kosong sehingga mereka akan diabaikan, dan akhirnya aw jika inputnya adalah kucing. (Jika seperti yang ditemukan akan ada pada setelah pertandingan, jika tidak setelah pertandingan kosong)
Untuk lolz saya juga mengimplementasikan rubah dengan 6 keluaran berbeda ^^
sumber
Pyth,
504434Mengambil input dalam format
["caat", "coow"]
.Cobalah online.
Dijelaskan:
Terima kasih kepada Jakube untuk pengurangan panjang yang besar.
sumber
jk
dengans
, menghapus yang keduajk
(tidak melakukan apa-apa sama sekali), dan ganti"w\n"
dengan\wb
.r.Q3
dan hal-hal lainnya. Anda bisa menggunakan binary_map dan menyimpan 10 karakter tambahan.Pj.bs[rN3"s go M"S*-lN2+Y\o\w)Q"eo
. Tidak yakin, jika Anda sudah memiliki pengalaman dengan peta, jika Anda memiliki pertanyaan saya dapat menjelaskannya kepada Anda di Pyth Chat .Perl,
66615554 bytetermasuk +1 untuk
-p
Input diharapkan sesuai dengan
/^C[ao]+[tw]$/
(tidak ada baris baru!)Penggunaan:
/bin/echo -n Caaat | perl -p 55.pl
Kerusakan
Versi sebelumnya:
Berkomentar :
Contoh:
Caaat
$&
sebagaia
dan@l
sebagai(a,a,a)
.$x
ke tiga kalia
diikuti oleh 3 kalio
:aaaooo
.a
di$x
kee
:eeeooo
. Jumlah pengganti (0 atau positif) berfungsi sebagai kucing-detektor: set$y
untukw
jika demikian.s go M
,eeeooo
danw
.$\
alih-alihs/$/
, dan tidak memerlukan tambahan baris baru dalam input.sumber
Python 2, 74 byte
Mengambil input
Caaat
atauCooow
sumber
CJam (
60 57 5553 byte)Demo online . Input diasumsikan dalam huruf kecil.
Untuk panjang yang sama:
sumber
PowerShell,
135132 byte(linebreak dihitung sama dengan titik koma, jadi garis-putus untuk kejelasan)
Tantangan yang sangat sulit. Dan saya cukup yakin ini bisa golf lebih lanjut.
Mengambil string input sebagai
$a
dan$b
. Menggabungkan mereka dan melemparkannya sebagai char-array, lalu menyalurkannya melalui loop%{}
. Setiap huruf kemudian diperiksa jika itu-eq
UAL untuk'a'
dan variabel counter yang terkait bertambah tepat. Kami kemudian mengurangi4+$c
dari$d
ke akuncatcw
dalam input, dan melanjutkan untuk merumuskan kalimat output, memodifikasi output vokal dikali counter yang sesuai. (Di PowerShell,'e'*3
akan menghasilkan'eee'
, misalnya.)sumber
Hampir mirip dengan jawaban @ omulusnr tetapi ini menghasilkan output yang benar dan juga input tidak sensitif huruf.
PHP, 172
sumber
$p=$argv[1];preg_match("/c([ao]+)/i",$p,$e);$l=strlen($e[1]);$s=$k=strcmp($e[0][1],'o')?'eo':'oo';$r='str_repeat';echo $p,' go M',$r($s[0],$l),$r($s[1],$l),$k?'w':'';
sedikit lebih pendek menjadi 166 byteSwift 2, 3̶8̶1̶ 333 byte
Tidak Disatukan:
Membawa kapital atau kucing apa pun. Anda dapat mencobanya di sini:
http://swiftlang.ng.bluemix.net/#/repl/3f79a5335cb745bf0ba7698804ae5da166dcee6663f1de4b045e3b8fa7e48415
sumber
MATLAB:
190152118 byteTidak Disatukan:
Tes:
PS: Terima kasih kepada @ Kenney untuk saran yang bagus (lihat komentar)!
sumber
disp( (b>0)*[...] + (c>0)*[...] )
bekerja di siniPHP, 138 byte
dapat dibaca:
mencoba lebih pendek tetapi tidak berfungsi di PHP:
=)
sumber
OCTAVE,
126, 108Versi pertama dengan variabel dan penjelasan, 126:
Penjelasan: L tahu hewan mana yang berisi surat itu. S tahu apa yang mereka ulangi. e tahu akhirnya. Anda harus mengaktifkan "siaran otomatis" agar ini berfungsi, tetapi harus secara default di semua Oktaf yang saya gunakan. Tentu saja ada cara yang lebih pendek dengan misalnya perintah regexprep (ekspresi reguler dengan penggantian), tetapi sudah ada beberapa pendekatan dalam jawaban sudah, sehingga akan membosankan.
Sunting: Melewati variabel yang hanya terjadi satu kali, menggunakan pengindeksan oktaf saat terbang (tidak tahu apa namanya sebenarnya) dan menambahkan "i", memasukkan variabel string:
sumber
JavaScript (ES2015),
7877Cobalah di sini: https://jsbin.com/guqaxejiha/1/edit?js,console
sumber
Lua,
12190 Bytes121 Bytes
90 byte
Mengambil input seperti 'Caats' atau 'Coooows' peka huruf besar-kecil. Karena tidak ada persyaratan untuk input yang tidak valid, output mungkin aneh untuk, katakanlah, 'Rubah' atau 'Lembu'. : P
Tidak disatukan
Pembaruan ke 90 Bytes: Struktur if-control yang diganti dengan operator logis, dioptimalkan rangkaian string dengan menambahkan lebih banyak data dalam deklarasi
i
. Tanda kurung dihapus padai:find("w")
. Cukup menarik, menyimpan"o"
ke variabel menghemat beberapa byte saat menggunakanrep
, tetapi akan menjadi kontraproduktif dengan"w"
atau"e"
. Semakin banyak Anda tahu.sumber
Lua:
1159289 Bytesmengambil
C[]t
atauC[]w
sebagai input; [] = a atau o. Input lowecase akan menerjemahkan hasilnya.versi panjang:
Output contoh:
Edit: diubah
if
then
else
menjadiand
or
. menghapus SEMUA ruang bukan string.Anda juga bisa mencobanya di sini: Jalankan Lua Online tapi saya tidak tahu cara menggunakan terminal, jadi saya sudah menjalankannya.
Sunting: perubahan penggunaan "o" dan dihapus () dari
:find
. kredit diberikan kepada Cyv untuk menemukan optimasi tersebut. Ditambahkan "s" dan diubahl=#i-3
menjadil=#i-2
Dengan input termasuk "s" hanya 88 byte:
sumber
cat
dancow
. Input dapat menggunakan huruf kapital apa pun dan cat atau Cat harus benar valid.Dart ,
114 112 110 104 102100 byteCobalah online!
sumber
PHP,
170164161157 byteMengambil kapitalisasi apa pun.
CaAaT
,,coOOOw
terserah.v2: tidak benar-benar membutuhkan [wt] $. juga dikoreksi char ct
v3: char ct itu semua salah, kental $ a dan $ e penugasan
v4: simpan 3 byte pada $ af -> $ a
v5: simpan 4 byte dengan onelining itu (tidak ditampilkan)
sumber
$argv[0]."s go "
. Coba inipreg_match("/(?i)c([ao]+)/",$x=$argv[1],$e);$a=$e[1][0]=="a"?"ew":"o";echo$x."s go M".str_repeat($a[0],$n=strlen($e[1])).str_repeat("o",$n).$a[1]."\n";
(perbaiki keluaran dan 151 byte).