En tiempo de ejecución, siga solicitando una línea de entrada hasta que el usuario ingrese algo (que no sea una nueva línea vacía), es decir, no solo presione Entero OK. La salida o el resultado no es obligatorio ni está prohibido
Pseudocódigo 1
myform = new form("GUI")
myform.mytxt = new editfield("")
myform.ok = new button("OK")
repeat
waitfor(myform.ok,"click")
until myform.mytxt.content <> ""
Pseudocódigo 2
LET TEXT = ""
WHILE TEXT = "" DO
TEXT = PROMPT("")
ENDWHILE
Ejemplo 1
El programa se ejecuta e inmediatamente aparece un formulario con un solo campo de texto y un OKbotón.
El usuario hace clic en el OKbotón.
No pasa nada.
El usuario pega "hola mundo" en el campo de texto y hace clic en el OKbotón.
El programa termina.
Ejemplo 2
Se llama a la función e inmediatamente muestra una línea en blanco y un cursor parpadeante.
El usuario presiona Enter.
El cursor se mueve una línea hacia abajo.
El usuario presiona Enter.
El cursor se mueve una línea hacia abajo.
El usuario presiona La PPCGEnter
función vuelve.
Respuestas:
TI-BASIC, 2 bytes
TI-BASIC hace esto automáticamente. Una vez que se da entrada, se cerrará.
Aquí hay un GIF:
Mire el recuento de la entertecla en el historial de pulsaciones de teclas. Creado con TI-SmartView CE y ezgif.com .
fuente
Python 3 , 18 bytes
Pruébalo en línea!
fuente
sed, 4
Espera una línea de entrada que tiene 1 o más caracteres, luego se cierra.
Pruébalo en línea . Pero funciona mejor en un shell vivo:
fuente
JavaScript,
372217 bytesExplicación
La
while
palabra clave inicia elwhile
ciclo. En la condición del bucle,!prompt()
pide entrada y verifica si se da o no. Si no se proporciona, se ejecuta el cuerpo del bucle, que en nuestro caso está vacío, entonces el intérprete vuelve a la condición del bucle. El mismo proceso ocurre una y otra vez hasta que el usuario da la entrada.fuente
while(""==prompt(""));
;
, mientras que su expresión inicial funcionó bien sin ella;
. ¿Alguna idea de por qué?;
, puede guardar ese byte :-)Java, 55 bytes
Si recuerdo correctamente (ha pasado un tiempo desde que he estado activo en PPCG), mi programa puede ser simplemente una función.
Esto es específico del sistema; solo funciona en sistemas donde el carácter de fin de línea es una nueva línea. Si el carácter de fin de línea es en cambio un retorno de carro, reemplace
10
con13
. En Windows, esto no funciona, como lo es el final de línea en Windows\r\n
.Esto hace uso del hecho de que puedo leer directamente
System.in
.fuente
\r
, en lugar de probar la cadena completa y luego tener problemas con 2 caracteres EOL?System.in
permite hacer directamente (bueno, puedes leer una serie de caracteres a la vez). Mi cuerpo de bucle (vacío) se ejecuta para cada carácter en la entradaHTML5,
3322 bytesExplicación
los
required
atributo en<input>
hace que el navegador informe al usuario "este campo es obligatorio" -sort-of-message, si no ingresan un valor. Sin embargo, cuando ingresan un valor, el valor se envía a la URL delaction
atributo del<form>
(que en nuestro caso es el archivo actual, ya que no hemos especificado ningún valor explícitamente).Esto se probó en la última versión de Google Chrome (versión 55.0). Puede funcionar en otros navegadores y versiones.
fuente
action=/
podría funcionar en algunos navegadores.action
atributo por completo.action=y.p
no es necesario, ya que la mayoría de los Agentes de usuarios se enviarán a la misma ubicación si noaction
se especifica<form><input required>
la última versión de Google Chrome y funciona según lo previsto. Y si eres escéptico, solo úsaloaction=#
. Eso ahorra 2 bytes.required
atributo! Además,#
hay una ruta disponible desde HTML 1.0, si estoy en lo correcto. Y agregar noaction
a su formulario es lo mismo queaction="."
, que es el archivo en sí.Jalea , 3 bytes
No hay mucho que ver en TIO, me temo.
Pruébalo en línea!
Cómo funciona
Este es un programa niládico, lo que significa que no requiere argumentos de entrada. El argumento implícito y el valor de retorno son ambos 0 en este caso.
¿
(while) es un rápido que muestra dos enlaces de la pila de enlaces: una condición (Ṇ
) y un cuerpo.Ṇ
es un átomo monádico: plano lógico NO. Si el valor de retorno anterior es falso (aquí, 0 o una cadena vacía), devuelve 1 y se llama al cuerpo.ɠ
es un átomo niládico; lee una línea sin formato de STDIN y devuelve el resultado.Una vez que
ɠ
lee una línea no vacía,Ṇ
devuelve 0 y salimos del bucle.fuente
Pyth , 3 bytes
Pruébalo en línea!
Traducido a Python:
fuente
brainfuck , 26 bytes
Pruébalo en línea!
fuente
,.
hasta el final para verificar.Perl 5, 8 + 1 (-p o -n bandera) bytes
Toma datos de stdin y muere tan pronto como la expresión regular coincide con cualquier cosa, excepto una nueva línea.
fuente
C,
52 bytes,33 bytes, 29 bytes-19 bytes gracias a Justin
-4 bytes gracias a Christoph
10 es igual a '\ n' - En caso de que esto no sea obvio.
fuente
;
lugar del{}
bucle for#include<stdio.h>
si se cambia awhile(getchar()==10)
:int main(){while(getchar()==10);}
.main(){while(getchar()==10);}
es suficiente sin necesidad de int por defecto.main(){scanf("%s");}
también funcionaría si las líneas de solo espacio pueden contar como vacías.Bash, 51 bytes (39 sin "#! / Bin / bash")
Es la primera vez que participo en PPCG, así que no seas grosero; D
fuente
#!/bin/bash
[ -z `line` ] && $0
o si el desusoline
no está en el sistema:[ -z `head -n1` ] && $0
. Eso debería ser 20 o 24 bytes.Java ,
128126 bytes2 bytes gracias a Kevin Cruijssen.
Pruébalo en línea!
fuente
while
a afor
y coloque elScanner s=new Scanner(System.in);
interior. Y cambia el.equals("")
a.isEmpty()
.while(new java.util.Scanner(System.in).nextLine().isEmpty());
C # (.NET Core) , 66 bytes
Pruébalo en línea!
-6 bytes gracias a raznagul.
fuente
System.Console.ReadLIne
directamente y soltando lausing
Declaración.while
bucle sería el mismo número de bytes, pero creo que es una forma más idiomática de escribir el código que unfor
bucle.QBasic 4.5, 15 bytes
Pide entrada, luego verifica si se le dio alguna. Si no,
RUN
reinicia el programa.fuente
RUN
. +1. (Eso también rima; CORRE y MÁS UNO :))Rubí, 13 bytes
Desearía
gets
tomar un argumento Regexp.fuente
R,
27242322 bytesToma la entrada de stdin y repite siempre que la entrada sea de longitud 0. Corte algunos bytes debido a Jarko Dubbeldam y MickyT. Reemplazado
{}
cont
para guardar otro byte.fuente
,''
, ya que ni la entrada (cadena o numérica) ni la forma de terminar se especificaron en el desafío.while(!sum(scan()^0)){}
funciona tan bien?sum()
. Lástima que la^0
necesidad de manejar0
como entrada.sum
, gracias! He actualizado la respuesta.PHP, 18 bytes
fuente
readline()
devuelve algo más que una cadena vacía. Las cadenas no vacías evalúantrue
en php, al menos la mayoría de ellas lo hacen. "0" parece ser una excepción, ya que acabo de leer en los documentos. Bueno, supongo que mi respuesta es incorrecta ahora.AWK ,
811 bytesEsperar entrada. Si el número de campos en la entrada es mayor que 0, salga.
EDITAR:
Me acabo de dar cuenta de que esto no funciona solo para la entrada que contiene caracteres de espacio en blanco. IFS debe establecerse en una cadena vacía usando
-F ""
opción de línea de comando. Por lo tanto +3 bytes.Pruébalo en línea!
fuente
NF
con1
. Entonces no necesitas configurarIFS
. Y refunfuñar me golpeaste yAWK
solución.NF
con1
. En ese caso, el programa sale dado cualquier entrada, incluida la nueva línea vacía.SpecBAS - 34 bytes
Simplemente repite hasta que se ingrese una cadena no vacía.
fuente
Mathematica,
2620 bytesfuente
For[,Input[]==Null,]
. Funciona igual de bien.Haskell,
1917 bytesDefine una función
f
que si lee la línea vacía se llama a sí misma nuevamente. Al leer una línea no vacía, se genera una excepción y se detiene la recursividad.Editar: @Laikoni reemplazó el parámetro con una coincidencia de patrón y guardó 2 bytes. ¡Gracias!
fuente
f=do""<-getLine;f
Aceto ,
954 bytesr
ead un valor, lo niegan (!
; implícitamente se convierte en un booleano) y reflejan horizontalmente si el valor es verdadero (|
).fuente
Java,
666460 bytesMi primera respuesta de Java, me encantaría algunos consejos!
fuente
return
y!
..equals("")
==.isEmpty()
. Puede devolver int en lugar de String. OTOH, regresa vacío perowhile(System...)
o bienif(System...)a();
int a(){..?0:a();}
, ahorra 3 bytesBraingolf , 8 bytes [no competidor]
No compite porque
{
, que lee los comentarios de STDIN, se agregó a braingolf después de la fecha de publicación de este desafío.Explicación:
fuente
Carbón de leña , 4 bytes
Explicación
fuente
05AB1E , 5 bytes
Explicación:
Pruébalo en línea!
fuente
PowerShell, 20 bytes
ejecuta un bucle for
read-host
solicita entradasi read-host no devuelve nada, se evalúa como falso, por lo que lo invertimos
!(...)
y lo usamos como la comprobación de finalización del bucle.mucho más corto que cualquier
do{$a=read-host}while($a-eq"")
tipo de solución que involucra variables.fuente
Rápido, 22 bytes
fuente
CJam , 5 bytes
Pruébalo en línea! (TIO realmente no muestra el comportamiento adecuado)
Explicación
fuente