หากคุณยังไม่ทราบ quaternion นั้นเป็นตัวเลข 4 ส่วน สำหรับจุดประสงค์ของการท้าทายนี้มันมีองค์ประกอบจริงและส่วนประกอบจินตภาพสามประการ ส่วนประกอบจินตนาการโดยมีตัวแทนต่อท้ายi
, ,j
k
ยกตัวอย่างเช่น1-2i+3j-4k
เป็น quaternion กับ1
การเป็นองค์ประกอบจริงและ-2
, 3
และ-4
เป็นส่วนประกอบในจินตนาการ
ในการท้าทายนี้คุณจะต้องแยกวิเคราะห์รูปแบบสตริงของ quaternion (เช่น"1+2i-3j-4k"
) ในรายการ / อาร์เรย์ของค่าสัมประสิทธิ์ (เช่น[1 2 -3 -4]
) อย่างไรก็ตามสตริง quaternion สามารถจัดรูปแบบได้หลายวิธี ...
- อาจเป็นเรื่องปกติ:
1+2i-3j-4k
- มันอาจจะมีเงื่อนไขที่ขาดหายไป:
1-3k
,2i-4k
(หากคุณมีคำขาดหายไปเอาท์พุท0
สำหรับเงื่อนไขเหล่านั้น) - มันอาจจะมีค่าสัมประสิทธิ์ขาดหายไป:
i+j-k
(ในกรณีนี้นี้จะเทียบเท่ากับ1i+1j-1k
ในคำอื่น ๆ .i
,j
หรือk
โดยไม่มีหมายเลขในด้านหน้าจะถือว่ามี1
ในหน้าโดยค่าเริ่มต้น) - อาจไม่เป็นไปตามลำดับที่ถูกต้อง:
2i-1+3k-4j
- สัมประสิทธิ์อาจเป็นจำนวนเต็มหรือทศนิยม:
7-2.4i+3.75j-4.0k
มีบางสิ่งที่ควรทราบในขณะที่การแยกวิเคราะห์:
- จะมี
+
หรือ-
ระหว่างเงื่อนไขเสมอ - คุณจะถูกส่งผ่านการป้อนข้อมูลที่ถูกต้องเสมอด้วยอย่างน้อย 1 เทอมและไม่มีตัวอักษรซ้ำ (ไม่มี
j-j
) - ตัวเลขทั้งหมดสามารถสันนิษฐานได้ว่าถูกต้อง
- คุณสามารถเปลี่ยนตัวเลขลงในอีกรูปแบบหนึ่งหลังจากแยกถ้าคุณต้องการ (อดีต.
3.0 => 3
,0.4 => .4
,7 => 7.0
)
ไม่อนุญาตให้ทำการแยกวิเคราะห์และสร้าง quaternion และช่องโหว่มาตรฐาน ซึ่งรวมถึงeval
คำหลักและฟังก์ชั่น อินพุตจะเป็นสตริงเดี่ยวและเอาต์พุตจะเป็นรายการอาร์เรย์ค่าที่คั่นด้วยช่องว่าง ฯลฯ
เช่นนี้คือcode-golfรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
กรณีทดสอบตัน
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
ส่วนหนึ่งของการส่งออกตามกฎหมายสำหรับสองตัวอย่างที่ผ่านมาหรือไม่?
eval
ข้อ จำกัด ที่ต้องใช้ในสตริงตีความเป็นรหัสและ / หรืออินพุต การแปลงใด ๆ จะไม่นับภายใต้สิ่งนี้เนื่องจากคุณไม่สามารถส่งผ่านตัวอย่างเช่นสตริง"test"
ไปยังฟังก์ชันการแปลงจำนวนเต็มเพื่อรับจำนวนเต็ม แต่test
จะตีความว่าเป็นรหัสในeval
ฟังก์ชั่นปกติ TLDR: eval: ไม่ใช่พิมพ์การแปลง: ใช่
+
สัญญาณที่ไม่จำเป็นในอินพุตหรือไม่? ที่ชอบ:+1k
?