Em tempo de execução, continue solicitando uma linha de entrada até que o usuário insira algo (que não seja uma nova linha vazia), ou seja, não apenas pressione Enterou OK. Saída ou resultado não é obrigatório nem proibido.
Pseudo-código 1
myform = new form("GUI")
myform.mytxt = new editfield("")
myform.ok = new button("OK")
repeat
waitfor(myform.ok,"click")
until myform.mytxt.content <> ""
Pseudo-código 2
LET TEXT = ""
WHILE TEXT = "" DO
TEXT = PROMPT("")
ENDWHILE
Exemplo 1
O programa é executado e aparece imediatamente um formulário com um único campo de texto e um OKbotão.
O usuário clica no OKbotão.
Nada acontece.
O usuário cola "olá mundo" no campo de texto e clica no OKbotão.
O programa termina.
Exemplo 2
A função é chamada e exibe imediatamente uma linha em branco e um cursor piscando.
O usuário pressiona Enter.
O cursor desce uma linha.
O usuário pressiona Enter.
O cursor desce uma linha.
O usuário pressiona a PPCGEnter
função retorna.
Respostas:
TI-BASIC, 2 bytes
O TI-BASIC faz isso automaticamente. Uma vez que a entrada é dada, ela será encerrada.
Aqui está um GIF:
Assista a contagem da entertecla no histórico de pressionamentos de teclas. Criado com o TI-SmartView CE e ezgif.com .
fonte
Python 3 , 18 bytes
Experimente online!
fonte
sed, 4
Aguarda uma linha de entrada que tenha 1 ou mais caracteres e sai.
Experimente online . Mas funciona melhor em um shell ativo:
fonte
JavaScript,
372217 bytesExplicação
A
while
palavra-chave inicia owhile
loop. Na condição do loop,!prompt()
solicita entrada e verifica se é fornecida ou não. Se não for fornecido, o corpo do loop é executado e, no nosso caso, está vazio, o intérprete retorna à condição do loop. O mesmo processo acontece repetidamente até o usuário fornecer a entrada.fonte
while(""==prompt(""));
;
, enquanto sua expressão inicial funcionou bem sem;
. Alguma idéia do porquê?;
, você pode salvar o byte :-)Java, 55 bytes
Se bem me lembro (já faz um tempo desde que estou ativo no PPCG), meu programa pode ser apenas uma função.
Isso é específico do sistema; funciona apenas em sistemas em que o caractere de fim de linha é uma única nova linha. Se o caractere de fim de linha for um retorno de carro, substitua
10
por13
. No Windows, isso não funciona, como é o fim de linha no Windows\r\n
.Isso faz uso do fato de que eu posso ler diretamente
System.in
.fonte
\r
, em vez de testar toda a cadeia e, em seguida, encontrar problemas com a existência de 2 caracteres EOL?System.in
vamos fazer diretamente (bem, você pode ler um conjunto de caracteres por vez). Meu corpo de loop (vazio) é executado para cada caractere na entradaHTML5,
3322 bytesExplicação
O
required
atributo no<input>
faz com que o navegador informe ao usuário "este campo é obrigatório" - tipo de mensagem, se ele não digitar um valor. No entanto, quando eles inserem um valor, o valor é enviado para a URL doaction
atributo do<form>
(que no nosso caso é o próprio arquivo atual, pois não especificamos nenhum valor explicitamente).Isso foi testado na versão mais recente do Google Chrome (versão 55.0). Pode funcionar em outros navegadores e versões.
fonte
action=/
pode funcionar em alguns navegadores.action
atributo completamente.action=y.p
não é necessário, pois a maioria dos agentes de usuário enviará para o mesmo local se nãoaction
for especificado<form><input required>
a versão mais recente do Google Chrome e funciona como pretendido. E se você é cético, basta usaraction=#
. Isso economiza 2 bytes.required
atributo! Além disso,#
existe um caminho disponível desde o HTML 1.0, se eu estiver correto. E adicionar nãoaction
ao seu formulário é o mesmo queaction="."
, que é o próprio arquivo.Gelatina , 3 bytes
Não tenho muito o que ver no TIO, receio.
Experimente online!
Como funciona
Este é um programa niládico, o que significa que ele não aceita argumentos de entrada. O argumento implícito e o valor de retorno são 0 neste caso.
¿
(while) é um rápido que exibe dois links da pilha de links: uma condição (Ṇ
) e um corpo.Ṇ
é um átomo monádico: NÃO lógico e plano. Se o valor de retorno anterior for falso (aqui, 0 ou uma sequência vazia), ele retornará 1 e o corpo será chamado.ɠ
é um átomo niládico; ele lê uma linha bruta de STDIN e retorna o resultado.Depois de
ɠ
ler uma linha não-vazia,Ṇ
retorna 0 e interrompemos o loop.fonte
Pitão , 3 bytes
Experimente online!
Traduzido para Python:
fonte
brainfuck , 26 bytes
Experimente online!
fonte
,.
to the end to verify.Perl 5, 8+1 (-p or -n flag) bytes
Takes input from stdin and dies as soon as the regex matches anything except a newline.
fonte
C,
52 bytes,33 bytes, 29 bytes-19 bytes thanks to Justin
-4 bytes thanks to Christoph
10 is equal to '\n' - In case this isn't obvious.
fonte
;
instead of the{}
for the while loop#include<stdio.h>
if you switch towhile(getchar()==10)
:int main(){while(getchar()==10);}
.main(){while(getchar()==10);}
is enough no need for default int.main(){scanf("%s");}
também funcionaria se as linhas somente de espaço puderem contar como vazias.Bash, 51 bytes (39 without "#!/bin/bash")
It's my first time participating in PPCG, so dont be to rude ;D
fonte
#!/bin/bash
[ -z `line` ] && $0
or if the deprecatedline
is not on your system:[ -z `head -n1` ] && $0
. That should either be 20 or 24 bytes.Java,
128126 bytes2 bytes thanks to Kevin Cruijssen.
Try it online!
fonte
while
to afor
and put theScanner s=new Scanner(System.in);
inside it. And change the.equals("")
to.isEmpty()
.while(new java.util.Scanner(System.in).nextLine().isEmpty());
C# (.NET Core), 66 bytes
Try it online!
-6 bytes thanks to raznagul.
fonte
System.Console.ReadLIne
directly and drop theusing
-Statement.while
loop would be the same number of bytes, but methinks a more idiomatic way of writing the code than afor
loop.QBasic 4.5, 15 bytes
Asks for input, then checks if any was given. If not,
RUN
restarts the program.fonte
RUN
. +1. (That rhymes too; RUN and PLUS ONE :) )Ruby, 13 bytes
I wish
gets
took a Regexp argument.fonte
R,
27242322 bytesTakes input from stdin, and repeat as long as input is of length 0. Cut off some bytes due to Jarko Dubbeldam and MickyT. Replaced the
{}
witht
to save another byte.fonte
,''
, since neither input (string or numeric) nor way of terminating was specified in the challenge.while(!sum(scan()^0)){}
work as well?sum()
. Too bad the^0
is need to handle0
as input.sum
, thanks! I've updated the answer.PHP, 18 bytes
fonte
readline()
returns something else than an empty string. Non empty strings evaluate totrue
in php - atleast most of them do. "0" seems to be an exception as I just read in the docs. Well I guess my answer is wrong now.AWK,
811 bytesWait for input. If the number of fields in input is more than 0, exit.
EDIT:
I've just realized that this doesn't work for input containing whitespace characters only. IFS needs to be set to empty string using
-F ""
command line option. Therefore +3 bytes.Try it online!
fonte
NF
with1
. Then you don't need to setIFS
. And grumble you beat me to andAWK
solution.NF
with1
. In that case the program exits given any input, including empty newline.SpecBAS - 34 bytes
Just loops until non-empty string is entered.
fonte
Mathematica,
2620 bytesfonte
For[,Input[]==Null,]
. Works just as well.Haskell,
1917 bytesDefines a function
f
that if it reads the empty line calls itself again. When reading a non-empty line an exception is raised and the recursion is stopped.Edit: @Laikoni replaced the parameter with a pattern match and saved 2 bytes. Thanks!
fonte
f=do""<-getLine;f
Aceto ,
954 bytesr
Leia um valor, negue-o (!
; convertendo implicitamente em um booleano) e espelhe horizontalmente se o valor for verdadeiro (|
).fonte
Java,
666460 bytesMy first Java answer, would love some tips!
fonte
return
e!
..equals("")
==.isEmpty()
. Você pode retornar int em vez de String. OTOH, retorno nulo, mas umwhile(System...)
ou outroif(System...)a();
int a(){..?0:a();}
, salva 3 bytesBraingolf , 8 bytes [não concorrente]
Não competir porque
{
, que lê as informações de STDIN, foi adicionado ao braingolf após a data de publicação deste desafio.Explicação:
fonte
Carvão , 4 bytes
Explicação
fonte
05AB1E , 5 bytes
Explicação:
Experimente online!
fonte
PowerShell, 20 bytes
executa um loop for,
read-host
solicita entradase o host de leitura não retornar nada que pareça falso, então invertemos isso
!(...)
e o usamos como verificação de final do loop.muito menor do que qualquer
do{$a=read-host}while($a-eq"")
solução de tipo envolvendo variáveis.fonte
Rápido, 22 bytes
fonte
CJam , 5 bytes
Experimente online! (O TIO realmente não mostra o comportamento adequado)
Explicação
fonte