EDYTOWAĆ
Wygląda na to, że nastąpiło pewne zamieszanie po mojej literówce w oryginalnym poście, w którym za pomocą małej litery o zdefiniowano płaszczyznę, a następnie wielką literą później. Niestety ten błąd nie został wykryty w piaskownicy. Ponieważ wielu członków napisało odpowiedzi na oba te pytania, a ponieważ literówka była moją winą, w definicji płaszczyzny pozwolę na pisanie wielkimi lub małymi literami. Dodałem do tego nową regułę.
tło
Lubię animacje sztuki ascii, jak je nazywam, więc oto kolejna. Nie sądzę, że jest to zbyt trudne do wdrożenia, więc mam nadzieję, że otrzymam krótkie i interesujące odpowiedzi.
Do wszystkich członków społeczności
Jeśli poprawisz swoją odpowiedź, zmień liczbę bajtów jako
stara liczba bajtów nowa liczba bajtów
abyśmy mogli zobaczyć Twoje postępy. Dzięki!
Wyzwanie
Oto samolot ascii
--O--
Oto pas startowy ascii
____| |____
Samolot startuje z 5 nowych linii powyżej pasa startowego. Aby zapobiec konfliktom między systemami metrycznymi i imperialnymi i uczynić z tego prawdziwie międzynarodowe wyzwanie, nie wspomnę o metrach ani stopach. Przykład:
--O--
____| |____
Samolot musi wylądować dokładnie na środku pasa startowego, jak pokazano poniżej:
____|--O--|____
Wkład
Początkowe poziome położenie płaszczyzny jest określone liczbą całkowitą, która służy do odniesienia do końca lewego skrzydła, tzn. Zawiera się między 0 a 10 włącznie.
Wydajność
Każdy etap lotu samolotów musi być pokazany. Przykład poniżej (wkład = 10):
--O--
____| |____
--O--
____| |____
--O--
____| |____
--O--
____| |____
--O--
____| |____
____|--O--|____
Dla uproszczenia ignorujemy prawa perspektywy. Pas startowy pozostaje taki sam, jak się zbliżasz.
Zasady
- Aktualizacja Środek płaszczyzny może być wielkimi lub małymi literami o, ale cokolwiek zostanie wybrane, musi być spójne w całym kodzie. Jeśli twój język nie obsługuje powyższych znaków, możesz użyć alternatywnych znaków tylko ascii.
- Płaszczyzna schodzi o 1 linię na ramkę.
- Samolot może przesunąć tylko 1 pole w lewo lub w prawo za każdym razem, gdy schodzi o jedną linię. Nie musi poruszać się po każdej linii zniżania. Tak długo, jak kończy się na pasie startowym, zależy od ciebie, kiedy porusza się w prawo lub w lewo. Jesteś pilotem!
- Obsługa błędów nie jest wymagana. Możesz założyć, że wejście zawsze będzie prawidłową liczbą całkowitą od 0-10 włącznie.
- Dane wyjściowe muszą składać się wyłącznie ze znaków pokazanych powyżej (jeśli Twój język ich nie obsługuje, patrz: edytowana pierwsza reguła) i muszą być tego samego rozmiaru, tzn. Muszą zaczynać się o 6 linii od 15 znaków. Wysokość może się zmniejszać wraz z postępem, jak w powyższym przykładzie.
- Program lub funkcja działa poprawnie, ale musi dawać wynik, jak pokazano powyżej.
- Wiodące / końcowe spacje / nowe linie są dla mnie w porządku.
- Jeśli chcesz, możesz wyczyścić ekran między ramkami wyjściowymi. To nie jest wymóg.
- Standardowe luki zabronione jak zwykle (choć nie sądzę, aby było wiele takich problemów).
- To jest golf golfowy, więc najkrótsza odpowiedź jest oczywiście zwycięzcą i prawdopodobnie otrzyma najwięcej głosów, ale niekoniecznie zostanie zaakceptowana jako najlepsza odpowiedź, jeśli pojawi się jakieś naprawdę interesujące rozwiązanie w jakimś nieoczekiwanym języku, nawet jeśli jest ono dłuższe. Publikuj wszystko, co spełnia zasady, o ile działa.
Implementacja referencji bez golfisty w Pythonie 2 dostępna na stronie Wypróbuj online! dzięki czemu można zobaczyć, jak to wygląda dla różnych wartości wejściowych.
Odpowiedzi:
TI-BASIC, 61 bajtów
źródło
TI-BASIC, 62 bajty
Zauważ, że TI-BASIC nie obsługuje _ ani | i dlatego zastąpiłem wielką I i. Nie powinno to wpływać na liczbę bajtów.
źródło
Python 2, 107 bajtów
Wypróbuj online
Po prostu zakoduj na ostatniej linii samolot lądujący. Można go prawdopodobnie zagrać w golfa poprzez ponowne użycie części z przeszłości lub włączenie do pętli.
źródło
Perl, 94 bajty
93 bajty kodu +
-p
flaga.Wypróbuj online!
źródło
}{
(i bałagan$"
z podświetlaniem składni).JavaScript (ES6), 108 bajtów
Sprawdź to
Pokaż fragment kodu
Stosowanie
Wystarczy zadzwonić
f
z indeksem samolotu.Wydajność
źródło
Scala,
224181 bajtówEDYCJA : Nie miałem pojęcia, że możesz to
"string"*n
powtórzyć n razy! Scala nadal oszałamia mój umysł. Tęsknota zaif(t>0)
zamiastif(t==0)
była błędem debiutanta. Dzięki za wskazówki, Suma !Oryginalne uwagi:
Uznałem, że wypróbowanie rekurencyjnego rozwiązania byłoby fajne. Jestem stosunkowo nowy w Scali, więc jestem pewien, że nie jest to optymalne.
źródło
:Unit=
. Pominięcie znaku równości ustawi typ zwrotu na Jednostkę.o
w pierwszym wierszu ?. A ponieważi
zawsze jest> = 0, możesz zmienići!=0&&i==t
nai>0&i==t
(3. linia).Partia, 230 bajtów
x
to liczba spacji do usunięcia od początku łańcuchas
, więc odejmuję parametr od 10. Ostatni wiersz to najbliższa partiax-=sgn(x-5)
.źródło
sed, 181 bajtów + 2 dla
-nr
flagBez golfa
Stosowanie:
$ echo 2 | sed -nrf flightsim.sed
źródło
Retina ,
8683 bajtówWypróbuj online!
Prawdopodobnie jest jakiś rodzaj kompresji, którego mógłbym użyć na pasie startowym i pustej przestrzeni nad nim, ale wszystko, co próbowałem, okazało się droższe niż zwykły tekst (w Retina ¶ jest nowym wierszem, więc możesz zobaczyć stan początkowy w postaci zwykłego tekstu na druga linia).
źródło
Scala ,
177, 163, 159137 bajtówNa podstawie innej odpowiedzi , ze znacznymi obniżkami.
źródło
Perl 6 ,
979081 bajtówW przeciwieństwie do tego, jak to wygląda, wypisuje * wersję samolotu (
--o--
) o małych literach , na co pozwala zaktualizowany opis zadania.Wypróbuj online!
Jak to działa
Bitowe ciągi znaków FTW!
Działa, ponieważ operatorzy łańcuchów bitowych używają wartości znaków kodowych znaków w danej pozycji w dwóch ciągach, aby obliczyć nowy znak w tej pozycji w ciągu wyjściowym.
W tym przypadku:
W przypadku wielkiej litery
O
, moglibyśmy użyć~^
(ciąg bitowy XOR), z płaską maską\r\ro\r\r
(+4 bajty dla odwrotnych ukośników):Wzór na przesunięcie płaszczyzny
h + v*(17 - h/5)
został uproszczony z:źródło
Python 2 , 160 bajtów
Wypróbuj online!
Oto implementacja referencyjna, która spadła do 160 z 384. Myślę, że nadal jest to droga. Właśnie wysłano dla zabawy i aby zachęcić do lepszej odpowiedzi w języku Python.
źródło
while-~x
?i
jakoi+=(i<5)-(i>5)
Befunge-93,
136130 bajtówWypróbuj online!
Wyjaśnienie
źródło
Rubinowy, 94 bajty
Drukuje pozycję samolotu, następnie nowe linie, a następnie lotnisko. Następnie przesuwa płaszczyznę o 1, -1 lub 0, w zależności od położenia względem 5.
Po zapętleniu powyższego 5 razy drukuje samolot na lotnisku.
źródło
8th ,
177172 bajtówSłowo
f
oczekuje liczby całkowitej od 0 do 10.Stosowanie
Wyjaśnienie
źródło
Mathematica, 111 bajtów
Funkcja anonimowa. Pobiera liczbę jako dane wejściowe i zwraca ciąg znaków jako dane wyjściowe. Prawdopodobnie można by dalej grać w golfa.
źródło
QBIC ,
939184 bajtówUsunięto niektóre bajty, zastępując deklarację X $; zoptymalizowana pętla FOR, która drukuje odległość nad ziemią. Wyjaśnienie poniżej dotyczy starej wersji, ale w zasadzie działa tak samo.
Do testowania (i estetyki) miałem nieco inną wersję, o wielkości 103 bajtów:
Są funkcjonalnie identyczne. Drugi polega na tym, że ekran jest usuwany między ramkami i zatrzymuje się na 0,5 sekundy między ramkami.
Próbka wyjściowa
Zauważ, że dodałem dwie nowe linie między ramkami. Najbardziej golfowy kod powyżej nie dodaje pustych linii między ramkami, chłodniejszy usuwa ekran.
Wyjaśnienie
Ponieważ czuję, że dotyczy to wielu rzeczy, które naprawdę lubię w QBIC i daje dobry wgląd w to, jak niektóre z jego funkcji działają pod maską, nieco przesadziłem z wyjaśnieniem. Zauważ, że QBIC jest w istocie interpretatorem QBasic dla Codegolfa. Kod QBIC wchodzi - kod QBasic wychodzi (i jest następnie wykonywany).
źródło
SmileBASIC,
109105 bajtówźródło
PHP 7, 139 bajtów
wciąż okropnie długo
pobiera dane wejściowe z argumentu wiersza poleceń; biegać z
-r
.awaria
źródło