Zaten bilmiyorsanız, bir kuaterniyon temel olarak 4 parçalı bir sayıdır. Bu zorluğun amaçları doğrultusunda, gerçek bir bileşene ve üç hayali bileşene sahiptir. Sanal bileşenlerinin son takı ile temsil edilir i, j, k. Örneğin, 1-2i+3j-4kbir Dördey olan 1gerçek bileşeni olan ve -2, 3ve -4sanal bileşenlerini olmak.
Bu zorlukta, bir kuaterniyonun (ör. "1+2i-3j-4k") Dize şeklini bir katsayılar listesi / dizisine (ör. ) Ayrıştırmanız gerekir [1 2 -3 -4]. Ancak, kuaterniyon dizgisi birçok farklı şekilde biçimlendirilebilir ...
- Normal olabilir:
1+2i-3j-4k - Bu eksik şartları olabileceğini:
1-3k,2i-4k(eksik terimleri varsa, çıktı0bu terimleri) - Bu katsayıları eksik olabilir:
i+j-k(Bu durumda, bu eşdeğerdir1i+1j-1kBir başka deyişle, bir.i,jYa dakönünde bir sayı olduğu varsayılır olmadan1varsayılan olarak ön) - Doğru sırada olmayabilir:
2i-1+3k-4j - Katsayılar sadece tamsayılar veya ondalık sayılar olabilir:
7-2.4i+3.75j-4.0k
Ayrıştırırken dikkat edilmesi gereken bazı şeyler var:
- Her zaman bir
+veya-arasında terimler olacak - Her zaman en az 1 terimle geçerli girdi geçti ve tekrarlanan harfler (hayır olmadan edilecek
j-jler) - Tüm numaraların geçerli olduğu varsayılabilir
- İsterseniz ayrıştırma sonra başka forma numaralarını değiştirebilirsiniz (ex.
3.0 => 3,0.4 => .4,7 => 7.0)
Ayrıştırma / kuaterniyon yerleşikleri ve standart boşluklar izin verilmez. Bu evalanahtar kelimeler ve fonksiyonlar içerir . Giriş tek bir dize olacak ve çıktı bir liste, bir dizi, boşlukla ayrılmış değerler vb. Olacaktır.
Bu kod golf olduğu için , bayt cinsinden en kısa kod kazanır.
Tonlarca test davası
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]
+.
-0Son iki örnek için yasal çıktının bir parçası mı ?
evalBir dizgede alınacak kısıtlamayı tanımlayalım, kod ve / veya girdi olarak yorumlayalım. Örneğin, "test"bir tamsayı almak için bir tamsayı dönüştürme işlevine dize iletilemediğinden, testnormal bir evalişlevde kod olarak yorumlanacağından, herhangi bir dönüşüm sayılmaz . TLDR: eval: hayır, tür dönüşümleri: evet.
+işaretler olacak mı? Gibi:+1k?