Su tarea es crear un programa que mostrará el siguiente texto, espera a que el usuario pulse una tecla (que está bien hacer caso omiso de teclas como ctrl
, alt
, caps lock
, etc, siempre y cuando teclas como letters
, numbers
, symbols
, y enter
no son ignorados), y luego terminar el programa:
Press any key to continue...
Se permiten nuevas líneas al final. El programa debe salir inmediatamente después de presionar una tecla. Además, el programa debe ser bastante portátil (es decir, sin encabezados o módulos específicos del sistema operativo, se ejecuta fuera de un IDE, etc.).
La solicitud debe ser exactamente como se muestra arriba, a menos que no se pueda evitar una nueva línea final.
Este es el código de golf , por lo que gana la respuesta más corta en bytes. Esta es también mi primera pregunta de código de golf, así que me disculpo si no conozco las reglas sobre PPCG.
PAUSE
sería una respuesta válida (los puntos suspensivos se extienden de...
a. . .
)?pause
funciones del lenguaje son probablemente insensibles a teclas como Caps-Lock o Control (presionadas por sí mismas). Tal vez debería aclarar si se permite que el programa no note esas clavesRespuestas:
SmallBasic,
1817 bytes17 bytes
18 bytes
fuente
TextWindow.Show()
? Basado en este sitio que debería tener el mismo efecto.Lote, 46 bytes
Porque
pause
la salida contiene un espacio antes de cada uno.
.fuente
x
,? Luegox
se crearía un archivo que contiene el textoPress any key to continue . . .
. Ahorra 2 bytes, pero no estoy seguro de si eso va en contra de este desafío o alguna laguna estándar.@choice /n /m Press any key to continue...
también fue posible hace algunas décadas.choice
es equivalente achoice /c SN
(parasim
(sí) ynão
(no) en portugués).HTML + JavaScript (ES6), 36 + 25 = 61 bytes
Realmente no puede salir de un programa JavaScript, por lo que borrar la página web es lo mejor que se me ocurre.
HTML + JavaScript (ES6), 33 + 28 = 61 bytes
Solución alternativa sugerida por @LarsW que redirige a
about:blank
.HTML / JavaScript, 60 bytes
Otra solución increíble de @Ismael Miguel que no usa JS independiente. ¡1 byte guardado!
HTML + JavaScript (ES6), 26 + 28 = 54 bytes
Otra solución más de @George Reith haciendo uso de documentos escritos.
HTML + JavaScript (ES7), 23 + 28 = 51 bytes
Mismo programa que utiliza el operador de enlace ES7 propuesto :
Como la mayoría de estas soluciones no son mías, ¡haz una cortesía y vota en los comentarios!
fuente
<html onkeyup=this.innerHTML=''>Press any key to continue...
<- 60 bytes. Pruébelo en jsfiddle.net/xhb69401 (funciona con ambos<html>
y<body>
)onkeyup=_=>document.open()
conPress any key to continue...
para un gran total de 54 bytes.onkeyup=::document.open
.MATL, 35 bytes
Explicación
fuente
Y.
tampoco. Tal vez el OP debería aclarar. Claves como Control y Bloqueo de mayúsculas fallarán en la mayoría de las solucionesTI-Basic, 55 bytes
Básicamente, se repite hasta que se presiona una tecla. Lástima que las letras minúsculas sean de dos bytes cada una en TI-Basic ...
PD: Vea el comentario de @GoldenRatio para obtener una explicación de cómo funciona esto. Es genial!
fuente
:Disp "Press any
(no olvide: en su código, cuenta) yDisp "key to continuesin(
(El pecado obliga a ... en 1 byte a compensar la nueva línea y disp, y esto ahorra un espacio entre cualquiera y la tecla)getKey
was 2 bytes when it's actually 1. I suppose withText(
orOutput(
you could fit it all on one line. But, your suggestion is better. I didn't think about using the implicit ellipsis at the end of a line. Thanks again, I'll edit that now.Disp
over two lines or not (but, it is not always this way).Bash,
464342 bytesSaved 1 byte thanks to @DigitalTrauma
Uses the
read
built-in.-r
makes sure it doesn't allow the user to input escapes.-n 1
allows just one character.-p
is the promptfuente
-n 1
. Sin embargo, funciona sin presionar enter para mí (v3.2.57) y en mi máquina debain (v4.3.30)-rn1
saves 1 byteHaskell,
5150 bytes (Thanks @villou24)Try it online!
fuente
getChar
instead.putStr
and the string.Octave / MATLAB, 42 bytes
fuente
QBasic ( QB64 ), 37 (42?) Bytes
Desafortunadamente, el mensaje de fin de programa incorporado de QBasic no tiene puntos suspensivos, por lo que tendremos que imprimirlo nosotros mismos:
(
SLEEP
sin una discusión espera hasta que se presione una tecla).Este código hace lo que la pregunta literalmente pide, pero no parece que se ajuste al espíritu de la pregunta porque, por supuesto, QBasic muestra "Presione cualquier tecla para continuar" y espera presionar una tecla antes de regresar al IDE. Aquí hay uno que va directamente al IDE, para +5 bytes:
STOP
es una declaración de depuración En QBasic normal, establece un punto de interrupción: la ejecución se detiene y volvemos al IDE, pero la ejecución se puede reanudar nuevamente con F5. No está claro si eso contaría como el programa "saliendo". Sin embargo, estoy usando el emulador QB64, que no puede hacer puntos de interrupción. Al encontrarseSTOP
, simplemente se detiene, regresando directamente al IDE sin el mensaje redundante "Presione cualquier tecla".fuente
LOCATE
para imprimir sólo los puntos después de ella, pero QBasic borra toda la fila inferior cuando se imprime este mensaje ...Procesamiento,
8981 bytesExplicación
Esto es necesario ya que estoy usando más de una función en mi programa. Cualquier cosa dentro
setup()
se llama, en este caso, la cadena"Press any key to continue..."
.Comprueba si
key
(key
siempre contendrá el valor int de la última tecla presionada) es mayor que0
(es decir, no es un byte nulo). Si se cumple la condición, el programa se cierra.draw()
garantiza que el programa siempre seguirá buscando una clave en lugar de detenerse una vez que se inicie el programa.(Eso se siente cuando un incorporado en un lenguaje similar a Java todavía es detallado ...)
fuente
void steup(){...}
porstatic{...}
Pascal,
7565 bytesEsto se probó con el compilador Free Pascal, versión 3.0.0.
Puede funcionar con TurboPascal 7 o más reciente.
Lamentablemente, no puedo reemplazar
readkey
conreadln
ya que el desafío requiere que cualquier ser aceptado clave.He probado este código en http://rextester.com/l/pascal_online_compiler , con y sin proporcionar una entrada.
Como se esperaba, el programa finaliza después de 10 segundos, ya que se encuentra esperando una pulsación de tecla que nunca sucede.
Gracias a @manatwork por guardarme 10 bytes al demostrarme que estoy equivocado y mostrar que no necesito el
program _;
.fuente
program
palabras clave. (En realidad nunca me encontré tan antigua aplicación que lo hizo.)program
y se quejó. Además, a veces uso TurboPascal. Ese requiere (aviso: requiere ) elprogram
allí. Si conoce algún lugar donde pueda probar dónde se ejecuta sin elprogram
, lo eliminaré. Odio tenerlo allí. Y esouses Crt;
.program;
lugar de eliminar ese bit. Gracias por alertarme de eso.Scratch, 81 bytes
( Enlace de Scratchblocks )
Si desea que se detenga todo el programa cuando presionó una tecla (incluidos otros hilos) tendría que agregar un
stop all
. Si desea deshacerse del cuadro de diálogo say, necesita unsay
bloque vacío (tambiénstop all
funciona).¡Es conveniente que Scratch tenga algo incorporado para esto!
fuente
Bash
484442 bytes@ mame98 Gracias por guardar 4 bytes.
@RaisingAgent Gracias por guardar 2 bytes.
fuente
read -srn1 -p".."
y eliminando el último espacio en la cita de solicitud. Además, no estoy seguro si necesita la bandera 's'_
&-s
R, 56 bytes
Esto funciona en terminales Linux y OSX.
fuente
Ruby (2.3) (+ Lote),
5255545346 bytesAhora 46 bytes gracias a Alexis Andersen.
Nota: Probado en Windows, podría no funcionar si no hay un
pause
comando.Explicación
Puts
el texto requerido:Fin de la linea:
Ejecute el
pause
comando Batch y la salida de tubería anul
:fuente
pause>nul
` o incluso más corto, solo use gets (además, no hay una buena manera de incluir un backtick en un bloque de código en un comentario)gets
espera la entrada, ¿y no cualquier tecla?Java, 127 bytes
Nota: la consola debe configurarse en modo sin formato para que esto funcione.
fuente
Also, the program must be fairly portable (i.e no OS-specific headers or modules, runs outside of an IDE, etc.)
si sigue ese enlace SO, no hay una manera independiente del SO para hacer esto. Es decir, la respuesta que vinculó es tan válida como esta.SmileBASIC, 52 bytes
fuente
Python 2, 110 bytes
fuente
Mathematica, 62 bytes
Explicación
fuente
SmileBASIC, 55 bytes
Explicado:
fuente
WHILE""==INKEY$()WEND
es más pequeñoPython 2/3 POSIX, 85 bytes
fuente
Python 3, 65 bytes
Requiere la versión de Windows de Python.
msvcrt.getch () no espera a que se presione la tecla Intro como input (), devuelve la primera tecla presionada.
Documentos de Python para msvcrt.getch (): https://docs.python.org/3/library/msvcrt.html#msvcrt.getch
Gracias a @Fliptack por guardar algunos bytes
fuente
import msvcrt
lugarfrom msvcrt import*
parece ser 1 byte más cortoNode.js,
10210199 bytesfuente
with
: pastebin.com/BhrAyq2Kwith
me ha ahorrado bytes (o bytes)stdout.write`Press any key to continue...`
guardaré 2 bytes en ES6.process.stdout.write
no realiza conversiones implícitas a la cadena (solo errores).Sinclair ZX81 / Timex TS1000 BASIC: Método 1 aproximadamente 41 bytes
Método 2 aproximadamente 38 BYTES
Prefiero el método 1 como en el ZX81, hay un parpadeo de la pantalla cuando
PAUSE
se llama, y si lo desea el tiempo suficiente (siempre que el ZX81 no se sobrecaliente ni se bloquee), la pausa finalmente llegará a su fin, mientras que el método 1 está bloqueado un bucle infinito hasta que se presiona una tecla y no parpadea la pantalla.Calcularé la cantidad correcta de bytes que se usarán más adelante cuando tenga el bit BASIC correcto que me dirá. Por cierto, usar VAL "x" en lugar del número ahorra RAM valiosa en un ZX81 (creo que esto también es lo mismo para el ZX Spectrum).
fuente
1 PRINT "Press any key to continue...": PAUSE 4e4
PAUSE 0
hace una pausa para siempre.PAUSE 0
en ZX81 BASIC no se detiene para siempre.Perl 5, 79 bytes
Usado como:
No hay premios, por supuesto. Estoy seguro de que alguna persona Perl tendrá una mejor manera.
(89 bytes si la invocación del intérprete también debe incluirse en el recuento)
fuente
system
en su bytecount, así que no sé a qué te referías con ese comentario.$|=1
no es necesario, tiene un espacio despuésprint
, puede colocar el paréntesis alrededor de los argumentosread
, puede usar backticks en lugar del sistema y, finalmente,print
devuelve 1, por lo que puede usarlo en lugar de el literal1
en la llamada aread
. Entonces, al final, obtenemos:perl -e '`stty cbreak`;read STDIN,$a,print"Press any key to continue..."'
say
, aunque creo que este enfoque no cumple con el requisito "portátil". La mejor solución portátil que puedo encontrar esperl -MTerm::ReadKey -E'say"Press any key to continue...";ReadMode 3;ReadKey'
(52 bytes + 16 bytes para-MTerm::ReadKey<space>
). Tenga cuidado, esto arruinará su terminal a menos que restaure el modo de lectura al final conReadMode 1
.say
, tiendo a no usarlo más (estoy de acuerdo principalmente con esta meta publicación). Ahora de nuevo a un código corto,IO::Prompt
será más corto queTerm::ReadKey
(40 + 13 = 53 bytes):perl -MIO::Prompt -e 'prompt"Press any key to continue... ",-1'
. Y como sucede, es aún más corto de lo que sugerí en mi comentario anterior.-E
argumento. Sin embargo, la última vez que lo comprobé, la respuesta de JB no había sido cuestionada durante cuatro años, así que eso es lo que he seguido. Quizás necesito volver a visitarlo nuevamente. En cuanto a IO :: Aviso, ¡buen hallazgo! Aunque no funciona en mi Strawberry 5.20.2 en Windows, mientras que Term :: ReadKey sí lo hace.PHP, 73 bytes
Ejecútelo en el shell interactivo de PHP (
php -a
)fuente
C #, 101 bytes
Probado en Linux, debe ejecutarse en cualquier sistema que tenga las bibliotecas .NET y Common Language Runtime.
Programa sin golf:
CTRL, ALT, SHIFT se ignoran. La tecla presionada se repetirá en la pantalla si se puede imprimir.
El eco se puede deshabilitar reemplazando C.Read () con C.ReadKey (0 <1) a un costo de 6 bytes más.
fuente
8vo , 47 bytes
Este programa ignora teclas como ctrl, alt, bloqueo de mayúsculas. Se cierra con teclas como letras, números, símbolos e ingresar.
Explicación
fuente
cr
C #, 29 bytes
No estoy seguro de si esto se considera válido porque imprime:
Pero hay una respuesta de Batch que también imprime esto.
fuente
Adelante (gforth), 39 bytes
(Sí, ya existe una octava solución, pero esta es más corta)
fuente