İki giriş alan bir program veya işlev yazın:
- Bir yazılı mesaj
- İngilizce dil sözlüğü, bu Github dosyasında göründüğü gibi (yaklaşık 60000 kelime içerir)
ve mesajdaki yazım hatalarının sayısını gösterir (tanım ve test durumları için aşağıya bakın).
Sözlüğü işlevinize bir parametre olarak, programınızın bulmasını beklediği önceden tanımlanmış bir dosya olarak, kodunuzda sabit kodlanmış veriler olarak veya başka bir mantıklı şekilde alabilirsiniz.
Kodunuz kısa bir yazım hatasıyla birlikte kısa mesaj gibi görünmelidir. Yani, hesaplar kodunuzun puanını giriş olarak kendisine besleyerek .
Kazanan en düşük puana sahip koddur (mümkün olan en düşük puan 0'dır). Aynı puanda birkaç cevap varsa, kazanan kod büyüklüğüne göre (karakter olarak) karar verilir. İki cevap hala bağlıysa, kazanan ilk cevaptır.
Gerekirse, giriş mesajının geleneksel şekilde kodlanmış (1 bayt "10" veya 2 bayt "13 10") ve boş olmayan ASCII (bayt 32 ... 126) olduğunu varsayabilirsiniz. Ancak, kodunuz ASCII olmayan karakterlere sahipse, ASCII olmayan girişi de desteklemelidir (böylece kendi puanını hesaplayabilir).
Karakterler aşağıdaki sınıflara bölünmüştür:
- Harfler a ... z ve A ... Z
- Boşluk (burada boşluk karakteri veya yeni satır karakteri olarak tanımlanır)
- Noktalama
.
,
;
:
!
?
- Cümle bitmeyen
.
!
?
- Cümle bitmeyen
- Çöp (geri kalan her şey)
Bir kelime , maksimum olan bir harf dizisi olarak tanımlanır (yani bundan önce gelen veya hiçbir harf gelmeyen).
Bir cümle , cümle bitmeyen maksimum karakter dizisi olarak tanımlanır.
Karakter, yazım kurallarından herhangi birini ihlal ettiği takdirde yazım hatasıdır :
- Bir harf, bir sözlük kelimesine ait olmalıdır (veya başka bir deyişle: sözlükte görünmeyen her N uzunluğu kelimesi, Heceleme hataları olarak sayılır)
- Bir cümlenin ilk karakteri, başlangıçtaki boşluk karakterlerini yok sayarak, büyük harf olmalıdır
- Önceki kural tarafından belirtilenlerin dışındaki tüm harflerin küçük harf olması gerekir.
- Noktalama karakterlerine yalnızca bir harf veya çöpten sonra izin verilir
- Yeni satır karakterine yalnızca cümle biten bir karakterden sonra izin verilir
- Boşluk karakterlerine mesajın başında ve boşluk karakterlerinden sonra izin verilmez
- Hiçbir çöp olmamalıdır (veya başka bir deyişle: her çöp karakterinin saydığı bir yazım hatasıdır)
Ek olarak, son cümle ya boş olmalı ya da tam olarak bir yeni satır karakterinden oluşmalıdır (yani, mesaj cümle biten bir karakterle ve isteğe bağlı bir yeni satırla bitmelidir - hadi kural 8 diyelim).
Test durumları (her karakterin altında ihlal ettiği bir kuraldır; =>
gerekli cevaptan sonra ):
Here is my 1st test case!!
711 4 => 4
main(){puts("Hello World!");}
2 777 883 3 77 78 => 12
This message starts with two spaces
66 8 => 3
What ? No apostrophe's??
4 71 4 => 4
Extra whitespace is BAD!
66 661111111111 66 66333 => 21
Several
lines?
Must be used only to separate sentences.
=> 1 (first linebreak is en error: rule 5)
"Come here," he said.
73 7 => 3 (sentence starts with '"', not 'C')