Ada dua bentuk kata benda, tunggal dan jamak. Konversi antara keduanya cukup mudah.
Biasanya, Anda mengakhirinya dengan
s
. ex.car
=>cars
.Jika berakhir dengan
s
,x
,z
,ch
ataush
, berakhir denganes
. ex.bus
=>buses
.Jika diakhiri dengan
y
konsonan tepat sebelum itu, ubahy
keies
. ex.penny
=>pennies
.Jika diakhiri dengan
f
ataufe
, ubah keves
. ex.knife
=>knives
.Jika diakhiri dengan
o
konsonan tepat sebelum itu, ubah keoes
. ex.potato
=>potatoes
.
Tugas
Anda akan diberi kata benda tunggal. Anda harus mengonversi kata benda yang diberikan ke jamak dan mengeluarkannya.
Aturan
Anda tidak akan diberi kata benda tidak beraturan, seperti
mouse
danmoose
.Anda tidak akan diberikan pengecualian, seperti
safe
(safes
; melanggar # 4),piano
(pianos
; melanggar # 5) dano
(oes
, melanggar # 5).Anda tidak akan diberikan kata-kata yang memiliki dua atau lebih bentuk jamak yang mungkin, seperti
mosquito
(mosquitos
ataumosquitoes
) danroof
(roofs
ataurooves
).Anda tidak akan diberi kata benda yang tak terhitung jumlahnya.
y
tidak dihitung sebagai vokal.
Contohnya
car => cars
bus => buses
potato => potatoes
knife => knives
penny => pennies
exception => exceptions
wolf => wolves
eye => eyes
decoy => decoys
radio => radios
sumber
Jawaban:
Mathematica, 9 byte
Ya, ada built-in untuk ini!
Output sampel
sumber
Retina ,
575356555857 byteTerima kasih kepada MartinEnder untuk beberapa saran bermain golf
Terima kasih kepada BusinessCat untuk bermain golf 1 byte
Cobalah online!
Penjelasan (kedaluwarsa)
Perubahan
{consonant}y
ke{consonant}ie
Menambahkan sebuah
e
ketika kata berakhir dengan{consonant}o
,f
,x
,z
,s
,sh
atauch
.Mengubah akhiran
fe
menjadive
Akhirnya tambahkan
s
kata.Suntingan
eye
sebagai contohsumber
y
menggunakan$1
JavaScript (ES6),
10997 byteCobalah online!
sumber
()
di depanfe
?replace()
iterasi menyertakan referensi ke grup yang cocok pertama (dengan$1
). Itu sebabnya saya perlu grup pencocokan kosong di sini.(?<![aeiou])y
?Batch, 325 byte
sumber
@echo off
di awal daripada di@
mana - mana? Juga,@set/ps=
sepertinya sedikit berkarat dari telepon. Bukankahs
variabel akan menerima nilai slicing?@echo off
sudah 9 byte tanpa baris baru, jadi itu tidak menyelamatkan saya apa pun. Juga,@set/ps=
diperlukan untuk memasukkan nilai di tempat pertama.Haskell,
216207205 byteTerima kasih kepada @Lynn, @ user1472751 dan @Laikoni untuk bantuannya!
Dapat dibaca
Penjelasan
import Data.List
untuk fungsinyaisSuffixOf
.endsWithOneOf
(€
dalam versi golf) mengembalikan apakah salah satu elemen daftar adalah akhir dari string.consonants(c)
hanyalah daftar semua konsonan.Akhirnya,
pluralize(p)
periksa ujung-ujungnya dan kembalikan pluralisasi yang tepat.Contoh:
sumber
€
panjangnya beberapa byte, membuat solusi Anda menjadi 226 byte. (Tantangan golf code secara eksplisit dicetak dalam byte, karena menghitung karakter membuat Anda kadang-kadang curang.) Namun, Anda dapat mengubah nama saja menjadi!
! Juga,words"s x z ch sh"
menghemat 5 byte. Menghapus parens di sekitar(map(:"o")c))
dan(map(:"y")c))
menyimpan 4 lagi.c=['b'..'z']\\"eiou"
karena'a'
selalu dihapus.0<1
lebih pendek satu byte dariTrue
. Juga baris baru adalah jumlah byte yang sama;
tetapi membuat kode golf sedikit lebih mudah dibaca.Perl, 66 + 2 (
-pl
bendera) = 68 byteMenggunakan:
Cobalah di Ideone.
sumber
Röda , 80 byte
Fungsi memodifikasi argumennya. Penggunaan:
main word { f word; print word }
Berikut adalah versi yang menggunakan nilai pengembalian (83 byte):Dan di bawah ini adalah fungsi yang membaca banyak nilai tanpa batas dari aliran input dan mendorong bentuk jamak ke aliran output (
87,83 byte):Ini adalah fungsi anonim, karena lebih pendek daripada membuat fungsi bernama.
sumber
f&s
)? Cukupf("word")
tampaknya tidak menampilkan apa-apaPHP,
103100 byteCobalah online!
The
preg_replace
Fungsi mengambil dalam berbagai pola dan penggantian.sumber
-R
dan$argn
. Dan menggunakan pernyataan dengany
menghemat dua:(?<![aeiou])y$
memungkinkanie
sebagai pengganti: tidak\1
, tidak ada kutipan.([^aeiou]o|sh?|x|z|ch)$
-R
(tetapi tidak-r
) sehingga tidak mengubah jumlah byte, sayangnya. Tapi saran di balik itu berfungsi dengan baik. Terima kasih.Python 3,
271239199 byteTerima kasih kepada @ovs karena menguranginya sebesar 72 byte!
Cobalah online!
sumber
elif
. Daftar karakter tunggal dapat diganti dengan string. Beralih ke python menyimpan 3 byte tambahan. tioelif
, karena itu artinyapotato
menjadipotaties
.print(s+"s")
dan lepaskan case lain dan juga setiap Anda menambahkan kata. Tioand/*
danor/+
dan membuat fungsi lambda tanpa nama, Anda bisa mendapatkannya di bawah 200 byte (saya menukarprint(s+"s")
pintar. Semua berubah; Anda cukup banyak menulis ulang semuanya lol. Terima kasih! (Saya bahkan tidak tahu Anda bisa melakukanTrue and "string"
itu)sed, 70
79byte69
78+1 untuk bendera-E
(BSD) /-r
(GNU)Port langsung dari jawaban retina .
sumber
Pip ,
6361 byteBegitu dekat dengan menangkap Retina! Tapi itu mungkin tidak akan terjadi. :(
Cobalah online!
Penjelasan
Strategi dasar:
R
eplace melakukan beberapa penggantian satu demi satu ketika diberikan daftar pola dan penggantian. Kami ingin melakukan penggantian berikut:(sh?|x|z|ch)$
-> tambahkane
[^aeiou]y
-> ubahy
toi
dan tambahkane
fe?
-> ubah menjadiv
dan tambahkane
[^aeiou]o
-> tambahkane
Lalu kami ingin memakukan pada
s
terlepas.Trik:
C
operator, diberikan regex, membungkusnya dalam kelompok menangkap;C`xyz`
lebih pendek satu byte dari`(xyz)`
.s
(dan harus berurusan dengan urutan diutamakan dariR
dan.
), kita dapat dengan mudahO
mengucapkan bagian utama kata dan kemudian mencetaknyas
secara terpisah.Kode spasi dan komentar:
sumber
C #,
73163 byte:Ya, bahasa lain dengan itu built-in (meskipun Anda perlu menambahkan referensi ke
System.Data.Entity.Design.dll
)Menggunakan:
Keluaran:
sumber
Python
199187176 Bytessumber
Pelari rel, 18 byte
Contoh:
sumber
Python, 296 byte
sumber
Pelabuhan langsung Retina:
Ruby , 111 byte
Cobalah online!
Meminta melalui
ruby -lpe
dan menyediakan fileinput.txt
untuk argumen CLI pertama.sumber
C, 321 byte
uji:
hasil:
sumber
wolves
tidakwolfves
.Java 7, 408 byte
Golf:
Pada dasarnya menguji apa akhir dari String dan menambahkan / mengganti huruf tergantung pada kasusnya. Boolean dan String pada awalnya hanya untuk menghapus pengulangan dalam kasus uji dan membuat kode lebih kecil.
Versi yang dapat dibaca:
sumber