Tulis program atau fungsi yang membutuhkan dua input:
- Pesan teks
- Kamus bahasa Inggris, seperti yang terlihat dalam file Github ini (berisi sekitar 60000 kata)
dan menampilkan jumlah kesalahan ejaan dalam pesan (lihat di bawah untuk definisi dan kasus uji).
Anda dapat menerima kamus sebagai parameter untuk fungsi Anda, sebagai file yang telah ditentukan sebelumnya yang ingin ditemukan oleh program Anda, sebagai data hard-coded dalam kode Anda, atau dengan cara apa pun yang masuk akal lainnya.
Kode Anda seharusnya terlihat seperti pesan teks, dengan jumlah kesalahan ejaan yang minimal. Jadi, Anda akan menghitung skor kode Anda dengan memasukkannya sendiri sebagai input.
Pemenangnya adalah kode yang memiliki skor terendah (skor minimal yang mungkin adalah 0). Jika ada beberapa jawaban dengan skor yang sama, pemenang ditentukan oleh ukuran kode (dalam karakter). Jika dua jawaban masih terikat, pemenangnya adalah yang sebelumnya.
Jika diperlukan, Anda dapat menganggap pesan input adalah ASCII (byte 32 ... 126) dengan baris baru yang disandikan secara konvensional (1 byte "10" atau 2 byte "13 10"), dan tidak kosong. Namun, jika kode Anda memiliki karakter non-ASCII, kode tersebut juga harus mendukung input non-ASCII (sehingga dapat menghitung skornya sendiri).
Karakter dibagi menjadi beberapa kelas berikut:
- Huruf a ... z dan A ... Z
- Spasi (didefinisikan di sini sebagai karakter spasi atau karakter baris baru)
- Tanda baca
.
,
;
:
!
?
- Akhir kalimat
.
!
?
- Akhir kalimat
- Sampah (sisanya)
Sebuah kata didefinisikan sebagai urutan huruf, yang maksimal (yaitu tidak diawali atau diikuti oleh huruf).
Sebuah kalimat didefinisikan sebagai urutan maksimal karakter yang tidak mengakhiri kalimat.
Karakter adalah kesalahan ejaan jika melanggar salah satu aturan ejaan:
- Sebuah huruf harus berasal dari kata kamus (atau, dengan kata lain: setiap kata dengan panjang N yang tidak muncul dalam kamus dianggap sebagai kesalahan ejaan N)
- Karakter pertama dalam sebuah kalimat, mengabaikan karakter spasi putih awal, harus berupa huruf besar
- Semua huruf harus huruf kecil, kecuali yang ditentukan oleh aturan sebelumnya
- Karakter tanda baca hanya diperbolehkan setelah surat atau sampah
- Karakter baris baru hanya diperbolehkan setelah karakter akhir kalimat
- Karakter spasi putih tidak diizinkan di awal pesan dan setelah karakter spasi putih
- Seharusnya tidak ada sampah (atau, dengan kata lain: setiap karakter sampah dihitung adalah kesalahan ejaan)
Selain itu, kalimat terakhir harus berupa kosong atau hanya terdiri dari satu karakter baris baru (yaitu pesan harus diakhiri dengan karakter akhir kalimat dan baris baru opsional - sebut saja aturan 8).
Uji kasus (di bawah setiap karakter adalah aturan yang dilanggar; setelah itu =>
adalah jawaban yang diperlukan):
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')