Nếu bạn chưa biết, thì một bộ tứ về cơ bản là một số gồm 4 phần. Đối với mục đích của thử thách này, nó có một thành phần thực và ba thành phần tưởng tượng . Các thành phần tưởng tượng được đại diện bởi các hậu tố i
, j
, k
. Ví dụ, 1-2i+3j-4k
là một quaternion với 1
là thành phần thực tế và -2
, 3
và -4
là thành phần tưởng tượng.
Trong thử thách này, bạn phải phân tích dạng chuỗi của một bậc bốn (ví dụ "1+2i-3j-4k"
) thành một danh sách / mảng các hệ số (ví dụ [1 2 -3 -4]
). Tuy nhiên, chuỗi bậc bốn có thể được định dạng theo nhiều cách khác nhau ...
- Nó có thể là bình thường:
1+2i-3j-4k
- Nó có thể thiếu các điều khoản :
1-3k
,2i-4k
(Nếu bạn thiếu các điều khoản, đầu ra0
cho các điều khoản đó) - Nó có thể đã mất tích hệ số:
i+j-k
(Trong trường hợp này, điều này tương đương với1i+1j-1k
Nói cách khác, a.i
,j
Hoặck
không có một số ở phía trước được giả định có một1
trước theo mặc định) - Nó có thể không theo đúng thứ tự:
2i-1+3k-4j
- Các hệ số có thể chỉ đơn giản là số nguyên hoặc số thập phân:
7-2.4i+3.75j-4.0k
Có một số điều cần lưu ý trong khi phân tích cú pháp:
- Sẽ luôn có một
+
hoặc-
giữa các điều khoản - Bạn sẽ luôn được thông qua đầu vào hợp lệ với ít nhất 1 thuật ngữ và không có chữ cái lặp lại (không có
j-j
) - Tất cả các số có thể được coi là hợp lệ
- Bạn có thể thay đổi số sang loại hình khác sau khi phân tích cú pháp nếu bạn muốn (ví dụ.
3.0 => 3
,0.4 => .4
,7 => 7.0
)
Phân tích cú pháp / quernion dựng và sơ hở tiêu chuẩn không được phép. Điều này bao gồm các eval
từ khóa và chức năng. Đầu vào sẽ là một chuỗi đơn và đầu ra sẽ là một danh sách, một mảng, các giá trị được phân tách bằng khoảng trắng, v.v.
Vì đây là môn đánh gôn , mã ngắn nhất tính bằng byte sẽ thắng.
Tấn thử nghiệm
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
một phần của đầu ra hợp pháp cho hai ví dụ cuối cùng?
eval
hạn chế được thực hiện trong một chuỗi, diễn giải dưới dạng mã và / hoặc đầu vào. Bất kỳ chuyển đổi nào không được tính theo điều này bởi vì bạn không thể vượt qua, ví dụ, chuỗi "test"
thành hàm chuyển đổi số nguyên để nhận số nguyên, nhưng test
sẽ được hiểu là mã trong một eval
hàm bình thường . TLDR: eval: không, chuyển đổi loại: có.
+
dấu hiệu không cần thiết trong đầu vào? Giống như :+1k
?