Tulis program terpendek yang menunggu setiap tombol dari tombol Standard 101 US Keyboard * ditekan dan kemudian keluar dari tulisan OK!
Setiap kali tombol ditekan, program akan menampilkan pada baris baru jumlah tombol unik yang tidak ditekan yang perlu ditekan sampai semua tombol ditekan setidaknya satu kali. Program harus dapat menguji keyboard 101 dan melihat apakah setiap tombol berfungsi. Jadi, menekan dua kali tombol atau enter harus diizinkan selama ini ditentukan untuk pengguna.
Menekan tombol yang sama dua kali atau lebih tidak boleh mengacaukan kode atau mengubah jumlah tombol yang tersisa yang ditampilkan.
Semua tombol ( Left Shift, Right Shift, Right Control, Esc, Enter, dll) harus dimasukkan.
Tombol keyboard yang sebenarnya penting dalam tantangan ini sehingga dari perspektif program ( A
dan a
, adalah sama dan begitu juga 6
dan ^
).
Kunci kombinasi tidak akan didaftarkan sebagai perintah gabungan dan hanya kunci individual yang akan didaftarkan jika Ctrl+ Alt+ Delditekan yang akan menghitung semua kunci individu dalam kombinasi yang ditekan. Jadi tidak perlu menekan juga huruf kapital jika Anda sudah menekan huruf kecil dan sebaliknya.
Tombol angka pada keypad numerik berbeda dari perspektif program, sehingga tombol tersebut masih perlu ditekan untuk diselesaikan, jika Anda memiliki laptop atau keyboard lain yang tidak memiliki tata letak keyboard US Standard 101 Anda. tidak dapat memenuhi tantangan kecuali Anda memasang keyboard yang kompatibel.
* Keyboard yang memiliki kunci Fn dan kunci laptop tidak akan didukung untuk menjaga tantangan ini bisa dilakukan
Ini adalah daftar tombol untuk tata letak keyboard US Standard 101:
backspace
tab
enter
right shift
right ctrl
right alt
left shift
left ctrl
left alt
print screen
pause/break
caps lock
escape
page up
page down
end
home
left arrow
up arrow
right arrow
down arrow
insert
delete
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
numpad 0
numpad 1
numpad 2
numpad 3
numpad 4
numpad 5
numpad 6
numpad 7
numpad 8
numpad 9
multiply
add
subtract
decimal point
numpad enter
divide
f1
f2
f3
f4
f5
f6
f7
f8
f9
f10
f11
f12
num lock
scroll lock
semi-colon
equal sign
comma
dash
period
forward slash
grave accent
open bracket
back slash
close braket
single quote
space
sumber
Jawaban:
Javascript, 524 byte
Hai, ini adalah posting pertama saya di sini, jadi maafkan saya jika saya masih tidak tahu tentang beberapa hal, saya pikir saya tetap mengikuti aturan.
Tampaknya bermasalah jika saya tidak menggunakan Chrome, tetapi Anda dapat mencobanya di sini . (pastikan untuk membuka konsol sebelum Anda fokus pada jendela contoh, karena fungsi default F12 dicegah)
Gambaran
Program ini membuat larik semua 101 "kode kunci". Beberapa ditulis secara eksplisit, beberapa urutan ditambahkan dengan for for dan beberapa disimpan sebagai string. Saya memiliki array terpisah untuk kode kunci "ganda", karena kontrol kiri dan kanan misalnya memberikan kode kunci yang sama. Mereka juga memberikan lokasi, jadi saya menggabungkan kode kunci dengan lokasi sebagai string dalam array. Dari sana itu hanya eventlistener yang mencegah fungsionalitas keydown default (tidak ingin menyegarkan dengan F5 dalam kasus ini) dan eventlistener terpisah untuk keyup, karena setiap kunci tunggal dapat dideteksi pada keydown, KECUALI UNTUK PRINTSCREEN.
Setelah setiap kejadian keyup kunci yang tersisa (alias panjang array) akan dicatat, serta nama kode kunci (jadi ada perbedaan antara shift kiri dan kanan, dll). Saya tidak yakin apakah itu persyaratan, jika tidak, Anda dapat mengurangi 10 byte dari skor.
Keterbatasan
Saya harap jawaban ini dihargai dan tolong beri tahu saya jika saya melakukan kesalahan.
sumber
Java 8, 607 + 64 = 671 byte
Ini adalah lambda mengambil parameter yang tidak digunakan dan melempar
InterruptedException
. Ini meluncurkan jendela yang, ketika dalam fokus, memotong penekanan tombol standar 101. Hitungan Byte termasuk lambda dan impor yang diperlukan.Anda dapat menemukan kelas tes dengan versi yang tidak diserang di sini .
Gambaran
Saat tombol ditekan, nilai yang mengidentifikasinya secara unik (dalam kebanyakan kasus, kode kunci) disimpan dalam satu set. Beberapa level pertama dari tugas ternary untuk
c
menangani case di mana kode kuncinya ambigu (mis. Tombol "Home", yang bisa berasal dari bagian utama keyboard atau tombol angka) dan case di mana kunci yang sama dapat dipetakan ke beberapa kode kunci (mis. perilaku angka pad dengan Num Lock aktif atau nonaktif). Cabang terakhir menangani kunci "normal" yang kode kuncinya hanya dapat digunakan dalam set. Kode kunci diindeks ke dalam bitmapl
yang menunjukkan apakah kunci tersebut adalah salah satu dari 101 standar.Keterbatasan
Jika tombol apa pun selain standar 101 ditekan, jejak tumpukan dapat dicetak ke kesalahan standar, atau perilaku yang tidak terduga dapat terjadi.
Program ini menggunakan nilai numerik dari konstanta kode kunci secara langsung, dan
KeyEvent
dokumentasi Oracle menunjukkan bahwa nilai-nilai ini dapat berubah seiring waktu.Ucapan Terima Kasih
sumber
f.setVisible(1>0);
dapat di-golf kef.show();
dan()->
bisa di-golfv->
dengan menggunakan parameter yang tidak digunakanVoid null
.JavaScript,
989075 byteJadi ... Saya curiga saya mungkin memikirkan hal-hal di sini, tetapi ini harus bekerja. Biar saya tahu jika saya telah diabaikan apa-apa. Hanya diuji di Chrome.
Cobalah
alert
diganti untuk kewarasan dan pesanan Anda terbalik untuk menyimpan gulir.sumber