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-4kadalah angka empat dengan 1menjadi komponen nyata dan -2, 3, dan -4menjadi 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, keluaran0untuk istilah tersebut) - Mungkin hilang koefisien:
i+j-k(Dalam hal ini, ini setara dengan1i+1j-1kkata lain, a.i,j, Atauktanpa nomor di depan diasumsikan memiliki1di 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 evalkata 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]
+.
-0bagian dari hasil hukum untuk dua contoh terakhir?
evalbatasan 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 testakan ditafsirkan sebagai kode dalam evalfungsi normal . TLDR: eval: tidak, ketik konversi: ya.
+tanda-tanda yang tidak perlu dalam input? Suka+1k:?