Costumo esquecer o que queria dizer quando o professor me chama para falar. Você pode me fazer uma ferramenta para resolver isso?
Requisitos:
- O programa deve executar o loop da seguinte maneira:
- Primeiro, considere a entrada
- Se a entrada estiver vazia, imprima a última pergunta armazenada.
- Caso contrário, armazene a entrada como uma pergunta.
Notas:
- A entrada nunca estará vazia se não houver perguntas armazenadas.
Esclarecimento: O programa não precisa armazenar várias perguntas. Originalmente, eu queria que ele armazenasse vários, mas mudei depois que muitas pessoas entenderam mal a pergunta.
Lembre-se de que isso é código-golfe , portanto o código com o menor número de bytes vence.
Respostas:
Perl,
131714 +1 = 15 bytes+1 para a
-n
bandeira (salvou 4 bytes graças a @Dada)Desde que a entrada não seja igual ao retorno de carro, ela armazenará a entrada
$;
. Se for igual ao retorno do carro, ele imprime o que já está em$;
.Isso pressupõe que todas as entradas podem ser caracterizadas como perguntas, mesmo que gramaticalmente, elas não sejam.
fonte
ne
vez deeq
(no momento isso não funciona)././
vez de$/ne$_
;-)05AB1E,
121110 bytesObrigado @daHugLenny e @Adnan por 1 byte!
Obrigado @Emigna por 1 byte!
fonte
®
e©
porX
eU
, não precisará da barra invertida.Haskell, 49 bytes
Como funciona: comece com
g ""
. O parâmetros
da funçãog
é a questão armazenada.g
lê a próxima linha de stdin e passa (e também s) para#
. Se a linha estiver vazia,#
imprime a loja e ligag
novamente. Se a linha não estiver vazia,g
é chamada com a linha como a nova loja.fonte
JavaScript,
36.3431 bytesUm loop infinito continua pedindo entrada e a armazena
b
. Se a entrada não estiver vazia, será armazenadaa
, caso contrário, o valor dea
será impresso.Economizou 2 bytes graças a @ETHproductions
fonte
1
b?a=b:alert(a)
for(a=0;;b?a=b:alert(a))b=prompt()
a=0
também não é necessário. Como a entrada só pode estar vazia se houver perguntas armazenadas,a
não será referenciada se não tiver sido atribuída.Mathematica, 44 bytes
Programa completo. O caractere Unicode é U + 221E INFINITY para
\[Infinity]
.fonte
Python 3, 31 bytes
Experimente!
-1 byte graças ao Flp.Tkc
fonte
reticular, 12 bytes
Experimente online!
Explicação
fonte
Pyke, 6 bytes
Experimente aqui!
fonte
Python3 - 49 bytes
fonte
NameError: name 'b' is not defined
b=input()
. Obrigado!Python 3, 34 bytes
fonte
Python 3, 60 bytes
fonte
CMD, 37 bytes
Infelizmente
set
não leva entrada vazia :(em um nome de arquivo
c.cmd
ouem qualquer arquivo. Trabalhando (use
-
como vazio):fonte
set/p
nunca tornará uma variável vazia; portanto, no mínimo, você precisaset a=
na primeira linha; Também acho que você quer dizerset b=%a%
.APLX, 19 bytes
Explicação:
fonte
C,
7363 bytesUsa apenas 1 buffer e um único caractere para manipular a lógica. Se o usuário não inserir nada, apenas o primeiro caractere no buffer será substituído
'\0'
, nesse caso, será restauradox
e impresso; caso contrário, copie a primeira letrax
para uso posterior.Código anterior:
fonte
Java 7,
189187178 bytes ..-9 bytes usando
new java.util.Scanner
diretamente, graças a @cliffroot .Provavelmente a primeira vez que usei um
do-while
em um desafio de codegolf.Quando funções são permitidas em vez de programas, são 135 bytes (ainda muitas vezes mais do que a maioria das outras respostas ..)
fonte
void c(){for(String s="",x;(x=new java.util.Scanner(System.in).nextLine())!=null;)if(x.isEmpty())System.out.println(s);else s=x;}
for
ou emwhile
algum lugar? .. O que é(x=new java.util.Scanner(System.in).nextLine())!=null;)
?void c(){for(String s="",x;for(x=new java.util.Scanner(System.in).nextLine())!=null;)if(x.isEmpty())System.out.println(s);else s=x;}
e é realmente 1 byte mais tempo, então a versão comdo-while
é -void c(){String s="",x;do{x=new java.util.Scanner(System.in).nextLine();if(x.isEmpty())System.out.println(s);else s=x;}while(1>0);}
sed, 10 bytes
Explicação:
É bom ver uma linguagem exotérica (ou seja, "não esotérica") ligada a algumas das línguas do golfe!
fonte