Aturan
Saatnya untuk membangun tes kecepatan mengetik dalam bahasa pilihan Anda!
1 . Anda menyediakan file dengan kamus pilihan (setiap 'kata' di dalamnya harus dibatasi baris baru). Pipa itu melalui stdin
atau berikan namanya sebagai argumen baris perintah.
Sebuah sanggup tentang atas ketiadaan ...
2 . Pilih 10 kata acak dari file (tidak ada duplikat harus diizinkan) dan cetak dengan cara berikut:
-> langsung -> tanah -> selanjutnya -> lima ...
3 . Mulailah mengukur waktu yang dihabiskan mulai sekarang!
4 . Biarkan pengguna mengetik semua dari sepuluh kata secepat mungkin (berakhir dengan carriage return). Cetak OK
ketika Anda memiliki kecocokan, cetak WRONG
ketika kami memiliki kesalahan pengetikan (atau kata itu sudah berhasil diketik dalam proses ini).
5 . Hentikan jamnya! Sekarang mencetak CPM (caracters per menit) benchmark, yang dihitung sebagai berikut: (sum of the characters of the chosen words / time spent typing (seconds)) * 60
. Membulatkan ke bilangan bulat terdekat dan mereproduksi output (sampel) berikut:
-> Anda telah mencetak 344 CPM!
Contoh dijalankan
-> puas -> samping -> buka -> menteri -> risiko -> warna -> kapal -> sama -> ukuran -> pedang menetap baik sisi baik Buka baik # ...................... beberapa baris terpotong ...................... kata SALAH pedang baik -> Anda telah mencetak 298 CPM!
Pemenang
Ini adalah kode colf, entri terpendek (dalam jumlah karakter kode sumber) menang, bersenang-senang!
Jawaban:
K, 146
Mengasumsikan file kamus yang disebut 'd' di direktori kerja saat ini.
sumber
K
pernah saya lihat (di sini di codegolf.se) ...Bash -
217212199196 karakterTidak akan menang tapi itu menyenangkan
Di bawah 200 karakter sekarang!
Mengambil file daftar kata sebagai argumenSekarang mengambil daftar kata pada input standar. Rekatkan di terminal dan tekan ^ DSaran yang diterapkan dari manatwork
sumber
$SECONDS
variabel shell untuk menyederhanakan menghitung waktu yang telah berlalu.:
dalam perluasan parameter nilai default; 2)$
di depanSECONDS
dalam evaluasi aritmatika. Sebenarnya ada karakter tambahan lain, baris baru di dan file.Ruby (
189178171168)Cukup mendasar, saya yakin ada perbaikan yang harus dilakukan. Mengambil nama file kamus sebagai argumen baris perintah.
EDIT : Beberapa perubahan kecil, terutama seputar mempertahankan baris baru dari kamus. Akibatnya, file tersebut akan memerlukan baris baru tambahan agar berfungsi dengan benar.
sumber
C, 305
309347karakterTerima kasih kepada @ugoren untuk petunjuk perbaikannya. Menggunakan "kata ke-11" untuk membuang entri kamus yang masuk adalah kemenangan besar atas pendekatan strcpy-jika-dipilih saya sebelumnya.
Inilah sumber yang tidak diserang:
sumber
main(n,v)char**v;{...
. 2.stdin
bisachar *
.fgets(buf,len,stdin)
=gets(buf)
(apalagi buffer overruns). 3. Ada apa dengan iturand()%i
?RAND_MAX
tidak dibutuhkan. 4. Mengapalong
?t=time(0)
->time(&t)
. 2)n*60/(time(0)-t)
memiliki tanda kurung yang harus -*60
dapat dipindahkan ken+=60*printf
, lalun/=time(0)-t
. 3) Gantib
dengan elemen tambahanw
, gantistrcpy
dengan baca langsung kew
.fgets()
dengangets()
membutuhkan kode tambahan untuk berurusan dengan baris baru dalam kamus; akhirnya ini menjadi lebih pendek.rand()%i
tidak cukup; perhitungan sebenarnya adalah(double)i*rand()/RAND_MAX
. Memindahkan*60
ke printf juga berarti mengubah-4
ke-240
sehingga akhirnya berakhir kerugian. Poin Anda yang lain adalah yang valid, meskipun (saya percaya). Oh, danlong
karena time_t secara tradisional panjang. Hanya karena kita bermain golf bukan berarti kita tidak bisa portabel.4
->240
... Portabilitas dan golf tidak cocok bersama. Tetapi mendefinisikani,t;
(int implisit) tidak apa-apa hinggaMAX_INT
detik (jika Anda tidak menggunakantime(&t)
). Denganrand()
, yang Anda butuhkan adalah10/i
kesempatan, danrand()%i<10
melakukannya.rand()%10>10
, yang memberikannya 100%.rand()%(i+1)>9
lebih baik (tetapi sebaliknya jika%(i+1)
dilakukani++>9?
. Juga pindah*stdin
menjadi yang pertama dan hemat tempat.C # 401
Versi yang sedang berjalan di sini: http://ideone.com/Nt6Id
sumber
Python (
256235)Ini dalam python 2.x, dalam 3.x saya bisa mencukur 4 karakter lagi dengan menggunakan fungsi cetak.
Termasuk baris baru
sumber
z=lambda x:
menjadidef z(x):
.len(x)
dandef z(x):return
5 lagi charaters: /input()
bukannyasys.argv[1].read()
PHP 187 byte
Baris baru telah ditambahkan untuk kejelasan:
Menerima nama file kamus sebagai argumen baris perintah. File kamus harus diakhiri dengan baris baru.
sumber
Scala (
319306304302)sumber