Este é um desafio muito simples.
A linguagem da piada InterpretMe consiste em um comando; *
, o que faz com que o programa receba a entrada de um programa InterpretMe e o execute.
Um programa InterpretMe interpretará quantos programas InterpretMe houver *
na entrada.
Seu objetivo é criar um programa que interprete o InterpretMe no menor número de bytes possível.
Entrada
A entrada consistirá em seqüências ASCII de uma linha, sequências unicode utf-8, se você realmente quiser, ou em qualquer codificação de caracteres que seu idioma utilize, se você desejar muito. Essas cadeias podem ser inseridas no início ou no início de cada execução do interpretador InterpretMe. Se todas elas forem inseridas no início, o programa deverá emitir todas as linhas do programa assim que for iniciado.
Resultado
Nesse desafio, não haverá saída, a menos que a opção de uma entrada seja escolhida; caso contrário, somente terminação e não terminação
Os casos de teste consistem não em entrada e saída, mas em entrada e finalização. Uma nova linha indica uma nova entrada a ser interpretada como InterpretMe.
Se estiver usando uma entrada no início, pode ser considerado o que é gerado quando esses programas são inseridos, seguido por linhas inativas (não faça nada).
1. * (executes input as an interpret me program, finishes)
2. * (^same)
3. ** (executes input as an interpret me program, then does this again after the first program is done, finishes)
4. hi (nothing, first star of previous line finishes)
5. ** (same as the other two star line)
6. hi (nothing, first star of previous line finishes)
7. hi (nothing, second star of line 5 finishes, so second star of line 3 finishes, so line 2 finishes, so line one finishes)
[termination] (not outputted)
hi (does nothing and finishes)
[termination]
*hi (executes inputted program, finishes)
*yo (executes inputted program, finishes)
hey (nothing)
[termination]
Novamente, isso é código-golfe , então menos bytes é melhor
Respostas:
05AB1E , 11 bytes
Código:
Explicação:
Usa a codificação CP-1252 . Experimente online? .
fonte
Python 3, 35 bytes
define i como um, adiciona a quantidade de '*' -1 a i
Eu acho que posso reduzir isso comque não consegui~
truquesfonte
Python 3,
3938 bytesGuardado 1 byte graças a @atlasologist
fonte
f=->f()for c in prompt()when c=='*'
(Eu não quero fazer outra resposta, uma vez que é uma cópia direta do seu)def f()
vez def=lambda
).Ruby, 29 bytes
A variável mágica do Ruby
$.
rastreia o número de linhas lidas no stdin. Continue lendo a entrada enquanto esse número for menor que a contagem de asteriscos (mais o 1 inicial).fonte
JavaScript,
534544 bytesEste programa é bastante irritante de usar devido à falta de boas E / S do JavaScript.
Solicita um programa e, em seguida, solicita outro programa para cada um
*
no programa de entrada.fonte
Apenas Java
45 60 101 10099 bytesCódigo reverso de golfe: D. Percebi que li errado as especificações (duas vezes), mas agora deve funcionar. Parece bastante simples, talvez haja uma maneira melhor de escrever isso como uma expressão lamda.
Trapaça levemente desprezível por apenas 17 bytes!
Esta versão terá entrada via digitação muito rápida
fonte
if(b=='*')
pode ser jogadoif(b==42)
para -1 byte. Enew Java.util.Scanner(
deve estar em minúsculasj
. +1 para a parte de código reverso de golfe. ;)for(int b:a)
salva um byte adicional, portanto, menos de 100 bytes por não fazer nada: DMathematica, 38 bytes
fonte
APL, 15 bytes
Teste:
Explicação:
fonte
Perl, 33 bytes
Conta o número de vezes que * ocorre na entrada e adiciona isso ao número de vezes que ele faz um loop. Eu sinto que deveria haver uma maneira de fazer o decremento na mesma etapa do incremento, mas não consegui descobrir.
fonte