Masalah diadaptasi dari buku Fortran 77 oleh Donald M. Monro
pengantar
Mesin plot digital banyak digunakan untuk menghasilkan berbagai bentuk gambar, grafik dan hasil foto lainnya. Sebagian besar mesin tersebut dapat memindahkan pena mereka hanya ke arah tertentu, biasanya sebagai langkah tunggal dalam arah X dan Y atau keduanya. Mesin khas akan bergerak di salah satu dari delapan arah yang ditunjukkan pada Gambar. 1:
Fig. 1
Tantangan
Tulis program tanpa fungsi trigonometri yang mengambil angka dari 0 hingga 7 (inklusif) sebagai input dan output koordinat titik akhir yang sesuai pada Gambar. 1.
Output harus berupa array atau daftar dengan dua elemen (yaitu (1, 0)
atau [0,-1]
)
Daftar I / O
0 (1, 0)
1 (1, 1)
2 (0, 1)
3 (-1, 1)
4 (-1, 0)
5 (-1, -1)
6 (0, -1)
7 (1, -1)
Kemenangan
Kode terpendek dalam byte menang
rotate(x)
fungsi dihitung sebagai fungsi trigonometri? (itu hanya memutar "kanvas" olehx
radian)cos, sin, tan, sec
dll.Jawaban:
Jelly , 8 byte
Menggunakan aritmatika kompleks tampaknya diizinkan.
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2, 29 byte
Mengembalikan koordinat sebagai bilangan kompleks.
sumber
Mathematica, 24 byte
Berfungsi murni, menggunakan
Sign
dan mengetahui ke mana parabola tertentu pergi.sumber
C,
10386747370 byteTerima kasih kepada @orlp karena telah menghemat
1215 byte!Cobalah online!
sumber
"\16\17\13\7\6\5\9\15"[n] == "pw[1*#?i"[n]/7
"biM1*#?["
, karena dalam"\16\17\13\7\6\5\9\15"
nilainya adalah angka oktal, jadi 16 == 14 dalam desimal, 17 == 15 dan seterusnya.!!(n&4) == n/4&1
n&2?n&1:-(n&1) == n%2*~-(n&2)
JavaScript (ES6),
4136 byteMenggunakan dua tabel pencarian sederhana yang mengkodekan 8 entri di basis 4 setelah menambahkan satu ke setiap "digit". Versi alternatif, menggunakan tabel pencarian yang lebih sederhana:
Versi lama (4 byte lebih pendek berkat @Neil):
Pendekatan naif menggunakan beberapa perhitungan sederhana untuk menemukan koordinat X dan Y secara terpisah ...
sumber
r&&(r<4)-(r>4)
ataur%4&&1-(r&4)/2
menyimpan byte pada versi lama Anda.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 byte
Asumsikan kalkulator Anda dalam mode radian; jika itu perlu dalam program, maka itu adalah 25 byte.
sumber
Jelly ,
1312 byteSaya masih cukup yakin ada yang lebih pendek, tetapi saya belum menemukan apa pun, jadi saya pikir akan memposting ini
Cobalah online! atau lihat test suite
Bagaimana?
Sebuah metode alternatif , juga 12 byte :
sumber
C, 66 byte
kode uji
hasil
sumber
C, 56 byte
Pencarian biner sederhana dilakukan dua kali. Pencarian pertama dilakukan pada n digeser oleh 2.
Output online pada Ideone.
C, 53 byte
Output tanpa koma dapat dipadatkan bahkan lebih menggunakan panggilan rekursif.
Output online pada Ideone.
sumber