¡Rápido! Escapar del agujero negro!


28

Es el año 87,539,319 y la caminata espacial solitaria ahora es un lugar común, muchas personas viajan al espacio solas, impulsadas por nada más que un jetpack en sus espaldas, programando su curso con una computadora personal y un teclado a medida que avanzan.

Eres una de esas personas; estabas en una hermosa y pacífica caminata espacial, cuando, de repente, ¡te atrapó la gravedad de un agujero negro!

A medida que caes en picado hacia este agujero negro, girando cada vez más rápido hacia adentro, te das cuenta de que tu única posibilidad de supervivencia es transmitir un mensaje de socorro, y esperar que una nave cercana venga a rescatarte.

Entonces, rompes el teclado y comienzas a escribir un programa.

Su programa puede estar en cualquier idioma y debe imprimirse HELP!en stdout (su PC transmite todos los stdout en las profundidades del espacio).

Sin embargo, como estás cerca de un agujero negro, ¡tu teclado se está desgarrando lentamente!

Suponga que está usando un teclado QWERTY como el siguiente y que el agujero negro está a su izquierda;

DISEÑO DE TECLADO QWERTY

Recuerde, el desplazamiento hacia la izquierda y hacia la derecha son dos claves diferentes.

¡Después de cada pulsación de tecla, la fila más a la izquierda de su teclado (teclas cubiertas por la línea roja más a la izquierda) se arranca y se arroja al agujero negro!

Por lo tanto, su primera pulsación de tecla podría ser cualquier tecla del teclado, pero a partir de entonces ninguno de los más a la izquierda Tab , Caps, Shift, Ctrlo `teclas puede ser utilizado, en absoluto . (r-shift y r-ctrl todavía se pueden usar)

Después de la siguiente pulsación de tecla, las teclas 1, Q, A, Zy Altson lanzados al abismo, y no pueden ser utilizadas a partir de entonces. Después de eso, se pierde Space, X, S, W, 2y así sucesivamente.

Obviamente, desea completar su programa lo más rápido posible, para aumentar el tiempo de rescate; por lo tanto, este es el código de golf, ¡y el programa más corto en pulsaciones de teclas gana!

Cada respuesta debe proporcionar una lista de pulsaciones de teclas, por lo tanto, si mi respuesta fue este programa (en el idioma squardibblyack)

!HELP\.

una lista clave podría verse así:

Shift!HELP cambio de liberación \.

longitud: 8

¡Me preocupa que este desafío sea demasiado difícil, pero me encantaría ver el tipo de respuestas enviadas!


13
Estoy rechazando esto porque se siente demasiado limitado para tener mucha creatividad.
isaacg

44
¿Podemos suponer que usar el shell de Python sin printcalificar como STDOUT?
user80551

3
¿Qué pasa si mi teclado tiene un teclado numérico?
mbomb007

44
Esto podría ser un poco mejor con las teclas de flecha.
user80551

66
¿Sigue siendo efectivo el bloqueo de mayúsculas si se ha presionado aunque la tecla ha desaparecido?
jscs

Respuestas:


42

CJam, 11 pulsaciones de teclas

El código es

"HELP*")9-

y la lista clave es

Shift"HELP*") cambio de liberación 9-

y aquí hay una demostración de cómo se ve:

ingrese la descripción de la imagen aquí

y así es como funciona el código:

"HELP*"              "This puts the string HELP* on stack";
       )             "This takes out the last character of the string and puts it
                      on the stack as a character";
        9-           "This simply reduces 9 from the ASCII code of * character
                      present on the stack which makes it an !";
                     "CJam automatically prints everything that is on stack";

Prueba el código aquí


2
¡Usar el asterisco fue bastante inteligente! Nunca había pensado en eso.
theonlygusti

2
Bueno, no pude hacer esto en GolfScript. Es un poco largo La conversión de un entero a ascii es ineficiente. "HELP*")9-[]+''+. No puedo escribir los últimos cuatro.
mbomb007

3
Solo sabía que CJam tendría una respuesta ...
Jerry Jeremiah

99
Entonces, uno de los lenguajes más a prueba de futuro en el mundo es aparentemente CJam.
Fors

55
Mire su dedo cuando golpea E, ¡parece que podría ser llevado al abismo!
Canadian Luke REINSTATE MONICA

3

rs , 10 pulsaciones de teclas (se supone que el usuario está usando Nano)

O editor equivalente donde Shiftno selecciona texto.

Esto no es realmente un lenguaje de programación, pero si sedse puede usar en Code Golf, se rspuede usar.

Right Shift ! Left E Left H Right L P Enter

HELP!

Simplemente reemplaza la cadena vacía con "¡AYUDA!", Imprimiéndola efectivamente en la pantalla. Aproximadamente equivalente al script sed:

s/^/HELP!/

Lo bueno es que rsse coloca automáticamente ^/delante de un patrón de reemplazo donde /no se encuentra el delimitador ( ). Práctico para sangrar código.


Olvidas que eso también Enteres un derrame cerebral. 10 golpes
vapcguy

1
@vapcguy Derecha. Fijo.
kirbyfan64sos

-3

Creo que lo más rápido que esto podría hacerse en cualquier script es Random's 11 con Pyth, ya que cualquier lenguaje requerirá algún carácter, como "p" o una comilla o asterisco o algo así, la palabra HELP!, y eso Ese va a ir rápido, lo que significa presionar teclas adicionales para mover el cursor hacia atrás antes Ede colocarlo H, como lo encontró, y luego hacia adelante nuevamente para Ly P.

Si tiene algo que requiere una palabra de comando, como dispo echo, primero debe hacer un espacio antes de que se rompa , luego, Shifty !luego use la Hometecla para comenzar su palabra y las teclas de flecha como se describe al azar HELP. Pero estará dando vueltas hasta que sea absorbido o pierda las llaves que necesita demasiado rápido para hacer cualquiera de ellas. Solo hay un máximo de 14 caracteres, y eso supone que su último es \o |. Necesitas 10 solo para hacer HELP!:

SHIFT ! HOME E LT ARROW H RT ARROW L P ENTER

La definición "o *o Pconseguirían presionado justo antes de la H. Entonces 11 tiene que ser el más rápido. O 9 si dejamos de lado la exclamación y las mayúsculas y no tenemos un símbolo para escribir.

Pero no, yo, siendo un historiador de internet en el año 87,539,319 y todo, y paranoico de los extraterrestres y la lluvia de meteoritos, y mucho menos el agujero negro, no me conformaría con eso. Antes de salir a caminar por el espacio, estaría preparado, con este artículo que habría encontrado en mi investigación para agradecer eso. Cargaría un archivo de texto que ya tiene "¡AYUDA!" en él, y tengo un programa que podría escribir mi posición de coordenadas usando los últimos datos de satélite de seguimiento que tenemos en ese archivo. Ese programa lo llamaría "hlp.c", por lo que iría:

7 pulsaciones de teclas:

c Home h l p . Enter

Me doy cuenta de que podría acortar mi nombre de archivo, pero nadie quiere transmitir su posición por accidente escribiendo Hy Enter, especialmente si el programa también alerta a las autoridades (¿un poco como llamar al 911 cuando no tiene una emergencia?) vaya con un nombre de archivo de 3 letras, y asumiremos que todavía tenemos que tener extensiones de archivo con un .mínimo de 1 carácter. Además, nombrarlo en hlplugar de helpsignifica que evitamos obtener esas desagradables funciones de ayuda incorporadas cuando estamos a punto de morir en un agujero negro. Me doy cuenta de que incluso podría omitir escribir .csimplemente haciendo h l p Enter, pero de esta manera evito esas cosas desagradables Please supply file extensionoCannot find hlperrores cuando estoy a punto de ser absorbido por un agujero negro. "Basura, basura", después de todo, seguirá siendo un estándar en el futuro.

Entonces mi gráfico se vería así:

ingrese la descripción de la imagen aquí

Y esto también sería fácil de recordar, ya que el único "atraso" es escribir cprimero. El resto es como el nombre del archivo.


2
En primer lugar, si va a ejecutar un programa (que ya tiene el código), puede considerarse como una combinación de varias lagunas estándar . En segundo lugar, este es un código de golf, por lo que debe dar el código real, no una suposición de que el código ya está presente en un archivo llamado . En tercer lugar, debe proporcionar la lista de pulsaciones de teclas para el programa, no ejecutar el programa. Cuarto, programas ...hlp.cC
Optimizer

1
... no corras así. Primero debe compilarlos y ejecutarlos. Por lo tanto, al menos tendrá que hacer help.exe(o help.out) para ejecutar el archivo de código compilado. Y, por último, si está doblando las reglas y haciendo tanto uso de las lagunas, ¿por qué no simplemente llamar a un archivo h.c?
Optimizador

La intención con un .carchivo era que podría ser CSCRIPT, no un código C real que requeriría el compilador. Al h.cintentar escribir el nombre de otro archivo, con solo 1 carácter en el nombre, podría significar que se llama accidentalmente en lugar de otro archivo, ya lo expliqué. Cualquiera que sea el código que se encontraba en el .carchivo, si era Console.Log("HELP!"), Console.WriteLine("HELP!")etc., es en gran medida irrelevante, sobre todo ya que también iba a incluir el código de interfaz con los satélites para obtener una solución de coordenadas - algo que estoy seguro que en el futuro será abierta fuente.
vapcguy

Mi punto con esta publicación también fue indicar que tener un nombre de archivo, o algo fuera de los límites de las reglas, sería la única forma de vencer 11 pulsaciones de teclas, por cierto, ya que toma 10 solo por HELP!, como mencioné antes de Kirby, y solo menos, como 9, si las mayúsculas y el uso de Shift no importaban y no tuviéramos que tener un personaje antes o después HELP, como con el signo de exclamación, o en el caso de Kirby, tener que escribir una clave carácter, como a po *para iniciar el programa.
vapcguy

Y help.exey help.outno funcionaría con el agujero negro de desgarrar de las llaves. El etiempo se habría ido para cuando exesurgiera, y se habrá ido tal intentar escribir out. Se podría escribir la tde out, en primer lugar, a continuación, pulse Inicio, y escriba la HELPparte, pero si se puede mantener la extensión de 1 carácter, ¿por qué no?
vapcguy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.