स्वाद का पाठ
ढेर आधारित esolang लादना कार्यात्मक प्रोग्रामिंग करने के लिए कुछ रोचक संबंध है। उनमें से एक संख्यात्मक डेटाटाइप का इसका उपचार है - लैम्ब्डा कैलकुलस की तरह, आप एक फ़ंक्शन द्वारा प्राकृतिक संख्या एन का प्रतिनिधित्व करते हैं जो एक क्रिया एन बार करते हैं।
चीजों को सरल बनाने के लिए, हम केवल अंडरलोड कमांड के केवल सबसेट पर विचार करेंगे:
:
- यह कमांड स्टैक पर शीर्ष आइटम को डुप्लिकेट करता है।*
- यह कमांड स्टैक पर शीर्ष दो वस्तुओं को एक आइटम में समेटता है।
हम एक अंडरलोड अंक एन को एक स्ट्रिंग के रूप में परिभाषित करते हैं :
और *
जिसे निष्पादित करते समय, स्टैक पर शीर्ष आइटम का उपभोग करते हैं, और उस आइटम की एन प्रतियों को एक साथ मिलाते हैं। कुछ उदाहरण:
- कोई अंडरलोड अंक 0, -1, 1/2, num हैं।
- खाली स्ट्रिंग
अंडरलोड अंक 1 है, क्योंकि यह स्टैक को अछूता छोड़ देता है।
:*
अंडरलोड अंक 2 है, क्योंकि यह शीर्ष आइटम को डुप्लिकेट करता है, और फिर उन दो प्रतियों को एक ही आइटम में समेट देता है:(A):*
=(A)(A)*
=(AA)
।::**
अंडरलोड अंक है 3:(A)::**
=(A)(A):**
=(A)(AA)*
=(AAA)
।:::***
अंडरलोड अंक 4 है।:*:*
अंडरलोड अंक भी है: 4(A):*:*
=(AA):*
=(AA)(AA)*
=(AAAA)
।
सामान्य तौर पर, आप पाएंगे कि, यदि M
और N
अंडरलोड अंक एम और एन हैं, तो :N*
अंक एन + 1 है, और MN
अंक एम × एन है।
चुनौती
आपका काम सबसे छोटा प्रोग्राम (STDIN पर इनपुट लेना) या फ़ंक्शन (तर्क के माध्यम से इनपुट लेना) लिखना है, जो एक स्ट्रिंग के रूप में अपने इनपुट के लिए अंडरलोड अंक का सबसे कम प्रतिनिधित्व पैदा करता है । कहने का तात्पर्य यह है कि, यदि इनपुट एक पॉजिटिव नेचुरल नंबर N> 1 है, तो आपको एक अंडरलोड अंक N का उत्पादन करना चाहिए, जिसकी लंबाई वर्णों की तुलना में कम है या हर दूसरे अंडरलोड संख्या N के बराबर है।
नमूना इनपुट और आउटपुट: ("इनपुट - OUTPUT
")
- 1 -
।
- 2 -
:*
। - 5 -
::*:**
(2 × 2 + 1)। - 7 -
::*::***
(2 × 3 + 1) या:::**:**
(3 × 2 + 1)। - 33 -
::*:*:*:*:**
(2 × 2 × 2 × 2 × 2 + 1)। - 49 -
::*:*:*:*::***
(16 × 3 + 1, लंबाई 14) लेकिन नहीं::*::***::*::***
(7 × 7, लंबाई 16)।
यदि इनपुट एक सकारात्मक प्राकृतिक संख्या नहीं है, तो आप एक त्रुटि वापस करने के लिए स्वतंत्र हैं, अपरिभाषित व्यवहार का उत्पादन करते हैं, या यहां तक कि समाप्त करने में विफल रहते हैं। जवाब प्रस्तुत करने की आपके प्रस्तुत करने के तरीके की व्याख्या की सराहना की जाती है।
स्टैंडर्ड बचाव प्रतिबंध लागू होते हैं: बिना किसी अतिरिक्त इनपुट, कोई वेब अनुरोध, उत्पादन / वापसी मान वास्तव में इस सवाल का जवाब न कि किसी के अनंत यादृच्छिक धारा होना चाहिए :
और *
, आदि