विभाजन जटिल संख्याओं , जिसे "हक्का-बक्का संख्या" के रूप में जाना जटिल संख्याओं के समान हैं। i^2 = -1
हालांकि, इसके बजाय , हमारे पास है j^2 = 1; j != +/-1
। प्रत्येक संख्या का रूप लेता है z = x + j*y
।
इस चुनौती की जटिलता को सीमित करने के एक प्रयास में, मैं प्रतीक -
का उपयोग नकारात्मकता का प्रतिनिधित्व करने के लिए करूंगा, क्योंकि इसमें कोई घटाव नहीं होगा।
आपके आनंद को देखने के लिए यहां कुछ उदाहरण दिए गए हैं:
6 * 9 = 54 // real numbers still act normally
5 + -7 = -2
j*1 + j*1 = j*2 // two `j`s added together make a j*2
7 * j*1 = j*7 // multiplication is commutative & associative
j*1 + 2 = 2+j*1 // like oil and water, "combine" to form a split-complex number
j*1 + j*-3 = j*-2 // seems okay so far
j*j*1 = j*-1*j*-1 = 1 // kinda sketchy, but such is its inherent nature
j*j*-1 = j*-1*j*1 = -1
(2+j*3)+(4+j*7) = 6+j*10 // combine like terms
7 * (2+j*3) = 14+j*21 // distributive property
j * (2+j*3) = (j*2) + (j*j*3) = 3+j*2 // since j^2 = 1, multiplying my j "swaps" the coefficients
(2+j*3)*(4+j*7) = (2*4)+(2*j*7)+(j*3*4)+(j*3*j*7) = 8+j*14+j*12+21 = 29+j*26 // a complete multiplication
चुनौती
इस चुनौती का लक्ष्य विभाजन-जटिल संख्याओं के साथ एक अभिव्यक्ति का मूल्यांकन करना है।
यह कोड-गोल्फ है, सबसे कम बाइट्स जीतता है।
इनपुट
इनपुट एक सिंगल लाइन होगी जिसमें केवल वैकल्पिक न्यूलाइन के साथ केवल प्रतीक +*()-
, अंक 0123456789
और पत्र होंगे j
। यह स्ट्रिंग एक अभिव्यक्ति का प्रतिनिधित्व करती है, infix संकेतन और ऑपरेटर पूर्वता (कोष्ठक के साथ जोड़ से पहले गुणा) का उपयोग करते हुए।
- प्रतीक
-
हमेशा उपेक्षा का प्रतिनिधित्व करेगा, कभी घटाव नहीं। यदि आप चाहते हैं, तो आप या-
तो_
~
आसानी से I / O की जगह ले सकते हैं । - समूहन को निरूपित करने के लिए कोष्ठक को तीन बार तक घोंसला बनाया जा सकता है:
(1+(1+(1)))
- पत्र
j
कभी भी नकारात्मकता के साथ सीधे उपसर्ग नहीं होगा, और हमेशा उसके बाद होगा*
। - कोष्ठक नकारात्मकता से पहले नहीं होगा
-(7)
, बल्कि इसके बजाय-1*(j*5+2)
- कभी भी निहितार्थ नहीं होंगे। सभी गुणा के रूप में व्यक्त किया जाएगा
(7)*7
के बजाय(7)7
, और के रूप मेंj*5
के बजायj5
। - कोई अग्रणी शून्य नहीं।
उत्पादन
आउटपुट के रूप में होगा X+j*Y
, जहां एक्स और वाई कोई भी पूर्णांक हो सकता है। यदि एक पूर्णांक ऋणात्मक है, तो इसे ऋण चिन्ह के साथ उपसर्ग करना चाहिए।
अतिरिक्त प्रतिबंध
यद्यपि मुझे देशी समर्थन के साथ किसी भी भाषा के बारे में पता नहीं है, अंतर्निहित विभाजन से निपटने के लिए बिल्ट-इन निषिद्ध हैं। नियमित जटिल संख्याएं निष्पक्ष खेल हैं।
परीक्षण के मामलों
उपर्युक्त उदाहरणों के समान ही, लेकिन यह स्पष्ट है। एक लाइन पर इनपुट और नीचे की लाइन आउटपुट।
(2+j*3)+(4+j*7)
6+j*10
(2+j*3)*(4+j*7)
29+j*26
(-5+j*1+j*2+2)*(4+j*7)
9+j*-9
(1+j*-1)*(1+j*1)
0+j*0 // this is why division does not exist.
j*((j*-1)+2)
-1+j*2
(2+(5+-1*(j*1))+2)
9+j*-1
j=[0 1; 1 0]
और शीर्ष पंक्ति से गुणांक को पढ़ सकती है।