Asciimation Jumping Jacks

28

To jest moje pierwsze wyzwanie, więc utrzymuję je dość prosto.

Jeśli kiedykolwiek telnet towel.blinkenlights.nlwpiszesz w wierszu polecenia i naciśniesz Enter, doświadczysz radości z asciimacji. Asciimation to po prostu robienie animacji ze sztuką ascii. Dzisiaj zajmiemy się bardzo podstawową oceną osoby wykonującej podskoki.

Będą dwa obrazy ascii, które połączymy w jedno asciimation. Numer 1:

_o_
 0
/ \

Numer 2:

\o/
_0_
<blank line>

Zauważ, że drugi ma na końcu pustą linię.

Twój program powinien wykonać następujące kroki:

  1. Wyczyść ekran konsoli.
  2. Wydrukuj poprawny obraz ascii art.
  3. Ustaw flagę lub coś, aby następnym razem zrobić drugi obraz.
  4. Poczekaj chwilę (około sekundy).
  5. Kontynuuj o 1.

Zasady

  • Twój program musi być (teoretycznie) nieskończoną pętlą.
  • Używany język programowania musi zostać utworzony przed opublikowaniem tego wyzwania.
  • To jest , więc wygrywa najkrótszy kod w bajtach.
  • Obowiązują standardowe luki.

Cieszyć się!

bitsnbites
źródło
Czy w <pustej linii> mogą być spacje?
Jakube,
1
Czy to musi być niezależne od platformy, ponieważ polecenie wyczyszczenia systemu Linux ( clear) różni się od systemu Windows ( cls)
Beta Decay
1
Czy pusty wiersz służy wyłącznie do objaśnienia pozycji? Jeśli drukujesz od góry ekranu, aby pusta linia nie miała widocznej różnicy, czy można to pominąć?
trichoplax
@Jakube tak, mogą być spacje.
bitsnbites
1
@trichoplax tak. Pusta linia ma tylko zaznaczyć, że głowa musi pozostać w tej samej pozycji.
bitsnbites

Odpowiedzi:

29

CJam, 51 45 42 38 36 bajtów

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

W powyższym zastosowano notację karetką; sekwencja ^[jest w rzeczywistości znakiem ASCII z punktem kodowym 27.

Pożyczyłem sekwencję zmiany znaczenia ( ^[c) z odpowiedzi @DomHastings ( za jego pozwoleniem ), aby zapisać 4 bajty.

Weryfikacja

Możesz odtworzyć plik w następujący sposób:

base64 -d > jj.cjam <<< ImNcby8KXzBfIiIbY19vXwogMAovIFwbIntfb1w2ZTRtIX1n

Aby uruchomić kod, pobierz interpreter CJam i wykonaj następujące czynności:

java -jar cjam-0.6.5.jar jj.cjam

Działa to na każdym terminalu, który obsługuje kody_konsoli lub odpowiedni podzbiór. 1

Jak to działa

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 Gniazda skokowe będą wyglądać lepiej, jeśli ukryjesz kursor terminala przed uruchomieniem programu. W Konsole, np. Możesz ustawić kolor kursora, aby pasował do koloru tła. Należy to zrobić za pomocą ustawień terminala, ponieważ ^[cresetuje terminal.

Dennis
źródło
36
+1 tylko za Calculate the factorial of 60,000 and discard the result. This takes "about a second".;)
ETHprodukcje
Być może 2Fm*jest to dobra, krótsza o jeden bajt alternatywa 6e4m!dla „bezsensownego działania, które zwraca prawdziwą wartość i zajmuje około sekundy do obliczenia”.
Lynn,
@Mauris Próbowałem czegoś podobnego e!, ale wydają się zapamiętywane. Po pierwszej iteracji biedny Jack dostaje zawału serca ...
Dennis,
10

Pyth - 41 40 39 bajtów

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

(Liczę te \x1bjako jeden bajt, ponieważ SO niszczy znaki specjalne).

Najwyraźniej nie działa online, ponieważ a) nieskończona pętla ib) używa kodów ucieczki terminala.

#                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.

Byłem zaskoczony, gdy dowiedziałem się, że rozszerzone przypisanie działało z przypisaniem przypisanym. Pyth jest niesamowity.

Maltysen
źródło
użyj .V0jako nieskończonej pętli
Jakube
Być może będziesz mógł zapisać bajt teraz, gdy OP potwierdzi, że pusty wiersz nie musi być wyraźnie wydrukowany
trichoplax
@Jakube, który wydaje się niczego nie zapisywać.
Maltysen,
Wyjaśnienie nie odpowiada Twojemu kodowi: P
Beta Decay
9

QBasic, 58 bajtów

Testowane na QB64 .

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

Właściwy język dla tego problemu może być zaskakująco konkurencyjny, nawet jeśli zwykle jest pełny. ?Skrót PRINTpomaga też, oczywiście. CLSjest CL EAR s creen; RUNbez argumentów restartuje program, co jest najkrótszym sposobem na uzyskanie nieskończonej pętli.

Jedyną inną sztuczką tutaj jest drukowanie 0na połowie pierwszego zdjęcia. QBasic umieszcza spację przed (i po) nieujemnymi wartościami liczbowymi podczas ich drukowania, w wyniku czego 0 . Zapisano 3 znaki " 0".

Mogę również zauważyć, że opóźnienie w tym kodzie jest dosłownie sekundą i nie zależy od maszyny. ; ^ P

DLosc
źródło
2
Pamiętam, jak denerwowały mnie otaczające je przestrzenie, gdy drukowałem liczby w różnych wersjach BASIC. Miło widzieć, że jest to przydatne ...
trichoplax
7

Perl (* nix) , 54 bajty

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

( \x1bliczony jest jako 1 bajt, ale uciekł dla łatwiejszego testowania.) Powyższe zostało przetestowane z Bash i skrócone o kolejny bajt dzięki @Dennis !

Perl (Windows) , 56 bajtów

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

Dzięki @Jarmex za jego testy i porady!

Dom Hastings
źródło
2
Obawiam się, że to nie działa w systemie Windows, ale możesz uzyskać tylko 1 bajt więcej z: print"@[2J"zastąpieniem znaku @ wewnątrz cudzysłowu ASCII 27 (dla celów testowych print"\033[2J"może być łatwiejsze).
Jarmex,
Możesz zastąpić \eliteralnym bajtem ESC. - Czy miałbyś coś przeciwko, jeśli \ecużyję podstępu w mojej odpowiedzi?
Dennis,
@Dennis oczywiście, bo i "\e"tak to tylko skrót. Proszę smiało!
Dom Hastings,
6

JavaScript (ES6), 109 93 79 70 bajtów + HTML, 12 10 bajtów = 120 106 91 80 bajtów

Dość bezpośredni. Używa ciągów szablonów do przechowywania obrazów i przełącza wartość logiczną, aby określić, którego użyć.

UWAGA: To rozwiązanie może nie być prawidłowe, ponieważ w rzeczywistości nie używa konsoli. Jednak nie sądzę, że można wyczyścić konsolę przeglądarki przy użyciu JS, przynajmniej nie podczas korzystania z przeglądarki Firefox.

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

ETHprodukcje
źródło
1
@orlp Code tworzy animowanego mężczyznę. (Chrome @ Windows). Jest to jednak oparte na GUI, a nie na konsoli. Może nie być uważany za ważny jako taki.
Justin
3
1. Na moim komputerze działa to poprawnie w Firefoksie, ale nie w Chrome, więc myślę, że powinieneś oznaczyć go jako ECMAScript 6, aby uniknąć pomyłek. 2. Jeśli wstawisz <pre id="a"/>część HTML, nie potrzebujesz <pre>tagów w kodzie.
Dennis,
1
Albo, jeszcze lepiej, pozbyć się HTML i wymienić document.getElementById`a` z document.body.
NinjaBearMonkey
1
Mam 87 bajtów, tworząc HTML <pre>i wykonując document.all[4]. Pozwala to pozbyć się łańcucha opakowania i po prostu go wykonać innerHTML=a?`...`:`...`}.
NinjaBearMonkey,
1
To przestało działać dla mnie w Chrome
Beta Decay
5

Bash, 86 84 bajtów

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

Python 2, 99 bajtów

Działa w systemie 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

W przypadku maszyn z systemem UNIX dodaj dwa bajty:

import os,time
g=0
while 1:os.system("clear");print["\\o/\n_0_","_o_\n 0 \n/ \\"][g];time.sleep(1);g=~g
Rozpad beta
źródło
3

awk - 95 92 86 84 83

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

Niezły trening: D Zastanawiałem się, czy to wykonalne. Brak cen do zdobycia ...;)

Jeśli ktoś chce to przetestować: po uruchomieniu programu należy nacisnąć Ctrl + D (koniec wprowadzania), aby faktycznie uruchomić blok END. Aby to zakończyć, muszę użyć Ctrl + Z.

Mam również ten, który ma tylko 74 bajty, ale zaczyna się od zatrzymania sekundy, co nie jest pożądanym zachowaniem

END{
    for(;1;print++j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")
        system("sleep 1;clear")
}
Cabbie407
źródło
1
Czy sen mierzy odstępy trzech sekund?
trichoplax
O mój Boże. dzięki za podpowiedź :) A jeśli to nie była podpowiedź: Nie, to spało tylko 0,33 sekundy.
Cabbie407
Nie znam awk, ale wydawało się prawdopodobne, że zmierzy się w kilka sekund. :)
trichoplax
1
Wygląda tak zabawnie, jeśli porusza się szybciej, że zapomniałem tam o grze w golfa; D
Cabbie407
polecenie uśpienia nie jest awk, to bash, btw
Cabbie407
2

Partia - 82 bajty

Edycja: wyciszono polecenie limitu czasu i usunięto dodatkowy znak nowej linii.

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

Widziałem 2 inne podobne odpowiedzi partii, więc tak naprawdę nie chciałem tego publikować, ale to mój pierwszy golf.

Peter Lenkefi
źródło
1
Ale gołe miejsce timeout 1umieści wiele niepotrzebnych danych wyjściowych na konsoli
edc65
To prawda, miałem dodatkowe wyjście. Edytowane.
Peter Lenkefi,
1
może >multo błąd typu, a może nie wiesz, co nulto jest. en.wikipedia.org/wiki/Null_device
edc65
@ edc65 Wycofanie kopii-wklej i nie testowanie. Dziękuję Ci!
Peter Lenkefi,
2

BBC BASIC, 75 bajtów

Zauważ, że tokenizacja obniża ją do 75 bajtów. Biała przestrzeń jest dodawana przez IDE.

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

Właściwości pokazujące rozmiar programu

Rozpad beta
źródło
2

JavaScript ES6, 100 95 bajtów

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

Loguje się do konsoli. Testowane na Safari Nightly

Downgoat
źródło
2

Partia, 151 130 118 bajtów

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
Max
źródło
Możesz być w stanie zaoszczędzić kilka bajtów teraz, gdy PO potwierdziło, że pusty wiersz nie musi być wyraźnie wydrukowany
trichoplax
Zamiast tego powinieneś mieć możliwość gry w golfa z 12 postaci @PING 127.0.0.1 -n 2>NUL. Ping domyślnie czeka około sekundy między próbami, więc jest to kilka milisekund od dokładności, wystarczająco blisko na to wyzwanie. Odniesienie
AdmBorkBork
grał w golfa poza 12 bajtami dzięki TimmyD
Max
2

CBM 64 BASIC V2, 121 119 112 117 bajtów

2?CHR$(147)+"\o/":?" 0":?"/ \"
3GOSUB7
4?CHR$(147)+"_o_":?"_0_"
5GOSUB7
6RUN
7A=TI
8IFTI-A<60THENGOTO8
9RETURN
Max
źródło
Czy ?CHR$(147)wyczyści ekran? Jeśli tak, możesz być w stanie zapisać 2 bajty, skoro OP potwierdził, że pusty wiersz nie musi być wyraźnie drukowany
trichoplax
To nie tworzy pierwszej klatki animacji (tzn. Gdy ramiona są w poziomie).
Psychonaut
masz rację ... Naprawię to!
Maks.
1

Julia, 70 bajtów

(na systemie Windows , zastępując clearze clsdzięki undergroundmonorail)

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

W systemie Linux 72 bajty

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

Wykorzystuje to rzeczywiste \nznaki nowego wiersza zamiast zapisywać bajt; w przeciwnym razie ijest „1” lub „-1” jako „flaga” i wykorzystuje rekurencję do osiągnięcia nieskończonej pętli. Nazwij to albo jednym n(1)albo drugim n().

Ponadto run(`clear`)/ run(`cls`)używa polecenia powłoki do wyczyszczenia okna, ponieważ Julia nie ma wbudowanego polecenia czyszczenia okna.

Glen O
źródło
Jeśli uruchomisz to w systemie Windows, zaoszczędzisz dwa bajty, zmieniając clearna cls(Zakładam, że nie wiem nic o Julii).
undergroundmonorail
@undergroundmonorail - Dzięki, ale używam Ubuntu, cls nie działa. Mam nadzieję, że Julia zdecyduje się na wdrożenie prawdziwej funkcji czyszczenia terminali.
Glen O
@GlenO W systemie Windows clsdziała (patrz moja odpowiedź)
Rozpad Beta
1

Pakiet Windows, 83 89

Edytuj usunął pusty wiersz po wyjaśnieniu przez OP

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

Jeśli pozbędziesz się pustej linii u skaczącego człowieka (której i tak nie widać), wynik to 83

Uwaga: timeoutnie występuje w systemie Windows XP. Działa w systemie Vista lub nowszych wersjach. Co więcej, timeoutnie jest dokładny do drugiego, więc jest to idealny wybór do wdrożenia kroku 4 (Poczekaj chwilę ( około sekundy ))

edc65
źródło
1

JavaScript (ES6), 82 bajty

Modyfikacja mojej poprzedniej odpowiedzi, która korzysta z konsoli. Działa częściowo w Firefoksie, ale czyści konsolę tylko w Chrome AFAIK.

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

Jak zawsze sugestie mile widziane!

ETHprodukcje
źródło
Kocham to! Zauważam przez to, że Chrome również wykonuje dla mnie ES6!
Dom Hastings,
@DomHastings Nigdy wcześniej nie rozwijałem się w Chrome, ale słyszałem, że domyślnie nie obsługuje ES6, więc byłem tak samo zaskoczony jak Ty! :)
ETHproductions
1

JavaScript, 92 91 89 bajtów

x=0;setInterval(function(){console.log("\033c"+["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)
  • Brak funkcji ES6 (ale byłby z nimi znacznie krótszy)
  • Działa z Node.js w systemie Linux (nie wiem o innych środowiskach)
  • Częściowo działa w konsoli Chrome ( cwyświetla się zamiast wyczyścić konsolę, przerywając wyjście)

Po usunięciu "\033c"+z powyższego kodu następujące czynności działają w przeglądarce, ale nie usuwają konsoli.

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

Nateowami
źródło
Imponująca praca! Korzystając z funkcji ES6, otrzymuję 77: x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)Z jakiegoś powodu JS nie pozwala mi przejść console.logjako funkcja, a człowiek ASCII jako dodatkowy parametr.
ETHprodukcje
@ETHproductions Dzięki! Myślałem o zrobieniu tego w ES6, ale nigdy go nie użyłem i nie zainstalowałem io.js, postanowiłem tego nie robić. O ile nie jest w stanie przejść console.logdo setInterval, powodem jest to, że nie jesteśmy przekazując funkcję, ale nazywając ją. Byłoby oceniane przed setIntervalnazywano, a ponieważ console.lognie powróci, to byłoby w istocie być przechodząc undefineddo setInterval. Ma sens? I dzięki za skrócenie tego!
Nateowami,
Rozumiem, co mówisz, ale zgodnie z tą stroną ten kod powinien działać: x=0;setInterval(console.log,1e3,"\033c"+[_o_ <podział linii> 0 <podział linii> / \ `, \\o/<line break>_0_] [x ^ = 1])` W rzeczywistości nie przynosi się błędem, jeśli zastąpi console.logsię alert.
ETHprodukcje
Ach, rozumiem co mówisz. Myślę, że problem polega na tym, że musimy za każdym razem rejestrować coś innego, ale "\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]oceniamy to przed wezwaniem do setInterval.
Nateowami,
0

Rubinowy, 79 bajtów

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

Wymaga kodów ucieczki.

klaskać
źródło
0

Dalej, 86 bajtów

Wymaga GNU Forth dla łańcuchów znaków. Aby uruchomić w wersji innej niż GNU, po prostu zmień S\"na S", a znaki specjalne nie będą drukowane poprawnie.

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

mbomb007
źródło
0

CBM BASIC v2.0 (68 znaków)

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

Powyższe wymaga pewnych wyjaśnień, ponieważ znaczniki wymiany stosu nie reprezentują poprawnie znaków PETSCII:

  • Program pokazano tutaj dla wygody małymi literami, ale można i należy go wprowadzić i uruchomić w trybie wielkich liter na Commodore 64.
  • Pierwsza i trzecia litera „S” znajdują się w rzeczywistości w odwrotnym wideo i są tworzone przez naciśnięcie CLRklawisza ( SHIFT+ HOME).
  • Znaki „q” znajdują się w rzeczywistości w odwrotnym wideo i są tworzone przez naciśnięcie kursora w dół ( CRSR ⇓).
  • „|” znaki są w rzeczywistości w odwrotnym obrazie wideo i są tworzone przez naciśnięcie lewego kursora ( SHIFT+ CRSR ⇒).
Psychonauta
źródło
0

wosk pszczeli ,119 113 bajtów

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   <

Wyjaśnienie ważnych części programu:

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

W f„s naciskać wartości na gstack (globalny stos) do późniejszego wykorzystania. Do tych wartości mają dostęp instrukcje 0gh(lub dublowane hg0) i hg( gh). hobraca gstack w górę, godczytuje najwyższą wartość gstacka i wypycha go na lstack (lokalny stos) pszczoły (wskaźnik instrukcji).

}`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'-<

W razie potrzeby szczegółowe wyjaśnienie nastąpi później. Może z animacją.

ML
źródło
0

Deadfish , niekonkurujące (658 bajtów)

iiisisdddddoiiiiiiiiiiiiiiiioddddddddddddddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddsddddoiiiiiiiiiiiiiiiioddddddddddddddddoddddddddddddddddddddddodddsddodddddddddddddddoddddddddddddddddddddddsddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoosddddddddoiiiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddddddddddddddddosdddddodddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddddddddddddddddsdddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoo

To niekonkurencyjne rozwiązanie , ponieważ nie spełnia całkowicie wymagań wyzwania. Deadfish to bardzo dziwnie zinterpretowany język, który ma tylko 4 polecenia i akumulator. Akumulator jest jednobajtową zmienną zainicjowaną na 0. Cztery polecenia to:

  • i = Zwiększ akumulator a = a + 1
  • d = Zmniejsz akumulator a = a - 1
  • s = Kwadrat akumulatora a = a * a
  • o = Wyjmij akumulator print(a)

Ponieważ język nie obejmuje powtarzania, czyszczenia ekranu ani opóźnień, nie spełnia wymagań. Oczekiwany wynik:

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

Objaśnienie kodu:

_  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

Tłumacz Deadfish w Pythonie 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
źródło
0

Noodel , niekonkurencyjne 24 bajty

Niekonkurencyjny, ponieważ Noodel urodził się po utworzeniu wyzwania :)

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

Spróbuj:)

Jak to działa

”ṛ|ọ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.

Obecnie nie ma wersji Noodel, która obsługuje składnię używaną w tym wyzwaniu. Oto wersja, która:

24 bajty

\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
źródło