Programlama çok katıdır. Bir programa "muz sayısını hesaplamak" diyemezsiniz, bunu söylemelisiniz print(bananas)
.
Ancak bunu yaptığınızda, bir sorunla karşılaşırsınız: önceden kaç tane muzunuz olduğunu bilmiyorsunuz, bu yüzden çoğul kullanıp kullanmayacağınızı bilmiyorsunuz.
Bazen, programcılar tembel yoldan gider. Kontrol etmek yerine, sadece yazdırırlar there are X banana(s)
.
Ama bu çirkin, bu yüzden bunu düzeltmek için bir programa ihtiyacımız var.
Metodlar)
Bir dizedeki belirsiz çoğulları kaldırmak için aşağıdaki adımları izleyin:
Boşluklardaki dizgiyi bir sözcük listesine bölün.
İle biten her kelime
(s)
için, aşağıdakileri yapın:- Yukarıdaki kelime ise
a
,an
,1
ya daone
, kaldırma(s)
kelime sonunda. - Kelimesi ilk kelime dizesini veya önceki kelime değilse Aksi
a
,an
,1
veyaone
, yerine(s)
ile kelimenin sonundakis
.
- Yukarıdaki kelime ise
Orijinal boşlukları koruyarak kelime listesine tekrar bir dizgede katılın.
Örnek (lar)
Bir ip atalım there's a banana(s) and three apple(s)
.
İlk olarak, dizgiyi bir sözcük listesine böldük: ["there's", "a", "banana(s)", "and", "three", "apple(s)"]
İkinci adım için biten iki kelimeyi alıyoruz (s)
: banana(s)
ve apple(s)
.
Önce kelime banana(s)
olduğunu a
, bu yüzden kaldırmak (s)
yapma, banana
. Kelimesi daha önce apple(s)
olduğu three
değiştirmemiz yüzden (s)
hiç s
böylece olur apples
.
Şimdi bizde var ["there's", "a", "banana", "and", "three", "apples"]
. Listeye tekrar katıldığımızda, anlaştık there's a banana and three apples
. Bu bizim son sonucumuz.
Mücadeleler)
Herhangi bir makul biçimde belirsiz bir dize alan ve bu dize belirsiz halini döndüren bir program veya işlev oluşturun .
Dizenin yeni satırlar, sekmeler veya satırbaşları içermediğini varsayabilirsiniz.
Mücadeleyi gönderirken boşluk gruplarına mı yoksa boşluklara mı ayrılacağımı (yani okay then
iki boşlukla mı yoksa olacağına ["okay", "then"]
mı ["okay", "", "then"]
) belirtmeyi unuttum , böylelikle ayrılmanın her iki şeklini de kabul edebilirsiniz.
Test durumları
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
puanlama
Bu kod-golf olduğundan , en az bayt olan gönderim kazanır!
apple(s)
Test durumu apples
yerine vermeli mi? Otherwise, if the word is the first word in the string . . . replace the (s) at the end of the word with s.
Zorluk, bu davanın apples
ilk üç revizyon için kum havuzunda ortaya çıktığını ancak dördüncü olarak değiştiğini belirtiyor .
There's a single banana(s)
-> There's a single bananas
.