Nasz klasyczny wąż rozwinął brak równowagi hormonów wzrostu . Co gorsza, jego ogon jest zablokowany! Biorąc pod uwagę dane kierunkowe, jak określono wFigure 1
, napisz program, który określi, gdzie będzie rosnąć.
Rysunek 1. Wprowadzanie kierunkowe.
Specyfikacje programu
- Czytaj wprowadzony znak po znaku na
STDIN
. - Po przeczytaniu znaku wypuść węża do
STDOUT
. Podaj pusty wiersz pomiędzy każdym wydrukowaniem węża. - Wąż składa się z
<>v^
głowy. Głowa węża może być dowolny okrągły charakter swojego wyboru, takich jako
,0
,O
, lub☺
. - Każda kombinacja
wasd
jest ważna dla danych wejściowych. - Twój program nie powinien zakładać, że dane wejściowe mieszczą się w określonej długości.
- Wąż może nakładać się na siebie, nadpisując
<>v^
. Zobacz przykłady mechaniki uprawy węża. - Końcowe białe znaki są w porządku, ale twój wąż musi wyglądać poprawnie.
Punktacja
To jest golf golfowy . Twój wynik to liczba znaków w twoim programie. Najniższy wynik wygrywa!
Przykładowe węże:
Wkład: ddddssaassdddddww
Wydajność:
>>>>v
v
v<< ☺
v ^
>>>>>^
Wkład: dddsssaaawww
Wydajność:
☺>>v
^ v
^ v
^<<<
Wkład: dddsssdddddasddddwww
Wydajność:
>>>v
v ☺
v ^
>>>>v< ^
>>>>^
Wkład: dddwwdddssssaaaaaaaaawww
Wydajność:
>>>v
☺ ^ v
^ >>>^ v
^ v
^<<<<<<<<<
Wkład: ddddssssaawwddddd
Wydajność:
>>>>v
v
>>>>>☺
^ v
^<<
Wkład: dddddssaawwwwddddd
Wydajność:
>>>>>☺
^
>>>^>v
^ v
^<<
Wkład:
ddddaaaasssssdddddddddddwwwwwaaaasssssdddddddddddwwwwwwwwwwsssssaaaasssssdddddddwwwwwddddssaaaasssddddaaaassssssssssdddwwwwwwwddddswaaaassssddaasssaaaaaaaaaawwwwddddssssaaaaaaaaaaawwwwddddsssssssssaaaa
Wydajność:
v
v
v
v
v
v<<<< v<<<< v<<<< >>>>v
v v ^ v ^ ^ v
v v ^ v ^ v<<<<
v v ^ v ^ v
v v ^ v ^ v
>>>>>>>>>>>>>>>>>>>>>v<<<<
v
v
v v<<<<
v v ^
v v
>>>>v >>>>v v v
^ v ^ v v v<<
^ v ^ v v v
^ v ^ v v v
^<<<v<<<<<<<<<<<<<
v
v
v
v
O<<<<
Odpowiedzi:
Ruby, 207 znaków
Nie golfowany:
(lambda dla
a
odpisuje, ponieważ wiersz, do którego pisze powyższe przypisanie, nie jest już na planszy)źródło
ECMAScript 6 JavaScript (399
401431)Musi być uruchomiony w przeglądarce obsługującej ECMAScript 6 ze względu na funkcje strzałek.
Oto skrzypce, które zostały zmienione, aby działały w dowolnej (zwykłej) przeglądarce, nie używając funkcji strzałek.
textarea
Zamiast tego drukują również na :Wersja golfowa
Animowany gif:
Jeden z przykładów PO:
Przykład z Stiac Maniac :
Bez golfa
Oto (nieco) nie golfowa wersja z jakiegoś czasu, zanim naprawdę zacząłem grać w golfa:
źródło
convert
. Całkiem proste :)sed, 71
Golfscript,
165126Takie samo podejście jak w mojej poprzedniej odpowiedzi, ale prawidłowe pozycjonowanie kursora przed i po. Jestem dość dumny z podejścia do pozycjonowania kursora - w zasadzie najpierw uruchamia on węża w odwrotnej kolejności, bez drukowania znaków.
źródło
echo "dddddssaawwwwddddd" | sed -e 's/w/\^\x1B[D\x1B[A/g' -e 's/a/<\x1B[2D/g' -e 's/s/v\x1B[S\x1B[D/g' -e 's/d/>/g' -e 's/$/@/'
nie daje mi poprawnego wyniku.\n
s po,@
aby twój monit poszedł gdzie indziej.Java - 646
Równie dobrze może być pierwszy!
Założę się, że wszyscy możecie to pokonać.
un (rodzaj) golfa
Mniejszy -
wejście - dddsssdddwwwwaaaaaaaassassssssssdddddddddddddddd
wejście - dddsssdddddasddddwww
mój osobisty faworyt - dwdwdwddaasassdddddwdwdwddsdswawaasassdddddddwdwdwddsdswawaasassddddwwwwwwwssssssdsdddwwwwddaassddaassddddsssdddwdwdwddaasasassddddwwwwssssssssasasaaawdwwdwddwwdddddddwdwdwddsdswawaasassddddddddddwwdwwwwaasssassdsdddddddwdwdwwwwasasssssssssssdwwwwwwwddd
źródło
C # 607
„Ungolfed” z białymi spacjami (nie będzie to zsynchronizowane z wersją golfową):
źródło
Python 3: 259 bajtów
Postanowiłem zapisać węża w dykcie ze współrzędnymi dla klawiszy. Następnie znajdź i iteruj w zakresie wyjściowym, zastępując puste spacje.
PS. Mój pierwszy golf :) Daj mi znać, jeśli moja odpowiedź będzie nieodpowiednia
źródło
O
zamiast☺
oszczędza 2 bajty.☺
to czerwony śledź.☺
nie był tak naprawdę liczony jako 3 bajty.O
, więc nie martwiłbym się tym. Z kodu jasno wynika, że nadal działałby dla każdego innego znaku, ale użycie☺
pozwala wygodnie uruchomić przypadki testowe z wyzwania bez zmian.#coding=utf-8
. Pamiętaj, że#coding=utf-16
to nie działa. Dlatego☺
należy liczyć jako 3.Python 2.7 - 274 bajty
Wersja bez golfa
źródło
SyntaxError: invalid syntax
.05AB1E ,
35343028 bajtówUżywa
0
jako głowa węża.-4 bajty dzięki @Grimy .
Wypróbuj online (brak zestawu testów dla wszystkich przypadków testowych jednocześnie, ponieważ nie ma sposobu na zresetowanie Canvas, więc wyniki będą się nakładać ...).
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcje Jak kompresować ciągi znaków, które nie są częścią słownika? I Jak kompresować duże liczby całkowite? ), Aby zrozumieć, dlaczego
.•₃º•
jest"adsw"
iŽO^
jest6240
.Co do krótkiego wyjaśnienia wbudowanego Canvas'a
Λ
i jego trzech argumentów:Pierwszy argument: długość (-y): rozmiary linii, które chcemy narysować. Ponieważ musimy pamiętać o nakładaniu się, używamy rozmiaru 2 dla każdej postaci i dodatkowego 1 dla głowy węża.
Drugi argument: string (s): znaki, które chcemy wyświetlić. Jakie są postacie w tym przypadku, wraz z głową węża.
Trzeci argument: kierunek (-y): kierunki, w które należy narysować te linie znaków o danej długości. Ogólnie mamy kierunki,
[0,7]
które odwzorowują te kierunki:Dlatego mamy liczbę całkowitą[ ← , → , ↓ , ↑ ] odpowiednio.
6240
dla kierunkówZobacz moją wskazówkę 05AB1E, aby uzyskać bardziej szczegółowe wyjaśnienie dotyczące wbudowanego Canvas
Λ
.źródło
γ
to potrzebne. To wydaje się działać dobrze.Perl - 394
Nie najkrótszy, ale wyprzedza co najmniej Javascript, C # i Java.
Niektóre sztuczki:
Rzeczy, które bolą:
źródło
C - 273 bajtów - z interaktywnym wejściem!
Pole jest drukowane za każdym razem, gdy znak jest wprowadzany, i rośnie, gdy głowa węża zbliża się do krawędzi. Nie wiem, jak to jest przenośne - ktoś w Internecie powiedział, że getch () nie działa na platformach innych niż Windows. Trudno powiedzieć, czy ASCII 1 będzie wyglądać jak buźka.
Wersja w golfa jest dość irytująca, ponieważ nie ma sposobu, aby z wdziękiem wyjść z programu. Control-C nie działa dla mnie. Z drugiej strony wersja bez golfa kończy się, jeśli zostanie wprowadzony znak inny niż „w”, „a”, „s” lub „d”.
Tak zwany „nie golfowy”:
źródło
05AB1E , 23 bajty
Wypróbuj online!
Wyjaśnienie:
źródło