Ada kisah hebat untuk diceritakan tentang segi enam reguler yang ditemukan misalnya di sarang madu. Tetapi lebah yang sibuk ini membutuhkan bantuan Anda untuk memberi tahu dia titik mana di dalam atau di luar honeypot-nya. Jadi, diberi segi enam biasa seperti gambar di bawah, berpusat di titik asal dan dengan ukuran tepi l, tentukan apakah satu set koordinat (x, y) ada di dalam, tepatnya di tepi atau di luar segi enam biasa.
Input, output, dan aturan
Aturannya adalah:
- Metode input dan output mengikuti aturan default .
- Masukan terdiri dari tiga bilangan bulat :
x,y,l
. x
dany
merupakan format integer bertanda tangan yang nyaman.l
positif (tidak pernah 0).- Program Anda harus menampilkan / mengembalikan a
1
jika titik(x,y)
tersebut berada di dalam segi enam biasa,-1
jika di luar atau0
jika tepat di tepi. - Ini adalah kode-golf, sehingga kode terpendek menang. Dalam hal seri, pos paling awal menang.
- Untuk output ke stdout: diizinkan spasi / spasi tambahan atau baris baru dalam output diizinkan.
- Celah standar berlaku.
Uji kasus
Berikut ini beberapa kasus uji:
0,0,1 --> 1
0,1,1 --> -1
0,-1,1 --> -1
1,0,1 --> 0
-1,0,1 --> 0
-1,-1,1 --> -1
1,1,1 --> -1
-2,-3,4 --> 1
32,45,58 --> 1
99,97,155 --> -1
123,135,201 --> 1
Jawaban:
JavaScript (ES6) 77
83Uji
sumber
Ruby,
1501451371271251068876 byte76 byte
Mengubah perbandingan tiga kali lipat dengan roket.
88 byte
Hapus y sama dengan tes apothem untuk poin pada segi enam, karena untuk bilangan bulat, itu tidak pernah benar.
106 byte:
Poster menyarankan agar tidak menggunakan epsilon, jadi ganti epsilon dengan nol dan atur ulang, lepaskan perut, dll.
125 byte:
Masukkan y ke dalam definisi z dan hapus beberapa tanda kurung.
127 byte:
Menyusun ulang persyaratan untuk menghindari keharusan pelemparan to_f. Gunakan d (gandakan apotema) alih-alih a (apotema). Gabungkan beberapa tugas.
137 byte:
Sebaris 'c'.
150 byte:
Ini berfungsi untuk bilangan bulat atau mengapung! Tes epsilon adalah agar titik-titik dalam kesalahan pembulatan berada di tepi diidentifikasi dengan benar.
Nilai absolut memindahkan semuanya ke kuadran.
Nilai 'a' adalah jarak apotem (y-intersep hexagon).
Nilai 'c' adalah nilai-x dari sudut kanan atas segi enam.
Nilai 'z' adalah untuk melihat apakah titik di atas atau di bawah garis miring dari sudut ke intersep x.
Tidak Disatukan:
Uji
sumber
MATL ,
2925 byteInput
y
,x
,l
dalam urutan itu.Cobalah online!
sumber
Julia,
6558 bytex
adalah vektor baris[x y]
. Sebut seperti ini:f([0 0],1)
.sumber
Python 2, 89 byte
solusi yang hampir sama dengan jawaban Julia tetapi kita dapat menggunakan operasi pada vektor tanpa numpy
Hasil
sumber
Pyth, 41 byte
Uji di sini
sumber
JavaScript (ES6), 67 byte
Catatan: Untuk menetapkan ini ke variabel sehingga Anda dapat memanggilnya, masukkan
f=
setelahwith(Math)
.Saya menggunakan
l*l
danb*b
pada parameter pertamamin
untuk menghindari panggilan keabs
dansqrt
tetapi saya tidak bisa mengetahui apakah saya bisa melakukan trik yang sama dengan parameter kedua.sumber