Anda telah disewa untuk menulis beberapa kode untuk aplikasi pengambilan dikte, yang mengambil input suara dari sumber yang diucapkan, mem-parsingnya sebagai kata-kata, dan menuliskannya di layar.
Manajemen tidak benar-benar mempercayai Anda dengan semua kekuatan yang ada di proyek ini — Anda dikenal hanya duduk-duduk dan bermain golf sepanjang hari alih-alih melakukan pekerjaan Anda, sayangnya — jadi mereka hanya memberi Anda tugas yang sangat sederhana untuk dilakukan: putar Kalimat dengan Tanda baca diselingi menjadi kalimat yang diformat dengan benar, di mana 'diformat dengan benar' didefinisikan di bawah ini.
Kalimat adalah serangkaian input. A Word adalah sekelompok karakter non-spasi yang bisa menular. Tanda baca adalah kata yang karakter pertamanya adalah
^.Sebuah huruf besar ditulis dengan huruf besar jika huruf pertama dari kata tersebut bukan huruf kecil (kata dengan huruf besar cocok dengan regex
/[^a-z].*/).Kata pertama dari Kalimat harus ditulis dengan huruf besar.
A
^COMMAadalah karakter koma,dan memiliki spasi berikut tetapi tidak sebelumnya.aaa ^COMMA bbbmenjadiaaa, bbb.A
^COLONadalah tanda koma:.A
^SEMICOLONadalah tanda koma;.A
^PERIODadalah tanda koma.. Kata berikut a^PERIODharus ditulis dengan huruf besar .A
^BANGadalah periode yang terlihat seperti!.A
^DASHadalah karakter tanda hubung-dan memiliki spasi sebelum dan sesudahnya.A
^HYPHENjuga karakter dasbor-tetapi tidak memiliki spasi mengikuti atau mendahului.An
^EMDASHadalah tanda hubung (bukan tanda hubung!) Yang dieja--.An
^OPENQUOTEadalah karakter kutipan"yang memiliki ruang mendahului tetapi tidak mengikuti. Kata berikut^OPENQUOTEharus ditulis dengan huruf besar . Jika suatu^OPENQUOTEdidahului oleh kata yang bukan tanda baca, tambahkan a^COMMAantara kata itu dan^OPENQUOTE. Jika a^OPENQUOTEdidahului oleh Tanda Baca yang membuat kata berikutnya menjadi kapital, ini melompati^OPENQUOTEke kata berikutnya.A
^CLOSEQUOTEadalah digraf,"yang memiliki spasi mengikuti tetapi tidak mendahului. Jika^CLOSEQUOTEdidahului oleh^COMMA,^PERIODatau^BANG, bahwa Tanda Baca menghilang dan^CLOSEQUOTEdieja,",."atau!"masing-masing. Jika Tanda baca yang hilang menentukan huruf besar, huruf besar itu masih harus muncul pada kata berikutnya yang tersedia.Ruang awal atau akhir dalam hasil akhir penuh harus dihilangkan, dan string apa pun dari dua ruang atau lebih dalam satu baris harus diciutkan menjadi karakter spasi tunggal.
Kasus apa pun yang tidak dicakup di atas (misalnya
^COMMA ^COMMAatau^SEMICOLON ^CLOSEQUOTEatau^UNDEFINEDPUNCTUATION) tidak akan terjadi pada input yang terbentuk dengan baik dan dengan demikian perilaku tidak terdefinisi.
Tim pengembangan memberi tahu Anda tentang hal-hal berikut:
Proyek ini sedang ditulis dalam bahasa [ bahasa Anda di sini] , dan harus sesingkat mungkin sehingga membutuhkan ruang sesedikit mungkin ketika itu merupakan aplikasi untuk Android / iPhone. Anda mencoba menjelaskan bahwa itu bukan cara kerja pengembangan aplikasi, tetapi mereka tidak mendengarkan. Tapi hei, kebetulan sekali! Anda adalah pegolf luar biasa dalam [bahasa Anda di sini] !
Aplikasi tidak akan memiliki izin akses web apa pun, dan tidak akan ada pustaka yang diinstal yang melakukan pemformatan ini untuk Anda. Anda mungkin dapat meyakinkan pimpinan tim untuk mengizinkan Anda perpustakaan regex jika ada untuk bahasa Anda, jika Anda merasa perlu.
Dukungan untuk kutipan bersarang yang menggunakan tanda kutip ganda / tunggal dengan benar direncanakan untuk versi aplikasi yang lebih baru, tetapi bukan versi yang sedang Anda kerjakan sekarang, jadi jangan khawatir.
Manajemen adalah penggemar berat pengembangan yang digerakkan oleh pengujian, dan tim pengembang telah membuat beberapa keyboard monyet yang malang menulis beberapa tes untuk bagian program Anda: (baris baru ditambahkan agar mudah dibaca, perlakukan sebagai ruang)
Memasukkan:
hello ^COMMA world ^BANGKeluaran:
Hello, world!Memasukkan:
once upon a time ^COMMA there was a horse ^PERIOD that horse cost me $50 ^PERIOD ^OPENQUOTE eat your stupid oats ^COMMA already ^BANG ^CLOSEQUOTE I told the horse ^PERIOD the horse neighed back ^OPENQUOTE no ^CLOSEQUOTE and died ^PERIOD THE ENDKeluaran:
Once upon a time, there was a horse. That horse cost me $50. "Eat your stupid oats, already!" I told the horse. The horse neighed back, "No," and died. THE ENDMemasukkan:
begin a ^PERIOD b ^COMMA c ^COLON d ^SEMICOLON e ^BANG f ^HYPHEN g ^DASH h ^EMDASH i ^OPENQUOTE j ^PERIOD ^OPENQUOTE k ^SEMICOLON ^OPENQUOTE l ^CLOSEQUOTE m ^BANG ^CLOSEQUOTE n ^PERIOD 0x6C6F6C endKeluaran:
Begin a. B, c: d; e! F-g - h--i, "j. "K; "l," m!" N. 0x6C6F6C end
Ini adalah kode golf: skor terendah menang. Anda dapat menulis fungsi dari satu argumen string, atau program membaca dari STDIN dan menulis ke STDOUT.
prompt()?