Revolusi berikutnya dalam mengetik di laptop dirilis pada tanggal 1 April 2014 oleh SwiftKey . Namun, saya ingin menjadi orang pertama yang menulis klon nano swiping, tetapi, karena saya tidak dapat menemukan teks gesek yang baik ke perpustakaan teks asli, dan saya tidak bisa menunggu mereka, saya bertanya di sini.
Tugas
Tulis program yang menerima teks gesek dan mengeluarkan teks-nyata yang setara. Contoh:
Input: hgrerhjklo
Output: hello
Ketika pengguna melakukannya:
Contoh lain:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
Aturan
- Program akan mengambil satu 'kata' yang digesek di atas stdin atau argv
- Huruf pertama dan terakhir dari input yang digesek akan sama dengan huruf pertama dan terakhir dari kata asli
- Anda dapat mengasumsikan pengguna akan membuat garis lurus yang wajar, tetapi Anda dapat menggunakan data sampel untuk memverifikasi ini (saya membuat data sampel, dan saya akan membuat data uji akhir)
- Untuk input yang ambigu, Anda dapat membuat pilih salah satu output, tetapi saya akan mencoba untuk menghapus semua ambiguitas dari data uji
- Kata ini akan ada dalam daftar kata ini (tetapi digesek). Daftar kata akan berada di direktori saat ini, dan dapat dibaca (baris baru dipisahkan, akan dinamai
wordlist
, tidak ada ekstensi). - Babatan hanya akan berisi karakter alfabet huruf kecil
- Gesek dapat berisi karakter yang digandakan, jika pengguna berhenti sebentar pada kunci
- Program harus menampilkan pada stdout (kasus tidak masalah)
- Program harus kembali
0
sebagai kode pengembalian - Anda harus memberikan perintah jalankan, kompilasi perintah (jika perlu), nama dan jalur input mana yang digunakan
- Namun, celah standar berlaku (mereka mungkin tidak membantu)
- Tidak ada perpustakaan non-builtin yang diizinkan
- Lebih disukai solusi deterministik, non-golf / tidak jelas
- Tidak ada penulisan file, jaringan, dll.
- Kode Anda harus berjalan dalam satu detik atau kurang (kode Anda dijalankan sekali per kata)
- Proses penilaian dijalankan pada prosesor Intel i7 Haswell, dengan 4 kode virtual (2 yang nyata), sehingga Anda dapat menggunakan utas jika Anda harus
- Panjang kode maksimum 5000 byte
- Bahasa yang Anda gunakan harus memiliki versi gratis (tidak percobaan) yang tersedia untuk Linux (Arch Linux, jika itu penting)
Kriteria Kemenangan
- Pemenangnya adalah solusi yang paling akurat (diberi skor oleh program kontrol , menggunakan daftar tes yang disediakan)
- Popularitas adalah tie breaker
- Tabel penilaian akan diperbarui setiap beberapa hari
- Time-out dan crash dihitung sebagai gagal
- Tantangan ini akan berjalan selama dua minggu atau lebih, tergantung pada popularitas
- Skor akhir akan menggunakan daftar kata yang berbeda, yang dipilih secara acak (panjang yang sama, dari daftar kata yang sama)
Lain
- Anda dapat menggunakan program kontrol untuk menguji program Anda
- Jika Anda tidak sabar, dan ingin program Anda diperbarui / ditambahkan dengan cepat, mulai masalah atau tarik permintaan di https://github.com/matsjoyce/codegolf-swipe-type/blob/master
- Entri dikelola di https://github.com/matsjoyce/codegolf-swipe-type/blob/master/entries
- Log dari setiap program dijalankan di https://github.com/matsjoyce/codegolf-swipe-type/blob/master/logs
- Log utama di https://github.com/matsjoyce/codegolf-swipe-type/blob/master/log.log
- Posisi setiap kunci akan diberikan sebagai file csv di direktori saat ini disebut
keypos.csv
, dengan nilai x dan y diberikan relatif terhadapQ
(lihat https://github.com/matsjoyce/codegolf-swipe-tipe/blob/master/ keypos.csv ) - Setiap kunci 1,5 x 1,5 cm (unit yang sama seperti di keypos.csv)
Papan Skor Saat Ini
daftar tes ( log ):
Three Pass Optimizer:Errors: 0/250 Fails: 7/250 Passes: 243/250 Timeouts: 0/250
Corner Sim: Errors: 0/250 Fails: 9/250 Passes: 241/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 17/250 Passes: 233/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 19/250 Passes: 231/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 63/250 Passes: 187/250 Timeouts: 0/250
Corner Sim: Errors: 0/250 Fails: 10/250 Passes: 240/250 Timeouts: 0/250
Three Pass Optimizer:Errors: 2/250 Fails: 14/250 Passes: 234/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 16/250 Passes: 234/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 17/250 Passes: 233/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 67/250 Passes: 183/250 Timeouts: 0/250
Final Run
daftar tes ( log ):
Corner Sim: Errors: 0/250 Fails: 14/250 Passes: 236/250 Timeouts: 0/250
Three Pass Optimizer:Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 20/250 Passes: 230/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 23/250 Passes: 227/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 30/250 Passes: 220/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 55/250 Passes: 195/250 Timeouts: 0/250
Dilakukan dengan baik untuk semua orang dan hgfdsasdertyuiopoiuy swertyuiopoijnhg!
l
, yang tidak dua kali lipat.