Zadanie
Jesteś odpowiedzialny za tworzenie kompasu.
Wyobraź sobie swój kod źródłowy jako „igłę” kompasu, gdzie bieganie w różnych orientacjach daje wyraźne wyniki.
Obsługiwane orientacje kodu źródłowego to Północ, Wschód, Południe i Zachód.
Przykład
Powiedzmy, że masz kod źródłowy:
ABCD
J K
WXYZ
Rozważymy to jako orientację północną, obrót o 90 stopni zgodnie z ruchem wskazówek zegara skieruje nas na wschód:
W A
XJB
Y C
ZKD
obracanie ponownie wskazuje południe:
ZYXW
K J
DCBA
i wreszcie ostatnia rotacja na Zachód:
DKZ
C Y
BJX
A W
Po uruchomieniu, każdy z powyższych przykładów kodu powinien wypisać jeden, wyraźny znak ASCII do wydrukowania, który wybierzesz.
Notatki
Twój kod nie przyjmuje żadnych danych wejściowych.
Puste spacje lub nowe linie nie zapadają się / nie znikają podczas obracania.
Wiodące / końcowe nowe linie są w porządku.
Odpowiedzi mogą być całymi programami lub funkcjami, dlatego są wysyłane do STDOUT lub zwracają wynik funkcji.
Obowiązują standardowe zasady gry w golfa ; najkrótsza odpowiedź w bajtach wygrywa!
źródło
Odpowiedzi:
Galaretka , 2 bajty
Wypróbuj online!
Zauważ, że głównym wpisem dla programu Jelly jest jego ostatni link, w którym dowolny znak nowej linii podzieli linki), żaden z programów dwuwierszowych nie ma dostępu do swojego górnego linku.
Cztery pełne programy, z których wszystkie pośrednio wypisują swój wynik, to:
Północ :
Wschód :
Południe :
Zachód :
źródło
Japt ,
32 bajtyW jakiś sposób znalazłem bardzo zhackowane 2-bajtowe rozwiązanie ...
Wyjścia północne
0
:Ponieważ nie ma żadnych niejawnych danych wejściowych, domyślnie jest to
0
.g
na liczbę zwraca znak liczby niezależnie od jej argumentów ("y"
w tym przypadku).Wyjścia wschodnie
2
:W programie wieloliniowym pierwszy wiersz ustawia dane wejściowe na wynik. Jest to w zasadzie brak możliwości, ponieważ
g
on0
jest0
. Następniey
zwraca GCD0
i ... ponieważ brakuje argumentu, domyślnie jest to2
(dzięki, @Oliver !). Daje to2
jako wynik.Wyjścia południowe
g
:y
, jak poprzednio, jest GCD. Ponieważ gcd (0, x) jest x dla dowolnej wartości,y
on może0
swobodnie zwrócić swój argument. W tym przypadku argumentem jest"g"
wynik.Wyjścia zachodnie
1
:y
na 0, jak poprzednio, zwraca2
. Jest to następnie przekazywane dog
, która (jak już omówiono) jest funkcją znaku na liczbach. Dlatego wynik jest1
.źródło
Java (OpenJDK 8) ,
73094421855 bajtów-2888 bajtów dzięki Leaky Nun
-3566 bajtów dzięki Wheat Wizard
Wypróbuj online!
Stara wersja
Proste podejście z komentarzami owijającymi kod ^ 2, można to zrobić w prawie każdym języku.
(bardziej czytelny) przykład w pythonie
źródło
interface M{static void main(String[]a){System.out.println(0);}}
do zapisania niektórych bajtów.Brain-Flak , 33 bajty
Wypróbuj online!
Brain-Flak , 33 bajty
Wypróbuj online!
Brain-Flak , 36 bajtów
Wypróbuj online!
Brain-Flak , 38 bajtów
Wypróbuj online!
Brain-Flak , 41 bajtów
Wypróbuj online!
źródło
Alice , 17 bajtów
Wyjścia
1
. Wypróbuj online!Wyjścia
x
. Wypróbuj online!Wyjścia
5
. Wypróbuj online!Wyjścia
3
. Wypróbuj online!źródło
Befunge,
1713 bajtówMyślałem, że Befunge będzie świetną zabawą dla problemu geometrycznego. Istnieje trywialne rozwiązanie 4x4 podobne do innych tutaj (potrzebuję 3 poleceń), ale udało mi się trochę lepiej.
Edycja: zapomniałem o nowych liniach
Edycja 2: zdałem sobie sprawę, że mogę stworzyć kota
Edycja 3: kot nie żyje
Kitty RIP: <
źródło
05AB1E ,
53 bajtyPółnoc , Wschód , Południe , Zachód
źródło
Y'X
zadziała, ale wciąż muszę go wypróbować.Y'X
jest również poprawny. Wciąż szukam 2-bajtowego; żadna z „komend kropkowych” nie działa, więc wątpię, by istniała.10
działałyby, gdyby zezwalały na tworzenie wielu znaków; P. *C (gcc) ,
283279209 bajtówWypróbuj online!
Ta sama stara sztuczka z komentarzem tutaj, ale przynajmniej w C nie robi się to huuuge ;)
W
kierunek i -70 (!) bajtów dzięki komentarzom ETHproductionsźródło
);}
do poniższej linii, tak (chociaż nie testowałem rotacji)W
program w twojej bieżącej konfiguracji obecnie kończy się niepowodzeniem, ponieważsn
po rzeczywistym kodzie jest dodatkowy . Najwyraźniej możesz to naprawić, zmieniając ukośnik tuż przedpm
górną linią na średnik.Labirynt , 9 bajtów
Wydruki
0
.Wypróbuj online!Wydruki
3
.Wypróbuj online!Wydruki
1
.Wypróbuj online!Wydruki
2
. Wypróbuj online!Wyjaśnienie
Każdy program rozpoczyna się od pierwszej spacji w kolejności odczytywania (tj. Albo w lewym górnym rogu, albo w górnym środkowym znaku), przesuwając się na wschód. Dla pierwszego programu:
W przypadku drugiego programu:
W przypadku trzeciego programu:
W przypadku czwartego programu:
źródło
Wumpus , 7 bajtów
Wydruki
0
. Wypróbuj online!Wydruki
1
. Wypróbuj online!Wydruki
3
. Wypróbuj online!Wydruki
2
.Wypróbuj online!Wyjaśnienie
Pierwszy program jest dość prosty:
O
wypisuje ukryte zero i@
kończy program.Począwszy od drugiego programu, musimy spojrzeć na trójkątny układ siatki, aby zrozumieć przepływ sterowania:
W przypadku trzeciego programu:
Czwarty z nich jest naprawdę funky. Linie przerywane wskazują komórki, które nie są wykonywane, ponieważ są pomijane przez
$
:źródło
PowerShell ,
2011 bajtówNadużywa komentarzy (
#
) jak wariactwo, a fakt, że pojedyncza liczba umieszczona w potoku jest wyświetlana w niezmienionej postaci. Powyższe wydruki1
. Wypróbuj online!Stąd możesz łatwo zobaczyć, że każdy obrót daje tylko jedną liczbę, która znajduje się po „lewej” stronie komentarza, a więc jest tylko jedna liczba, która będzie wyprowadzana na obrót.
Oszczędność 9 bajtów dzięki Kreatorowi pszenicy !
źródło
Gwiaździsta , 34 bajty
Lub ze spacjami pokazanymi jako łączniki, abyś mógł je zobaczyć:
Wypróbuj online!
Komendy w Starry to
+
,.
i kilka innych rzeczy, i to, co robią jest określana przez ile przestrzenie są przed nimi: a+
z n obowiązuje popycha n -5 do stosu oraz.
o liczbie miejsc odbitek nawet nim. Thez
s i nowe linie są ignorowane w całości.Przed pierwszym jest 6 spacji,
+
więc wypycha 6-5 = 1 i.
drukuje.I obroty:
Wypróbuj online! To wyświetla „8”.
Wypróbuj online! To wyświetla „2”.
Wypróbuj online! I to wyświetla „3”.
źródło
dc , 9 bajtów
Wypróbuj online!
Myślę, że jego oczywistość jest częścią uroku.
źródło
Partia, 90 bajtów
Batch tak naprawdę nie ma znaku komentarza. W przypadku komentarzy obejmujących całą linię
:
działa, ponieważ wprowadza etykietę, ale nadal potrzebuję czegoś, aby zakończyćecho
polecenie, będąc odwróconym opcją.&:
wydaje się działać, co jest wszystkim, czego potrzebuję tutaj, ale naprawdę wprowadza w błąd Batch, popełniając błąd, jeśli nie wstawię znaku:
przed@
następnym wierszem, a także w jakiś sposób zapominam o wydrukowaniu nowego wiersza.źródło
MATLAB,
29 17 511 bajtówPo zrozumieniu, że pytanie wymaga pojedynczych znaków ASCII, a nie tylko wyraźnego wyniku, oto podejście MATLAB, które zrobi to:
Spowoduje to niejawne wydrukowanie 1, 2, 3 lub 4 w zależności od obrotu.
źródło
Kardynał ,
20 17 1211 bajtówWypróbuj online!
Cały czas i nikt nie odpowiedział w Kardynale? Ten pierwszy wychodzi
0
.Wschód
Wypróbuj online!
Wyjścia
1
.południe
Wypróbuj online!
Wyprowadza spację.
Zachód
Wypróbuj online!
Wyjścia
v
.źródło
SOGL V0.12 , 4 bajty
Wyjścia
1
, wypróbuj tutaj!Wyjścia
H
, wypróbuj tutaj!Wyjścia
5
, wypróbuj tutaj!Wyjścia
6
, wypróbuj tutaj!źródło
JS, 17 B.
Wyjścia:
północ: 2,
wschód: 3,
południe: 4,
zachód: 0,333333333333….
(jak w: 2, 3/1, 4, 1/3)
źródło
Przepraszam, miałem na myśli:
i 28B. I wyniki jako 0,5, 3, 2, 0.
źródło
JavaScript (ES6), 86 bajtów
Wyjścia 0 dla Północy, 1 dla Wschodu, 2 dla Południa i 3 dla Zachodu.
Pokaż fragment kodu
źródło
MATL , 11 bajtów
Wypróbuj online!
Zacznijmy od MATL. Głównym wyzwaniem jest to, że MATL po prostu zawodzi, jeśli funkcja wymaga danych wejściowych, jeśli stos jest pusty. Może coś z modyfikatorów, jak mądry
X
,Y
,Z
i&
mógłby zrobić coś krótszego, ale nie mogłem znaleźć odpowiednią kombinację.Objaśnienie: wszystkie postacie wypychają na stos pojedynczą liczbę całkowitą i
x
usuwają wszystkie oprócz ostatniej.źródło
Perl, 49 bajtów
Kod 48 bajtów + 1 dla
-p
.Zakłada puste dane wejściowe, których TIO nie obsługuje, więc nowa linia jest dodawana i nie jest używana. Wydruki N , E , S , W .
Wypróbuj online!
źródło
C (gcc) , 120 bajtów
Miałem nadzieję na większą synergię między wariantami.
Północ
Wschód
południe
Zachód
źródło