Masalahku
Di tempat kerja saya saat ini, saya seorang diri (ok dua orang karena saya tidak punya anggota badan) memelihara sekitar 700 laptop. Karena sifat dan frekuensi penggunaannya, saya sering menemukan mereka dikembalikan dengan sedikit kerusakan. Untuk masalah ini, perhatian utama saya adalah ketika laptop dikembalikan dengan keyboard yang rusak atau mati. Ketika tukang memperbaiki perangkat keras keyboard yang rusak ini, menjadi perlu untuk menguji mereka. Tes ini melibatkan penggunaan setiap ... dan ... setiap ... satu ... kunci. Apa yang benar? Masalahnya adalah, kadang-kadang saya lupa apakah saya mengetik kunci atau tidak.
Sebuah solusi?
Tulis program / skrip yang:
- Mengambil input pengguna
- Setelah pengiriman (dengan cara apa pun yang Anda anggap cocok), tentukan apakah setiap tombol ditekan.
- Keluaran ya atau tidak atau cara apa pun untuk menunjukkan bahwa saya berhasil menekan semua tombol atau tidak. (Tunjukkan dalam jawaban Anda dua kemungkinan keluaran jika itu bukan sesuatu yang jelas).
Asumsi:
- Huruf besar, huruf kecil, keduanya? Cara mana pun yang Anda anggap cocok. Asalkan [AZ], [az] atau [A-Za-z]. Sama halnya dengan angka dan simbol lainnya. (Jadi jika =diketik, +tidak masalah). Pilihan Anda jika Anda ingin memasukkan karakter yang digeser atau tidak.
- Anda tidak perlu khawatir tentang tab atau spasi
- Tidak perlu tombol fungsi, CTRL, ALT, Esc atau tombol lain yang tidak menampilkan sesuatu di layar
- Ini mengasumsikan keyboard EN-US dan laptop tidak termasuk numpad.
- OS agnostik, bahasa apa pun yang Anda suka
- Tidak masalah jika kunci telah ditekan beberapa kali (karena ketika penguji malas dan mulai menghancurkan tombol seperti Mortal Kombat)
Berikut adalah set input potensial yang akan mengembalikan true (atau ya, atau "Anda melakukannya!")
`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Pemenang ditentukan oleh jumlah karakter paling sedikit.
Jawaban:
GolfScript, 6 byte
Jika semua karakter ASCII dengan kode antara 33 dan 127 ada, ia mencetak 1. Jika tidak, ia mencetak 0.
Pendekatan ini akan gagal jika input berisi karakter lain (termasuk baris baru akhir), yang telah diizinkan oleh OP dan juga berlaku untuk solusi GolfScript yang ada.
Pemakaian
Bagaimana itu bekerja
sumber
GolfScript, 11
Printable ASCII tidak begitu menarik ...
Ruby, 68
Dengan bendera
-rset
untuk 4 karakter.dan
Python 3, 76
sumber
JavaScript - 62
70Dan sedikit lebih pendek:
sumber
CJam - 9
Itu memeriksa untuk karakter "bergeser" juga (termasuk huruf besar).
Cobalah di http://cjam.aditsu.net/
Catatan: ada karakter yang tidak terlihat (dengan kode 127) setelah tanda kutip.
sumber
PHP
$_GET['i']
adalah inputsumber
$_GET
untuk menyimpan 1 char jika itu dapat diterima.!==false
untuk menyimpan 8 karakter, kemudian menguatkan untuk 4 lebih.register_globals
membuat ini"é$i"
.die(NO)
itu juga mungkin.Python 72:
sumber
Haskell, 41 (dua solusi)
atau (gaya point-free)
Harus memasukkan setidaknya karakter ini:
dalam urutan apa pun, berapa kali. Karakter tambahan diizinkan. Jalankan dalam penerjemah. Harus menekan Enter ketika Anda selesai, tetapi jika Anda menekan Enter sebelum Anda selesai, Anda dapat terus memasukkan karakter, dan tekan Enter lagi. Akan mencetak
True
jika Anda menekan setiap karakter, jika tidak maka tidak akan mencetak apa pun.sumber
Perl, 70 karakter
Pemakaian:
Mencetak 1 jika semua penekanan tombol ada, yang lain tidak mencetak apa pun.
sumber
C, 97 karakter
Perlu memanggil program dengan argumen yang berisi setidaknya surat-surat:
dan dapatkan jawaban 1 (benar). Charset dapat diubah dengan mengubah nilai inisialisasi a.
sumber