Tulis program atau fungsi yang menggunakan dua bilangan bulat yang mewakili koordinat X dan Y dari suatu titik pada bidang Cartesian .
Input dapat datang dalam format yang wajar asalkan nilai X datang sebelum Y. Sebagai contoh, 1 -2
, (1,-2)
, [1, -2]
, atau 1\n-2
semua akan baik-baik saja untuk X = 1, Y = -2.
Cetak atau kembalikan string karakter tunggal (diikuti oleh baris tambahan opsional) yang menjelaskan lokasi titik di pesawat:
1
jika intinya ada di kuadran I2
jika intinya ada di kuadran II3
jika intinya ada di kuadran III4
jika intinya ada di kuadran IVX
jika titiknya pada sumbu x (huruf kecilx
tidak diperbolehkan)Y
jika titiknya pada sumbu y (huruf kecily
tidak diperbolehkan)O
jika intinya adalah pada asal (itu huruf kapital "oh", bukan nol)
Kode terpendek dalam byte menang. Tiebreaker memilih jawaban yang lebih tinggi.
Uji Kasus
(1,-2) -> 4
(30,56) -> 1
(-2,1) -> 2
(-89,-729) -> 3
(-89,0) -> X
(0,400) -> Y
(0,0) -> O
(0,1) -> Y
(0,-1) -> Y
(1,0) -> X
(-1,0) -> X
(1,1) -> 1
(1,-1) -> 4
(-1,1) -> 2
(-1,-1) -> 3
code-golf
math
number
arithmetic
Hobi Calvin
sumber
sumber
"30+56i"
) format input yang valid?1+2j
)Jawaban:
Jelly, 14 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Ruby, 35 byte
Memanfaatkan
<=>
operator "pesawat ruang angkasa" ( ).x <=> 0
akan kembali0
jikax == 0
1
jikax > 0
-1
jikax < 0
Karenanya,
jika
x == 0
kita kembali'OY'[y<=>0]
. Ini adalahO
ify == 0
(string indexing at0
)Y
ify != 0
(ini benar karena keduanya1
dan-1
akan menghasilkanY
saat pengindeksan pada string ini, sebagaimana-1
merujuk pada karakter terakhir dalam string, yang juga merupakan yang ada di indeks 1)jika
x > 0
kita kembali'X14'[y<=>0]
. Ini adalahX
jikay == 0
,1
jikay > 0
, dan4
jikay < 0
(lihat penjelasan di atas).jika
x < 0
kita kembali'X23'[y<=>0]
.sumber
JavaScript, 44 byte
Tampilkan cuplikan kode
sumber
s/^f=//
)ES6, 43 byte
Seluruh byte lebih pendek dari semua terner itu!
sumber
Japt,
3022 byteTerinspirasi oleh jawaban Jelly @ Dennis 'sebelum dia menambahkan penjelasan. Uji secara online!
Fakta menyenangkan: ini akan menjadi dua byte lebih pendek jika saya telah menambahkan dukungan untuk angka negatif dalam
g
fungsi untuk string.Upaya lain, lebih dekat dengan Jelly satu (23 byte):
Sayangnya, penambahan daftar biaya 4 byte ...
sumber
MATL , 22 byte
Ini menggunakan rilis saat ini (10.2.1) dari bahasa / kompiler.
Cobalah online!
Penjelasan
Ini tanpa malu meminjam pendekatan hebat dalam jawaban Dennis .
sumber
Pyth, 18 byte
Penjelasan:
Coba di sini.
Atau seluruh test suite
sumber
Python 2, 75 byte
Cukup mudah.
sumber
Mathematica 81 byte
sumber
Retina , 52
Ini adalah metode berbasis substitusi sederhana:
Cobalah online . Ekstra
m`
di awal beberapa baris hanya diperlukan untuk menguji beberapa input sekaligus, jadi tidak dihitung dalam skor.Sebelumnya saya mencoba pendekatan yang lebih menarik ini , tapi agak lebih lama (sekitar 65 tanpa
m
pengubah):1
meninggalkan-
tanda di tempatnya-1
dengan2
3
dan1
masing - masing sebagai digit unary. Ini secara efektif memberikan 2 digit base3, dinyatakan dalam unary3
s ke111
. Ini secara efektif memberikan angka unary tunggal yang sesuai dengan masing-masing kuadran, sumbu dan asalsumber
X
panggung perlu$
karena tidak akan ada nol terkemuka di input.Oktaf, 34 byte
Trik base-3 yang lama melalui perkalian vektor (walaupun saya harus menambahkan 5 untuk memperhitungkan indeks array berbasis 1) ditambah beberapa sihir pengindeksan oktaf.
Input adalah vektor dari formulir
[1, -2]
(dengan atau tanpa koma), jadi ketika ditugaskan ke variabelw
:Ini dia ideone .
sumber
Pyth, 24
Terlalu panjang, tapi mungkin pendekatan yang menarik:
Input harus ditentukan sebagai angka kompleks, mis
1-2j
. Pada dasarnya terner bersarang untuk diuji:O
Y
X
Cobalah online.
sumber
Java 8, 64 byte
ini adalah ungkapan lambda untuk a
BiFunction<Integer,Integer,String>
.3 byte dapat disimpan dengan mengembalikan
Character
bukanString
tapi saya tidak sepenuhnya yakin apakah autoboxing akan bermain dengan baik dengan lambda.sumber