To jest moje pierwsze wyzwanie, więc utrzymuję je dość prosto.
Jeśli kiedykolwiek telnet towel.blinkenlights.nl
wpiszesz 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:
- Wyczyść ekran konsoli.
- Wydrukuj poprawny obraz ascii art.
- Ustaw flagę lub coś, aby następnym razem zrobić drugi obraz.
- Poczekaj chwilę (około sekundy).
- 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 golf golfowy , więc wygrywa najkrótszy kod w bajtach.
- Obowiązują standardowe luki.
Cieszyć się!
clear
) różni się od systemu Windows (cls
)Odpowiedzi:
CJam,
5145423836 bajtówW 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:
Aby uruchomić kod, pobierz interpreter CJam i wykonaj następujące czynności:
Działa to na każdym terminalu, który obsługuje kody_konsoli lub odpowiedni podzbiór. 1
Jak to działa
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ż
^[c
resetuje terminal.źródło
Calculate the factorial of 60,000 and discard the result. This takes "about a second".
;)2Fm*
jest to dobra, krótsza o jeden bajt alternatywa6e4m!
dla „bezsensownego działania, które zwraca prawdziwą wartość i zajmuje około sekundy do obliczenia”.e!
, ale wydają się zapamiętywane. Po pierwszej iteracji biedny Jack dostaje zawału serca ...Pyth -
414039 bajtów(Liczę te
\x1b
jako 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.
Byłem zaskoczony, gdy dowiedziałem się, że rozszerzone przypisanie działało z przypisaniem przypisanym. Pyth jest niesamowity.
źródło
.V0
jako nieskończonej pętliQBasic, 58 bajtów
Testowane na QB64 .
Właściwy język dla tego problemu może być zaskakująco konkurencyjny, nawet jeśli zwykle jest pełny.
?
SkrótPRINT
pomaga też, oczywiście.CLS
jest CL EAR s creen;RUN
bez argumentów restartuje program, co jest najkrótszym sposobem na uzyskanie nieskończonej pętli.Jedyną inną sztuczką tutaj jest drukowanie
0
na połowie pierwszego zdjęcia. QBasic umieszcza spację przed (i po) nieujemnymi wartościami liczbowymi podczas ich drukowania, w wyniku czego0
. 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
źródło
Perl (* nix) , 54 bajty
(
\x1b
liczony 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
Dzięki @Jarmex za jego testy i porady!
źródło
print"@[2J"
zastąpieniem znaku @ wewnątrz cudzysłowu ASCII 27 (dla celów testowychprint"\033[2J"
może być łatwiejsze).\e
literalnym bajtem ESC. - Czy miałbyś coś przeciwko, jeśli\ec
użyję podstępu w mojej odpowiedzi?"\e"
tak to tylko skrót. Proszę smiało!JavaScript (ES6),
109937970 bajtów + HTML,1210 bajtów =1201069180 bajtówDość 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.
źródło
<pre id="a"/>
część HTML, nie potrzebujesz<pre>
tagów w kodzie.document.getElementById`a`
zdocument.body
.<pre>
i wykonującdocument.all[4]
. Pozwala to pozbyć się łańcucha opakowania i po prostu go wykonaćinnerHTML=a?`...`:`...`}
.Bash,
8684 bajtówźródło
Python 2, 99 bajtów
Działa w systemie Windows
W przypadku maszyn z systemem UNIX dodaj dwa bajty:
źródło
awk -
95 92 86 8483Niezł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
źródło
Partia - 82 bajty
Edycja: wyciszono polecenie limitu czasu i usunięto dodatkowy znak nowej linii.
Widziałem 2 inne podobne odpowiedzi partii, więc tak naprawdę nie chciałem tego publikować, ale to mój pierwszy golf.
źródło
timeout 1
umieści wiele niepotrzebnych danych wyjściowych na konsoli>mul
to błąd typu, a może nie wiesz, conul
to jest. en.wikipedia.org/wiki/Null_deviceBBC BASIC, 75 bajtów
Zauważ, że tokenizacja obniża ją do 75 bajtów. Biała przestrzeń jest dodawana przez IDE.
źródło
JavaScript ES6,
10095 bajtówLoguje się do konsoli. Testowane na Safari Nightly
źródło
Partia,
151130118 bajtówźródło
@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. OdniesienieCBM 64 BASIC V2,
121119112117 bajtówźródło
?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 drukowanyJulia, 70 bajtów
(na systemie Windows , zastępując
clear
zecls
dzięki undergroundmonorail)W systemie Linux 72 bajty
Wykorzystuje to rzeczywiste
\n
znaki nowego wiersza zamiast zapisywać bajt; w przeciwnym raziei
jest „1” lub „-1” jako „flaga” i wykorzystuje rekurencję do osiągnięcia nieskończonej pętli. Nazwij to albo jednymn(1)
albo drugimn()
.Ponadto
run(`clear`)
/run(`cls`)
używa polecenia powłoki do wyczyszczenia okna, ponieważ Julia nie ma wbudowanego polecenia czyszczenia okna.źródło
clear
nacls
(Zakładam, że nie wiem nic o Julii).cls
działa (patrz moja odpowiedź)Pakiet Windows, 83
89Edytuj usunął pusty wiersz po wyjaśnieniu przez OP
Jeśli pozbędziesz się pustej linii u skaczącego człowieka (której i tak nie widać), wynik to 83Uwaga:
timeout
nie występuje w systemie Windows XP. Działa w systemie Vista lub nowszych wersjach. Co więcej,timeout
nie jest dokładny do drugiego, więc jest to idealny wybór do wdrożenia kroku 4 (Poczekaj chwilę ( około sekundy ))źródło
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.
Jak zawsze sugestie mile widziane!
źródło
JavaScript,
929189 bajtówc
wyś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.źródło
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.log
jako funkcja, a człowiek ASCII jako dodatkowy parametr.console.log
dosetInterval
, powodem jest to, że nie jesteśmy przekazując funkcję, ale nazywając ją. Byłoby oceniane przedsetInterval
nazywano, a ponieważconsole.log
nie powróci, to byłoby w istocie być przechodzącundefined
dosetInterval
. Ma sens? I dzięki za skrócenie tego!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ąpiconsole.log
sięalert
."\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]
oceniamy to przed wezwaniem dosetInterval
.Rubinowy, 79 bajtów
Wymaga kodów ucieczki.
źródło
Dalej, 86 bajtów
Wymaga GNU Forth dla łańcuchów znaków. Aby uruchomić w wersji innej niż GNU, po prostu zmień
S\"
naS"
, a znaki specjalne nie będą drukowane poprawnie.źródło
CBM BASIC v2.0 (68 znaków)
Powyższe wymaga pewnych wyjaśnień, ponieważ znaczniki wymiany stosu nie reprezentują poprawnie znaków PETSCII:
źródło
wosk pszczeli ,
119113 bajtówWyjaśnienie ważnych części programu:
W
f
„s naciskać wartości na gstack (globalny stos) do późniejszego wykorzystania. Do tych wartości mają dostęp instrukcje0gh
(lub dublowanehg0
) ihg
(gh
).h
obraca gstack w górę,g
odczytuje najwyższą wartość gstacka i wypycha go na lstack (lokalny stos) pszczoły (wskaźnik instrukcji).W razie potrzeby szczegółowe wyjaśnienie nastąpi później. Może z animacją.
źródło
Deadfish , niekonkurujące (658 bajtów)
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 akumulatora = a + 1
d
= Zmniejsz akumulatora = a - 1
s
= Kwadrat akumulatoraa = a * a
o
= Wyjmij akumulatorprint(a)
Ponieważ język nie obejmuje powtarzania, czyszczenia ekranu ani opóźnień, nie spełnia wymagań. Oczekiwany wynik:
Objaśnienie kodu:
Tłumacz Deadfish w Pythonie 3:
źródło
Noodel , niekonkurencyjne 24 bajty
Niekonkurencyjny, ponieważ Noodel urodził się po utworzeniu wyzwania :)
Spróbuj:)
Jak to działa
Obecnie nie ma wersji Noodel, która obsługuje składnię używaną w tym wyzwaniu. Oto wersja, która:
24 bajty
źródło