Jika Anda belum tahu, angka empat pada dasarnya adalah nomor 4 bagian. Untuk keperluan tantangan ini, ia memiliki komponen nyata dan tiga komponen imajiner . Komponen imajiner yang diwakili oleh akhiran i
, j
, k
. Sebagai contoh, 1-2i+3j-4k
adalah angka empat dengan 1
menjadi komponen nyata dan -2
, 3
, dan -4
menjadi komponen imajiner.
Dalam tantangan ini, Anda harus menguraikan bentuk string dari angka empat (mis. "1+2i-3j-4k"
) Ke daftar / array koefisien (mis. [1 2 -3 -4]
). Namun, string angka empat dapat diformat dalam berbagai cara ...
- Mungkin normal:
1+2i-3j-4k
- Ini mungkin memiliki istilah yang hilang:
1-3k
,2i-4k
(Jika Anda memiliki istilah hilang, keluaran0
untuk istilah tersebut) - Mungkin hilang koefisien:
i+j-k
(Dalam hal ini, ini setara dengan1i+1j-1k
kata lain, a.i
,j
, Atauk
tanpa nomor di depan diasumsikan memiliki1
di depan secara default) - Itu mungkin tidak dalam urutan yang benar:
2i-1+3k-4j
- Koefisien mungkin hanya bilangan bulat atau desimal:
7-2.4i+3.75j-4.0k
Ada beberapa hal yang perlu diperhatikan saat parsing:
- Akan selalu ada
+
atau-
antara istilah - Anda akan selalu melewati input yang valid dengan setidaknya 1 istilah, dan tanpa huruf yang diulang (tidak ada
j-j
) - Semua angka dapat dianggap valid
- Anda dapat mengubah nomor ke dalam bentuk lain setelah parsing jika Anda ingin (ex.
3.0 => 3
,0.4 => .4
,7 => 7.0
)
Parsing / angka empat builtinion dan lubang standar tidak diizinkan. Ini termasuk eval
kata kunci dan fungsi. Input akan berupa string tunggal dan output akan berupa daftar, array, nilai yang dipisahkan oleh spasi, dll.
Karena ini adalah kode-golf , kode terpendek dalam byte menang.
Banyak kasus uji
1+2i+3j+4k => [1 2 3 4]
-1+3i-3j+7k => [-1 3 -3 7]
-1-4i-9j-2k => [-1 -4 -9 -2]
17-16i-15j-14k => [17 -16 -15 -14]
7+2i => [7 2 0 0]
2i-6k => [0 2 0 -6]
1-5j+2k => [1 0 -5 2]
3+4i-9k => [3 4 0 -9]
42i+j-k => [0 42 1 -1]
6-2i+j-3k => [6 -2 1 -3]
1+i+j+k => [1 1 1 1]
-1-i-j-k => [-1 -1 -1 -1]
16k-20j+2i-7 => [-7 2 -20 16]
i+4k-3j+2 => [2 1 -3 4]
5k-2i+9+3j => [9 -2 3 5]
5k-2j+3 => [3 0 -2 5]
1.75-1.75i-1.75j-1.75k => [1.75 -1.75 -1.75 -1.75]
2.0j-3k+0.47i-13 => [-13 0.47 2.0 -3] or [-13 .47 2 -3]
5.6-3i => [5.6 -3 0 0]
k-7.6i => [0 -7.6 0 1]
0 => [0 0 0 0]
0j+0k => [0 0 0 0]
-0j => [0 0 0 0] or [0 0 -0 0]
1-0k => [1 0 0 0] or [1 0 0 -0]
+
.
-0
bagian dari hasil hukum untuk dua contoh terakhir?
eval
batasan yang harus diambil dalam sebuah string, diartikan sebagai kode dan / atau input. Konversi apa pun tidak dihitung di bawah ini karena Anda tidak dapat meneruskan, misalnya, string "test"
ke fungsi konversi integer untuk menerima integer, tetapi test
akan ditafsirkan sebagai kode dalam eval
fungsi normal . TLDR: eval: tidak, ketik konversi: ya.
+
tanda-tanda yang tidak perlu dalam input? Suka+1k
:?