Problem zaadaptowany z książki Fortran 77 autorstwa Donalda M. Monro
Wprowadzenie
Cyfrowe maszyny drukujące są szeroko stosowane do tworzenia różnych form rysunków, wykresów i innych obrazów. Większość takich maszyn może poruszać piórami tylko w określonych kierunkach, zwykle jako pojedyncze kroki w kierunku X i Y lub oba. Typowa maszyna poruszałaby się w jednym z ośmiu kierunków pokazanych na ryc. 1:
Fig. 1
Wyzwanie
Napisz program bez funkcji trygonometrycznych, który przyjmuje liczbę od 0 do 7 (włącznie) jako dane wejściowe i wyprowadza odpowiednie współrzędne punktów końcowych na ryc. 1.
Dane wyjściowe powinny być w postaci tablicy lub listy z dwoma elementami (tj. (1, 0)
Lub [0,-1]
)
Tabela we / wy
0 (1, 0)
1 (1, 1)
2 (0, 1)
3 (-1, 1)
4 (-1, 0)
5 (-1, -1)
6 (0, -1)
7 (1, -1)
Zwycięski
Najkrótszy kod w bajtach wygrywa
rotate(x)
funkcja liczy się jako funkcja trygonometryczna? (po prostu obraca „płótno” przezx
radianów)cos, sin, tan, sec
itd.Odpowiedzi:
Galaretka , 8 bajtów
Stosowanie złożonej arytmetyki wydaje się być dozwolone.
Wypróbuj online!
Jak to działa
źródło
Python 2, 29 bajtów
Zwraca współrzędne jako liczbę zespoloną.
źródło
Mathematica, 24 bajty
Czysta funkcja, używanie
Sign
i wiedza, dokąd idą określone parabole.źródło
C,
10386747370 bajtówDzięki @orlp za zapisanie
1215 bajtów!Wypróbuj online!
źródło
"\16\17\13\7\6\5\9\15"[n] == "pw[1*#?i"[n]/7
"biM1*#?["
, ponieważ w"\16\17\13\7\6\5\9\15"
wartościach są liczby ósemkowe, więc 16 == 14 po przecinku, 17 == 15 i tak dalej.!!(n&4) == n/4&1
n&2?n&1:-(n&1) == n%2*~-(n&2)
JavaScript (ES6),
4136 bajtówWykorzystuje dwie proste tabele wyszukiwania, które kodują 8 wpisów w bazie 4 po dodaniu jednego do każdej „cyfry”. Alternatywna wersja, wykorzystująca prostsze tabele wyszukiwania:
Stara wersja (4 bajty krótsze dzięki @Neil):
Naiwne podejście przy użyciu prostych obliczeń, aby znaleźć współrzędne X i Y osobno ...
źródło
r&&(r<4)-(r>4)
czyr%4&&1-(r&4)/2
zapisać bajt na starej wersji.r=>[r>2&r<6?-1:r<2|r>6,r>4?-1:r%4&&1]
n=>[(s='22100012')[n]-1,s[n+6&7]-1]
.TI-Basic, 23 bajty
Zakłada, że kalkulator działa w trybie radian; jeśli to musi być w programie, to ma 25 bajtów.
źródło
Galaretka ,
1312 bajtówNadal jestem dość pewny, że jest krótszy, ale jeszcze niczego nie znalazłem, więc pomyślałem, że to opublikuję
Wypróbuj online! lub zobacz pakiet testowy
W jaki sposób?
Alternatywny sposób , również 12 bajtów :
źródło
C, 66 bajtów
kod testowy
wyniki
źródło
C, 56 bajtów
Proste wyszukiwanie binarne wykonane dwukrotnie. Pierwsze wyszukiwanie odbywa się na n przesuniętym o 2.
Wyniki online w Ideone.
C, 53 bajty
Wyjście bez przecinka można było jeszcze bardziej skompaktować za pomocą wywołania rekurencyjnego.
Wyniki online w Ideone.
źródło