Pemrogramannya sangat kaku. Anda tidak dapat memberi tahu program untuk "menampilkan jumlah pisang", Anda harus memberi tahu print(bananas)
.
Tetapi ketika Anda melakukan itu, Anda berakhir dengan masalah: Anda tidak tahu berapa banyak pisang yang Anda miliki sebelumnya, jadi Anda tidak tahu apakah akan menggunakan jamak.
Terkadang, pemrogram melakukan hal yang malas. Alih-alih memeriksa, mereka hanya mencetak there are X banana(s)
.
Tapi itu jelek, jadi kita perlu program untuk memperbaikinya.
Metode
Untuk menghapus bentuk jamak ambigu dalam string, ikuti langkah-langkah berikut:
Pisahkan string pada spasi menjadi daftar kata.
Untuk setiap kata yang diakhiri dengan
(s)
, lakukan hal berikut:- Jika kata sebelumnya adalah
a
,an
,1
atauone
, menghapus(s)
pada akhir kata. - Jika tidak, jika kata adalah kata pertama dalam string atau kata sebelumnya tidak
a
,an
,1
atauone
, ganti(s)
di akhir kata dengans
.
- Jika kata sebelumnya adalah
Gabung daftar kata kembali bersama menjadi string, melestarikan spasi putih asli.
Contoh
Mari kita ambil string there's a banana(s) and three apple(s)
.
Pertama, kami membagi string menjadi daftar kata: ["there's", "a", "banana(s)", "and", "three", "apple(s)"]
Untuk langkah kedua, kita ambil dua kata yang diakhiri dengan (s)
: banana(s)
dan apple(s)
.
Kata sebelumnya banana(s)
adalah a
, jadi kami menghapus (s)
, membuatnya banana
. Kata sebelumnya apple(s)
adalah three
, jadi kami mengubah (s)
to s
, dengan demikian menjadi apples
.
Kami sekarang punya ["there's", "a", "banana", "and", "three", "apples"]
. Bergabung kembali dengan daftar, kita dapatkan there's a banana and three apples
. Ini adalah hasil akhir kami.
Tantangan)
Buat program atau fungsi yang mengambil string ambigu dalam format apa pun yang masuk akal dan mengembalikan versi string yang tidak ambigu .
Anda dapat mengasumsikan string tidak mengandung baris baru, tab, atau carriage return.
Saya lupa menentukan apakah akan membagi pada kelompok ruang atau ruang (yaitu apakah okay then
dengan dua ruang seharusnya ["okay", "then"]
atau ["okay", "", "then"]
) ketika memposting tantangan, sehingga Anda dapat menganggap salah satu bentuk pemisahan.
Test case
Input -> Output
there are two banana(s) and one leprechaun(s) -> there are two bananas and one leprechaun
there's a banana(s) and three apple(s) -> there's a banana and three apples
apple(s) -> apples
one apple(s) -> one apple
1 banana(s) -> 1 banana
banana -> banana
preserve original whitespace(s) -> preserve original whitespaces
11 banana(s) -> 11 bananas
an apple(s) -> an apple
this is a te(s)t -> this is a te(s)t
I am a (s)tranger(s) -> I am a (s)tranger
Mencetak gol
Karena ini adalah kode-golf , pengiriman dengan byte paling sedikit akan menang!
apple(s)
test case menghasilkan apples
sebagai gantinya? Tantangannya menyatakan Otherwise, if the word is the first word in the string . . . replace the (s) at the end of the word with s.
saya perhatikan bahwa kasus ini menghasilkan apples
kotak pasir untuk tiga revisi pertama tetapi berubah pada yang keempat.
There's a single banana(s)
-> There's a single bananas
.