Macacos de salto de asciimação

28

Este é o meu primeiro desafio, por isso estou mantendo-o bastante simples.

Se você já digitou telnet towel.blinkenlights.nlsua linha de comando e pressionou enter, terá experimentado a alegria da asciimação. A asciimação é, simplesmente, fazer uma animação com arte ascii. Hoje estaremos fazendo uma estimativa muito básica de uma pessoa fazendo polichinelos.

Haverá duas imagens ascii que reuniremos em uma asciimação. Número 1:

_o_
 0
/ \

Número 2:

\o/
_0_
<blank line>

Observe que o segundo tem uma linha em branco no final.

Portanto, seu programa deve executar estas etapas:

  1. Limpe a tela do console.
  2. Imprima a imagem correta da arte ascii.
  3. Defina uma bandeira ou algo assim para que você faça a outra imagem da próxima vez.
  4. Aguarde um momento (cerca de um segundo).
  5. Continue na 1.

Regras

  • Seu programa deve ser um loop infinito (teoricamente).
  • A linguagem de programação usada deve ter sido criada antes da publicação deste desafio.
  • Isso é , então o código mais curto em bytes vence.
  • Aplicam-se brechas padrão.

Apreciar!

bitsnbites
fonte
Pode haver alguns espaços na <linha em branco>?
Jakube 6/09/15
1
Será que isso tem que ser independente de plataforma porque o comando clara Linux ( clear) é diferente do Windows (uma cls)
Beta Decay
1
A linha em branco é apenas para explicar o posicionamento? Se estiver imprimindo da parte superior da tela para que a linha em branco não faça diferença visível, ela pode ser omitida?
Trichoplax # /
@Jakube sim, pode haver espaços.
bitsnbites
1
@trichoplax yes. A linha em branco é apenas para indicar que a cabeça deve permanecer na mesma posição.
bitsnbites 6/09/2015

Respostas:

29

CJam, 51 45 42 38 36 bytes

"c\o/
_0_""^[c_o_
 0
/ \^["{_o\6e4m!}g

O acima usa notação de sinal de intercalação; a sequência ^[é realmente o caractere ASCII com o ponto de código 27.

Peguei emprestada a sequência de escape ( ^[c) da resposta do @DomHastings ( com a permissão dele ) para salvar 4 bytes.

Verificação

Você pode recriar o arquivo assim:

base64 -d > jj.cjam <<< ImNcby8KXzBfIiIbY19vXwogMAovIFwbIntfb1w2ZTRtIX1n

Para executar o código, baixe o interpretador CJam e execute:

java -jar cjam-0.6.5.jar jj.cjam

Isso funcionará em qualquer terminal que suporte console_codes ou um subconjunto apropriado. 1

Como funciona

e# Push both jumping jacks on the stack.

"c\o/
_0_"

"^[c_o_
 0
/ \^["

e# When chained together, they contain two occurrences of the string "\ec",
e# which resets the terminal. Encoding the ESC byte in the second string
e# eliminates the need two escape a backslash before the string terminator.

{         e# Do:
  _o      e#   Copy the jumping jack on top of the stack and print the copy.
  \       e#   Swap the order of the jumping jacks.
  6e4m!   e#   Calculate the factorial of 60,000 and discard the result.
          e#   This takes "about a second".
}g        e# Since the discarded factorial was non-zero, repeat the loop.

1 As tomadas de salto terão uma aparência melhor se você ocultar o cursor do terminal antes de executar o programa. No Konsole, por exemplo, você pode definir a cor do cursor para corresponder à cor do plano de fundo. Isso deve ser feito através das configurações do seu terminal, pois ^[credefine o terminal.

Dennis
fonte
36
+1 apenas para Calculate the factorial of 60,000 and discard the result. This takes "about a second".;)
ETHproductions
Talvez 2Fm*seja uma boa alternativa de um byte a menos para 6e4m!a "operação sem sentido que retorna um valor verdadeiro e leva cerca de um segundo para calcular".
Lynn
@ Mauris Eu tentei algo semelhante e!, mas eles parecem memorizados. Após a primeira iteração, o pobre Jack sofre um ataque cardíaco ...
Dennis
10

Pitão - 41 40 39 bytes

.VZ"\x1b[H\x1b[J"@c"_o_
 0
/ \\\o/
_0_"Tb .p9

(Estou contando os \x1bbytes como um byte, pois o SO destrói caracteres especiais).

Claramente não funciona on-line, pois é a) um loop infinito eb) usa códigos de escape de terminal.

#                Infinite loop
 "..."           Print escape sequences to clear screen
 @               Modular indexing
  c     T        Chop at index ten into the constituent frames
   "..."         Frames 1 & 2 concatenated (Pyth allows literal newlines in strings)
  ~              Post assign. This is an assign that returns the old value.
   h             Increment function. Putting it after an assign makes it augmented assign.
   Z             Variable auto-initialized to zero.
 .p9             Permutations(range(9), 9). Takes about a second on my machine.

Fiquei surpreso ao descobrir que a atribuição aumentada funcionava com a pós-atribuição. Pyth é incrível.

Maltysen
fonte
utilização .V0como ciclo infinito
Jakube
Você pode ser capaz de salvar um byte agora que o OP confirmou que a linha em branco não precisa ser explicitamente impresso
Trichoplax
@Jakube que parece não salvar nada.
Maltysen 6/09/15
Sua explicação não corresponde ao seu código: P
Beta Decay
9

QBasic, 58 bytes

Testado em QB64 .

CLS
?"_o_"
?0
?"/ \"
SLEEP 1
CLS
?"\o/"
?"_0_"
SLEEP 1
RUN

O idioma certo para o problema pode ser surpreendentemente competitivo, mesmo que seja geralmente detalhado. O ?atalho para PRINTajuda também, é claro. CLSé Cl orelha s creen; RUNsem argumentos reinicia o programa, que é a maneira mais curta de obter um loop infinito.

O único outro truque aqui é imprimir 0para o meio da primeira foto. QBasic coloca um espaço na frente de (e depois) valores numéricos não negativos quando os imprime, resultando em 0 . Salvo 3 caracteres " 0".

Também posso salientar que o atraso neste código é literalmente um segundo e não depende da máquina. ; ^ P

DLosc
fonte
2
Lembro-me de ficar incomodado com os espaços ao imprimir números em várias versões do BASIC. É bom ver que há um bom uso para ele ...
Trichoplax
7

Perl (* nix) , 54 bytes

sleep print"\x1bc",$-++%2?'\o/
_0_
':'_o_
 0
/ \
'while 1

( \x1bé contado como 1 byte, mas escapou para testes mais fáceis.) O item acima foi testado com Bash e reduzido por outro byte, graças a @Dennis !

Perl (Windows) , 56 bytes

sleep print"\x1b[2J",$-++%2?'\o/
_0_
':'_o_
 0
/ \
'while 1

Obrigado a @Jarmex por seus testes e conselhos!

Dom Hastings
fonte
2
Receoso que isso não funcione no Windows, mas você pode obter apenas 1 byte a mais com print"@[2J":, substituindo o @ dentro das aspas pelo ASCII 27 (para fins de teste, print"\033[2J"pode ser mais fácil).
Jarmex # 6/15
Você pode substituir \epor um byte ESC literal. - Você se importaria se eu usasse o \ectruque na minha resposta?
Dennis
@ Dennis, "\e"é claro, porque é apenas um atalho para isso de qualquer maneira. Por favor, vá em frente!
Dom Hastings
6

Javascript (ES6), 109 93 79 70 bytes + HTML, 12 10 bytes = 120 106 91 80 bytes

Bastante direto. Usa seqüências de caracteres de modelo para armazenar as imagens e alterna um valor booleano para determinar qual usar.

NOTA: Esta solução pode não ser válida, pois na verdade não usa um console. No entanto, não acredito que seja possível limpar um console do navegador usando JS, pelo menos não enquanto estiver usando o Firefox.

a=!1,setInterval(_=>O.innerHTML=(a=!a)?`_o_ 
 0
/ \\`:`\\o/ 
_0_`,1e3)
<pre id=O>

ETHproductions
fonte
1
@orlp Code cria o homem animado. (Chrome @ Windows). No entanto, isso é baseado em GUI, e não em console. Pode não ser considerado válido como tal.
Justin
3
1. No meu computador, isso funciona bem no Firefox, mas não no Chrome, então acho que você deve rotulá-lo como ECMAScript 6 para evitar confusão. 2. Se você <pre id="a"/>inserir a parte HTML, não precisará das <pre>tags no código.
Dennis
1
Ou, melhor ainda, livre-se do HTML e substitua-o document.getElementById`a` por document.body.
NinjaBearMonkey
1
Eu tenho 87 bytes, fazendo o HTML <pre>e fazendo document.all[4]. Isso permite que você se livre da string do wrapper e apenas faça isso innerHTML=a?`...`:`...`}.
NinjaBearMonkey
1
Isso parou de funcionar para mim no Chrome
Beta Decay
5

Bash, 86 84 bytes

while sleep 1;do printf "\e[2J_o_\n 0\n/ \\";sleep 1;printf "\r\e[2J\o/\n_0_\n";done
sheß
fonte
3

Python 2, 99 bytes

Executa no Windows

import os,time
g=0
while 1:os.system("cls");print["\\o/\n_0_","_o_\n 0 \n/ \\"][g];time.sleep(1);g=~g

Para máquinas UNIX, adicione dois bytes:

import os,time
g=0
while 1:os.system("clear");print["\\o/\n_0_","_o_\n 0 \n/ \\"][g];time.sleep(1);g=~g
Beta Decay
fonte
3

awk - 95 92 86 84 83

END{
    for(;++j;)
        system("clear;printf '"(j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")"';sleep 1")
}

Bom treino: D Apenas me perguntei se isso era possível. Ainda não há preços a ganhar ...;)

Se alguém quiser testar isso: depois de executar o programa, você deve pressionar Ctrl + D (fim da entrada) para realmente iniciar o bloco END. Para finalizar, eu tenho que usar Ctrl + Z.

Eu também tenho isso, que tem apenas 74 bytes, mas começa com a pausa de um segundo, que não é o comportamento desejado, eu acho

END{
    for(;1;print++j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")
        system("sleep 1;clear")
}
Cabbie407
fonte
1
O sono mede intervalos de três segundos?
Trichoplax
Oh meu Deus. obrigado pela dica :) Ou se não fosse uma dica: não, isso dormia apenas 0,33 segundos.
precisa saber é o seguinte
Eu não sei awk, mas parecia provável que fosse medir em segundos. :)
Trichoplax
1
Ele apenas parece tão mais engraçado se ele está se movendo mais rápido, que eu esqueci sobre o golfe lá; D
Cabbie407
o comando sono não é awk, é bash, btw
Cabbie407
2

Lote - 82 bytes

Editar: silenciou o comando timeout e removeu a nova linha extra.

cls&echo _o_&echo  0&echo / \&timeout>nul 1&cls&echo \o/&echo _0_&timeout>nul 1&%0

Eu já vi duas outras respostas em lotes semelhantes, então eu realmente não queria postar isso, mas este é o meu primeiro golfe.

Peter Lenkefi
fonte
1
Mas a nua timeout 1vai colocar um monte de saída não solicitado no console
edc65
É verdade que eu tinha saída extra. Editado.
Peter Lenkefi
1
talvez >mulseja erro de tipo ou talvez você não saiba o que nulé. pt.wikipedia.org/wiki/Null_device
edc65
@ edc65 Os retrocessos de copiar e colar e não testar. Obrigado!
Peter Lenkefi
2

BBC BASIC, 75 bytes

Observe que a tokenização reduz para 75 bytes. O espaço em branco é adicionado pelo IDE.

      g=0
   10 IFg=0THENPRINT"\o/":PRINT"_0_"ELSEPRINT"_o_":PRINT" 0 ":PRINT"/ \"
      g=1-g:WAIT 100CLS:GOTO10

Propriedades mostrando o tamanho do programa

Beta Decay
fonte
2

JavaScript ES6, 100 95 bytes

(f=_=>{console.log(_?`_o_
 0
/ \\`:`\\o/
_0_`)
(b=setTimeout)(q=>(clear(),b(b=>f(!_))),1e3)})()

Registra no console. Testado no Safari Nightly

Downgoat
fonte
2

Lote, 151 130 118 bytes

cls
@echo _o_
@echo  0
@echo / \
@PING -n 2 127.0.0.1>NUL
cls
@echo \o/
@echo _0_
@PING -n 2 127.0.0.1>NUL
%0
Máx.
fonte
Você pode ser capaz de economizar alguns bytes agora que o OP confirmou que a linha em branco não precisa ser explicitamente impresso
Trichoplax
Você deve ser capaz de jogar fora de 12 caracteres usando em @PING 127.0.0.1 -n 2>NULvez disso. O padrão do ping é esperar cerca de um segundo entre as tentativas; portanto, isso é alguns milissegundos após a precisão, bastante próximo o suficiente para esse desafio. Referência
AdmBorkBork 08/09
golfed fora de 12 bytes graças a TimmyD
Max
2

CBM 64 BASIC V2, 121 119 112 117 bytes

2?CHR$(147)+"\o/":?" 0":?"/ \"
3GOSUB7
4?CHR$(147)+"_o_":?"_0_"
5GOSUB7
6RUN
7A=TI
8IFTI-A<60THENGOTO8
9RETURN
Máx.
fonte
Limpa ?CHR$(147)a tela? Se assim você pode ser capaz de salvar 2 bytes agora que o OP confirmou que a linha em branco não precisa ser explicitamente impresso
Trichoplax
Isso não produz o primeiro quadro de animação (ou seja, onde os braços estão nivelados).
Psychonaut
você está certo ... eu vou consertar isso!
Max
1

Julia, 70 bytes

(no Windows , substituindo clearpor cls, graças ao undergroundmonorail)

n(i=1)=(sleep(1);run(`cls`);print(i>0?"_o_
 0
/ \\":"\\o/
_0_");n(-i))

No Linux, 72 bytes

n(i=1)=(sleep(1);run(`clear`);print(i>0?"_o_
 0
/ \\":"\\o/
_0_");n(-i))

Isso usa novas linhas reais em vez de \nsalvar um byte; caso contrário, ié 1 ou -1 como o "sinalizador" e usa a recursão para obter o loop infinito. Chame-o como um n(1)ou apenas n().

Além disso, run(`clear`)/ run(`cls`)usa um comando shell para limpar a janela, porque Julia não possui um comando de limpeza de janela interno.

Glen O
fonte
Se você executar isso no Windows, salve dois bytes mudando clearpara cls(presumo, não sei nada sobre Julia).
Undergroundmonorail
@undergroundmonorail - Obrigado, mas eu uso o Ubuntu, cls não funciona. Espero que Julia decida implementar uma função real de limpeza de terminal.
Glen O
@GlenO No Windows clsfunciona (veja a minha resposta)
Beta Decay
1

Lote do Windows, 83 89

Editar removeu a linha vazia após o esclarecimento pelo OP

@cls&echo _o_&echo  0&echo./ \&timeout>nul 1&cls&echo \o/&echo _0_&timeout>nul 1&%0

Se você se livrar da linha vazia no homem pulando (que não pode ser vista de qualquer maneira), a pontuação é 83

Nota: timeoutnão está presente no Windows XP. Funciona no Vista ou em versões mais recentes. Além disso, timeoutnão é preciso para o segundo, por isso é uma escolha perfeita para implementar a etapa 4 (aguarde um momento ( cerca de um segundo ))

edc65
fonte
1

Javascript (ES6), 82 bytes

Uma modificação da minha resposta anterior que usa o console. Funciona parcialmente no Firefox, mas apenas limpa o console no Chrome, AFAIK.

a=!0,c=console,setInterval(_=>c.log(c.clear(a=!a)|a?`_o_
 0
/ \\`:`\\o/
_0_`),1e3)

Como sempre, sugestões são bem-vindas!

ETHproductions
fonte
Adoro! Percebo por isso que o Chrome está executando o ES6 agora também!
Dom Hastings
@DomHastings Eu nunca desenvolvi no Chrome antes, mas eu tinha ouvido falar que ele não suportava o ES6 por padrão, então fiquei tão surpreso quanto você! :)
ETHproductions
1

JavaScript, 92 91 89 bytes

x=0;setInterval(function(){console.log("\033c"+["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)
  • Não há recursos do ES6 (mas seria significativamente menor com eles)
  • Funciona com o Node.js no Linux (não conhece outros ambientes)
  • Funciona parcialmente no console do Chrome ( cé mostrado em vez de limpar o console, interrompendo a saída)

Removendo "\033c"+do código acima, o seguinte funciona no navegador, mas não limpa o console.

x=0;setInterval(function(){console.log(["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)

Nateowami
fonte
Trabalho impressionante! Usando os recursos do ES6, recebo 77: x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)Por alguma razão, JS não me deixa passar console.logcomo função e o homem ASCII como um parâmetro extra.
ETHproductions
@ETHproductions Obrigado! Pensei em fazê-lo no ES6, mas nunca o usei e não instalei o io.js, decidi não fazê-lo. Tanto quanto não ser capaz de passar console.logpara setInterval, a razão é que não estamos passando a função, mas chamá-lo. Ele seria avaliado antes de setIntervalser chamado e, como console.lognão retorna, passaria essencialmente undefinedpara setInterval. Faz sentido? E obrigado por reduzi-lo!
Nateowami 19/09/15
Entendo o que você está dizendo, mas, de acordo com esta página , este código deve funcionar: x=0;setInterval(console.log,1e3,"\033c"+[_o_ <quebra de linha> 0 <quebra de linha> / \ `, \\o/<line break>_0_] [x ^ = 1])` De fato, ele não traz um erro se eu substituir console.logpor alert.
ETHproductions
Ah, entendi o que você está dizendo. Acho que o problema é que precisamos registrar algo diferente a cada vez, mas "\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]é avaliado antes da chamada setInterval.
Nateowami
0

Ruby, 79 bytes

k=!0;loop{puts((k)?"\e[H\e[2J_o_\n 0\n/ \\":"\e[H\e[2J\\o/\n_0_");k=!k;sleep 1}

Requer códigos de escape.

aplaudir
fonte
0

Quarto, 86 bytes

Requer GNU Forth para as seqüências de escape. Para rodar em um não-GNU Forth, basta mudar S\"para S", e os caracteres de escape não serão impressos corretamente.

: P PAGE TYPE CR 999 MS ;
: R BEGIN S\" \\o/\n_0_" P S\" _o_\n 0 \n/ \\" P 0 UNTIL ; R

mbomb007
fonte
0

CBM BASIC v2.0 (68 caracteres)

0?"S_o_q||0q||N M":goS1:?"SMoN":?"_0_":goS1:gO
1wA161,255,pE(161):reT

O exposto acima requer algumas explicações, pois a marcação no Stack Exchange não representa adequadamente os caracteres PETSCII:

  • O programa é mostrado aqui por conveniência em letras minúsculas, mas pode e deve ser inserido e executado no modo maiúsculas em um Commodore 64.
  • O primeiro e o terceiro caracteres "S" estão realmente em vídeo reverso e produzidos pressionando a CLRtecla ( SHIFT+ HOME).
  • Os caracteres "q" estão no vídeo reverso e são produzidos pressionando o cursor para baixo ( CRSR ⇓).
  • O "|" os caracteres estão realmente no vídeo reverso e são produzidos pressionando o cursor esquerdo ( SHIFT+ CRSR ⇒).
Psychonaut
fonte
0

cera de abelha ,119 113 bytes

ph0`J2[`}ghq'-<gh0N}`0`}gN`/o\`Ngh0`J`<
>g}`o`}N` `0>'d`0 `N`/ \`0hg>-'phg}`[2`b
dF1f+5~Zzf(.FP9f..F3_#     d   <

Explicação das partes importantes do programa:

left to right  right to left

3FBf   or       fBF3          27       ASCII code for (esc)
3             [x,x,3]•        set lstack 1st to 3
 F            [3,3,3]•        set lstack to 1st
  B           [3,3,27]•       1st=1st^2nd
   f                          push lstack 1st on gstack
——————
9PF.(f   or    f(.FP9         102400   counter to roughly match a wait time
                                       of 1 s on my i5 2410M Laptop
9             [x,x,9]•        set lstack 1st to 9
 P            [x,x,10]•       increment 1st
  F           [10,10,10]•     set lstack to 1st
   .          [10,10,100]•    1st=1st*2nd
    (         [10,10,102400]• 1st=1st<<2nd (100<<10=102400, arithmetic shift left)
     f                        push lstack 1st on gstack
——————
zZ~5+f   or    f+5~Zz         95       ASCII for '_'
z             [0,0,0]•        initialize lstack to zero
 Z            [0,0,90]•       get value from relative coordinate (0,0),
                              which is the location of `Z` itself, ASCII(Z)=90
  ~           [0,90,0]•       flip 1st and 2nd lstack values
   5          [0,90,5]•       set lstack 1st to 5 
    +         [0,90,95]•      1st = 1st+2nd
     f                        push lstack 1st on gstack

Eles fpressionam os valores no gstack (pilha global) para uso posterior. Esses valores são acessados ​​pelas instruções 0gh(ou espelhadas hg0) e hg( gh). hgira o gstack para cima, glê o valor máximo do gstack e o empurra para o lstack (pilha local) da abelha (ponteiro de instruções).

}`o`}N` 0 `N`/ \`                      sequence to print the standing man

N`\o/`Ng}`0`}N                         sequence to print the jumping man

}`[2J`                        equivalent to the ANSI escape sequence (esc)[2J
                              to clear the screen
>-'p  or >-'q  or >  p        loop for counting down (wait 1 s)
d  <      b  <    d'-<

Uma explicação detalhada segue a seguir, se necessário. Talvez com animação.

ML
fonte
0

Peixe morto , não competidor (658 bytes)

iiisisdddddoiiiiiiiiiiiiiiiioddddddddddddddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddsddddoiiiiiiiiiiiiiiiioddddddddddddddddoddddddddddddddddddddddodddsddodddddddddddddddoddddddddddddddddddddddsddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoosddddddddoiiiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddddddddddddddddosdddddodddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddddddddddddddddsdddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoo

Esta é uma solução não concorrente , pois não atende completamente aos requisitos de desafio. Deadfish é uma linguagem interpretada muito estranha, que possui apenas 4 comandos e um acumulador. O acumulador é uma variável de byte inicializada em 0. Os 4 comandos são:

  • i = Incrementar o acumulador a = a + 1
  • d = Decrementa o acumulador a = a - 1
  • s = Esquadrar o acumulador a = a * a
  • o = Saída do acumulador print(a)

Como o idioma não inclui repetição, limpeza da tela ou atrasos, ele não atende aos requisitos. Saída esperada:

_o_
 0 
/ \
(Blank line, not from the program)
\o/
_0_
(Blank line, not from the program)
(Blank line, not from the program)

Explicação do código:

_  iiisisdddddo
o  iiiiiiiiiiiiiiiio
_  ddddddddddddddddo
\n dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
   ddddsddddo
0  iiiiiiiiiiiiiiiio
   ddddddddddddddddo
\n ddddddddddddddddddddddo
/  dddsddo
   dddddddddddddddo
\  ddddddddddddddddddddddsddddddddo
\n ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n o
\  sddddddddo
o  iiiiiiiiiiiiiiiiiiio
/  ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n dddddddddddddddddddddddddddddddddddddo
_  sdddddo
0  dddddddddddddddddddddddddddddddddddddddddddddddo
_  ddddddddddddddddddddddddddddddddddddddsdddddo
\n dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n o

Interpretador de peixes mortos em Python 3:

c=input()
o=""
a=0
for p in range(0,len(c)):
    i=c[p]
    if i=="i":
        a += 1
    if i=="d":
        a+=-1
    if i=="s":
        a=a*a
    if i=="o":
        o+=chr(a)
print(o)
Julian Lachniet
fonte
0

Noodel , 24 bytes não- concorrentes

Incompetente porque Noodel nasceu depois que o desafio foi criado :)

”ṛ|ọBCḊCBCḣ“\o/¶_0_ḷėçḍs

Tente:)

Como funciona

”ṛ|ọBCḊCBCḣ              # Creates a string that gets decompressed into "_o_¶¤0¤¶/¤\" and places it into the pipe.
           “\o/¶_0_      # Creates a string and places it into the pipe.
                   ḷ     # Unconditionally loop the code up to a new line or end of program.
                    ė    # Takes what is in the front of the pipe and puts it into the back.
                     ç   # Clears the screen and prints.
                      ḍs # Delays for one second.

Atualmente, não existe uma versão do Noodel que suporte a sintaxe usada neste desafio. Aqui está uma versão que faz:

24 bytes

\o/¶_0_ _o_¶¤0¤¶/¤\ḷçėḍs

<div id="noodel" code="\o/¶_0_ _o_¶¤0¤¶/¤\ḷçėḍs" input="" cols="5" rows="5"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>

tkellehe
fonte