Escriba el programa más corto que espere a que se presione cada tecla de un teclado estándar de EE. UU. * Y luego salga de la escritura.
Cada vez que se presiona una tecla, el programa muestra en una nueva línea el número restante de teclas únicas no presionadas que deben presionarse hasta que se presionen todas las teclas al menos una vez. El programa debería poder probar un teclado 101 y ver si cada tecla funciona. Por lo tanto, se permite presionar dos veces una tecla o enter siempre que esto se especifique al usuario.
Presionar la misma tecla dos veces o más no debe interrumpir el código ni cambiar el número de teclas restantes sin presionar.
Todas las teclas ( Left Shift, Right Shift, Right Control, Esc, Enter, etc.) deben ser incluidos.
Las teclas del teclado son importantes en este desafío, por lo que desde la perspectiva del programa ( A
y a
, son las mismas y también lo son 6
y ^
).
Las teclas combinadas no se registrarán como un comando combinado y solo se registrarán las teclas individuales si se presiona Ctrl+ Alt+ Delque contará para todas las teclas individuales en la combinación que se está presionando. Por lo tanto, no es necesario presionar también las mayúsculas si ya presionó las minúsculas y viceversa.
Teclas numéricas en el teclado numérico son diferentes desde el punto de vista del programa, por lo que todavía se necesitan para ser presionado para que el programa termine, si usted tiene una computadora portátil o cualquier otro teclado que no tiene el 101 teclado estándar de EE.UU. Disposición del que no puede cumplir el desafío a menos que conecte un teclado compatible.
* Los teclados con tecla Fn y tecla portátil no serán compatibles para mantener este desafío factible
Esta es la lista de teclas para una distribución de teclado 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
fuente
Respuestas:
Javascript, 524 bytes
Hola, esta es mi primera publicación aquí, así que discúlpeme si todavía soy ignorante en algunas cosas, creo que me mantuve dentro de las reglas.
Parece defectuoso si no uso Chrome, pero puedes probarlo aquí . (asegúrese de abrir la consola antes de centrarse en la ventana de ejemplo, ya que se evita la funcionalidad predeterminada de F12)
Visión general
El programa crea una matriz de todos los 101 "códigos clave". Algunas se escriben explícitamente, algunas secuencias se agregan con un bucle for y otras se almacenan como cadenas. Tengo una matriz separada para los códigos de teclas "dobles", ya que el control izquierdo y derecho, por ejemplo, proporciona el mismo código clave. Sin embargo, también proporcionan una ubicación, por lo que combino los códigos clave con las ubicaciones como cadenas en la matriz. A partir de ahí, solo se trata de un detector de eventos que impide la funcionalidad de teclas predeterminadas (no quiera actualizar con F5 en este caso) y un detector de eventos separado para la activación de teclas, porque cada tecla se puede detectar al presionar la tecla, EXCEPTO PARA PANTALLA DE IMPRESIÓN.
Después de cada evento de keyup, se registran las claves restantes (es decir, la longitud de la matriz), así como el nombre del código clave (por lo que existe la distinción entre desplazamiento a la izquierda y derecha, etc.). No estaba seguro de si eso era un requisito, si no, puede restar otros 10 bytes de la puntuación.
Limitaciones
Espero que esta respuesta sea apreciada y por favor avíseme si he hecho algo mal.
fuente
Java 8, 607 + 64 = 671 bytes
Esta es una lambda que toma un parámetro no utilizado y lo lanza
InterruptedException
. Lanza una ventana que, cuando está enfocada, intercepta las pulsaciones de las 101 teclas estándar. El conteo de bytes incluye lambda y las importaciones requeridas.Puede encontrar una clase de prueba con una versión sin golf aquí .
Visión general
A medida que se presionan las teclas, los valores que los identifican de forma exclusiva (en la mayoría de los casos, el código de la tecla) se almacenan en un conjunto. Los primeros niveles de la asignación ternaria para
c
manejar casos en los que el código de la tecla es ambiguo (por ejemplo, la tecla "Inicio", que podría provenir de la parte principal del teclado o el teclado numérico) y los casos en que la misma tecla se puede asignar a múltiples códigos clave (por ejemplo, comportamiento del teclado numérico con Num Lock activado o desactivado). La rama final maneja las claves "normales" cuyo código de clave simplemente se puede utilizar en el conjunto. El código de clave se indexa en el mapa de bitsl
que indica si la clave es una de las 101 estándar.Limitaciones
Si se presiona cualquier tecla que no sea el estándar 101, se puede imprimir un seguimiento de la pila con un error estándar, o puede ocurrir un comportamiento inesperado.
El programa utiliza los valores numéricos de las constantes del código clave directamente, y la
KeyEvent
documentación de Oracle indica que estos valores pueden cambiar con el tiempo.Expresiones de gratitud
fuente
f.setVisible(1>0);
se puede jugar golff.show();
y()->
golfv->
usando unVoid null
parámetro no utilizado .JavaScript,
989075 bytesEntonces ... sospecho que podría estar pensando menos en las cosas aquí, pero esto debería funcionar. Déjame saber si yo he pasado por alto nada. Solo probado en Chrome.
Intentalo
alert
anulado por su cordura y orden invertido para guardar el desplazamiento.fuente