Introdução
O cálculo é uma linguagem de piada esotérica .
O cálculo não tem sintaxe necessária e tem o poder de resolver todos e quaisquer problemas. É inteligente o suficiente para interpretar qualquer linguagem humana (inglês, espanhol, latim etc.), qualquer linguagem de programação (C ++, Java, cérebro, etc) ou qualquer tipo de dado que você possa imaginar. A única queda é que não há absolutamente nenhuma E / S.
Alguns exemplos de programas
Hello World
Um programa básico Hello World
What is love?
Determina que o amor é (baby, não me machuque).
When will we ever graduate?
Determina a data exata deste site para sair da versão beta.
O desafio
Sua tarefa é escrever um intérprete de computação completo. Isso parece bastante difícil, mas lembre-se de que o Compute não possui E / S absolutamente. Portanto, seu intérprete dorme apenas um segundo para cada linha no programa de entrada e sai \n\nDone.
depois disso (esta é a única exceção à coisa sem E / S).
Você pode encontrar o intérprete oficial na parte inferior deste site .
Observe que o intérprete oficial pausa um segundo para cada caractere no código-fonte fornecido. Para evitar longos tempos de espera ao testar seu intérprete com perguntas significativas , permanecemos alinhados neste desafio.
Regras
- A entrada pode conter várias linhas separadas por a
\n
. Sempre haverá pelo menos uma linha. - Ao contrário da implementação oficial, você não precisa usar um arquivo como entrada. Você pode usar o programa Compute em qualquer forma de entrada que desejar.
- A única saída permitida é
\n\nDone.
. Uma nova linha à direita é permitida. - Função ou programa completo permitido.
- Regras padrão para entrada / saída.
- Aplicam-se brechas padrão .
- Isso é código-golfe , portanto, a menor contagem de bytes vence. O desempatador é uma inscrição anterior.
fonte
Respostas:
05AB1E ,
16151413 bytesCódigo:
Explicação:
Esta parte é equivalente a
"\n\nDone."
:Experimente online!
Usa a codificação CP-1252 .
fonte
Oração , 117 bytes
Vamos explicar isso. Primeiro, isso transpila para:
Ainda confuso? Vamos colocar assim:
Importa o módulo
time
.Este é um tempo loop cuja condição é
input()
.Nosso programa precisa respirar agora e
inhale
, embora menos saudável, é mais golfista.Now
pegue o módulo mais recente importado e acrescente.sleep(1)
a ele.Vamos sair do loop while.
Imprime duas novas linhas.
Começa a capturar uma sequência.
Adiciona
Done.
à sequência capturada.Finaliza a captura de sequência.
fonte
Shell JavaScript REPL, 38 bytes
Como uma função que aceita o programa como um argumento de string e retorna o resultado:
29 bytes se a função puder aceitar sua entrada na forma de uma matriz de linhas ou se for dormir 1 segundo por caractere:
34 bytes, se for mais parecido com um programa e imprimir explicitamente Concluído:
Isso funciona para mim no intérprete autônomo Spidermonkey.
fonte
Javascript ES6,
4645 bytesAgradecimentos a ҒЦꝆПҒЦꝆ por salvar um byte
Assume uma matriz como entrada.
Como o ӍѲꝆΛҐӍΛПҒЦꝆ e o edc65 apontaram, você pode escrever o seguinte, mas ele não salvará nenhum bytes:
fonte
1e3
é melhor que10e2
.1e3 is better than 10e2
não acredito que perdi isso.Bash + coreutils, 28
Acomoda 1 segundo para cada linha. Use em
wc -c
vez disso para cada byte ouwc -m
para cada caractere.fonte
Pitão,
1514 bytes(Você pode experimentá-lo online , mas não há realmente sentido em fazê-lo.)
fonte
Done
(o que é bem engraçado, porque você contou a alguém o mesmo em outra resposta): PPerl, 21 + 1 = 22 bytes
Requer a
-p
bandeira:fonte
Python 3, 58 bytes
fonte
MATL , 17 bytes
Uma linha vazia à direita (seguida por nova linha) é usada para marcar o final da entrada. Isso é necessário no MATL porque a entrada é interativa e cada entrada termina com uma nova linha.
Experimente online!
fonte
Done
?QBasic, 54 bytes
Pega o programa linha por linha a partir da entrada do usuário, finalizada por uma linha em branco. Respeita a letra da lei, embora possivelmente não o espírito, pausando 1 segundo depois de ler cada linha. (A especificação não diz tecnicamente que todas as pausas devem ocorrer após a entrada ser concluída.) Se isso for considerado muito obscuro, aqui está uma versão de 64 bytes que pausa após a entrada de todo o programa:
Versão bônus com E / S de arquivo (87 bytes):
fonte
Ruby, 32 bytes
Lê de stdin.
fonte
OCaml, 61 bytes
Assume que a entrada é uma lista.
fonte
Gelatina , 12 bytes (não concorrente)
Experimente online!
Nota: Por favor , não sugira colocar o
⁷⁷
na string compactada, isso fará com que seja mais longo (“¡OÑL[Ṁ»
).Explicação:
fonte
œS
.awk, 34 bytes
Como não há E / S e o resultado final é inevitável, a
Done.
peça é produzida logo no início.A única maneira de dormir no awk é usar o sistema
sleep
. A maneira mais curta de invocá-lo éprint|"sleep "NR
e também podemos abusar desse inútilprint
.fonte