N.Puck,.Page,.Ford,.Ajax,.Act I:.Scene I:.[Enter Puck and Ford]Puck:Listen to thy heart!Ford:You is the difference between a cat and I.Scene V:.[Exeunt][Enter Page and Ajax]Ajax:You is the difference between a cat and Ford.Scene X:.Page:You is the product of Puck and I.Is you as big as zero?If so,you is the sum of the sum of the sum of a big big big big big cat and a big big big cat and a big cat and a cat.If not,you big big big big big cat.Speak thy mind!Ajax:You is the sum of you and a cat.Is you as big as Ford?If not,let us return to Scene X.Page:You is the sum of a big big big cat and a big cat.Speak thy mind![Exit Page][Enter Puck]Ajax:You is the sum of you and a cat.Is you as big as Ford?If not,let us return to Scene V.[Exeunt]
इसे ऑनलाइन आज़माएं!
संपादित करें: आधिकारिक एसपीएल कार्यान्वयन के साथ उत्तर को संगत बनाया - मैं इसे पहले काम करने के लिए नहीं मिला।
गोल्फ बाइट्स 6 बाइट्स क्योंकि सीन नंबर लगातार नहीं होते।
व्याख्या :
एसपीएल शेक्सपियर के नाटकों की तरह दिखने के लिए डिज़ाइन किया गया एक एसोलैंग है। सकारात्मक संज्ञाओं का मान 1 होता है (यहाँ बिल्ली का उपयोग किया जाता है) और नकारात्मक संज्ञा का मान -1 होता है (कोई भी उपयोग नहीं किया जाता था लेकिन सुअर उनमें से एक है)। विशेषण एक स्थिर को 2 से गुणा करके संशोधित करते हैं।
N.
पहली बिंदी तक सब कुछ शीर्षक है और कोई फर्क नहीं पड़ता।
Puck,. row counter
Page,. column counter
Ford,. input
Ajax,. temp
वर्ण पूर्णांक चर हैं, उनमें से प्रत्येक में एक स्टैक भी है लेकिन मुझे उस सुविधा का उपयोग करने की आवश्यकता नहीं थी।
Act I:.
Scene I:.
अधिनियमों और दृश्यों को गोटो लेबल के रूप में उपयोग किया जाता है
[Enter Puck and Ford]
यह केवल तभी उपयोगी है जब ठीक दो वर्ण एक ही समय में मंच पर हों।
Puck:Listen to thy heart!
एक नंबर पढ़ता है और फोर्ड को याद करता है।
Ford:You is the difference between a cat and I.
जैसा कि आप देख सकते हैं कि एसपीएल में एंग्रीश वैध है। यह पक का मूल्य "एक बिल्ली और मैं के बीच का अंतर" बनाता है। लेकिन इसका मतलब क्या है? cat
एक सकारात्मक संज्ञा है, इसलिए यह है Puck = 1 - Ford
।
Scene II:.
[Exeunt]
Exeunt सिर्फ "बाहर निकलने" का बहुवचन है, और बिना तर्क के इसका मतलब है कि मंच पर हर कोई बाहर निकलता है।
[Enter Page and Ajax]
Ajax:You is the difference between a cat and Ford.
यह भी है Page = 1 - Ford
लेकिन यह एक अलग अभिनेता द्वारा बोली जाती है इसलिए I
यह गलत होगा। चूंकि यह एक लूप है, मैं इसके मूल्य को कॉपी नहीं कर सकता Puck
।
Scene III:.
Page:You is the product of Puck and I.
अब तक बहुत सीधा। Ajax = Puck * Page
।
Is you as big as zero?
"as [adj] जैसा कि" ==
ऑपरेटर है।
If so,you is the sum of the sum of the sum of a big big big big big cat and a big big big cat and a big cat and a cat.
यदि अजाक्स == 0 ... "बिल्ली" 1 है, तो "बड़ी बिल्ली" 2 है, "बड़ी बिल्ली" 4 है और इसी तरह। सरल स्थिरांक को प्रतिस्थापित करने के बाद हमें "32 और 8 और 2 और 1 का योग का योग" -> "40 और 2 का योग और 1" -> "42 और 1 का योग" मिलता है -> "43", जो कि + के लिए ASCII है।
If not,you fat fat fat fat fat cat.
अन्यथा यह केवल "वसा वसा वसा वसा बिल्ली" है, इसलिए अजाक्स को एक स्थान के लिए 32, एएससीआईआई का मूल्य मिलता है।
Speak thy mind!
यह एक चरित्र के आउटपुट के लिए कमांड है।
Ajax:
You sum you and cat.Is you as big as Ford?If not,let us return to Scene III.
यह एक पाश निर्माण है। "आप योग और बिल्ली" वेतन वृद्धि पृष्ठ, और if(Page != Ford) goto Scene III
। कार्यक्रम के बाकी हिस्सों में एक ही घटक का उपयोग किया जाता है, इसलिए यहां एक अधिक पठनीय छद्मकोड संस्करण है:
दृश्य 1:
इनपुट = [इनपुट नंबर];
पंक्ति = 0 - इनपुट + 1;
scene2:
col = 0 - input + 1;
Scene3:
अस्थायी = पंक्ति * कर्नल;
अगर (अस्थायी == 0) {
अस्थायी = '+';
}अन्य{
अस्थायी = '';
}
putchar (अस्थायी);
पृष्ठ = पृष्ठ + 1;
if (पेज! = Ford) गोटो सीन 3;
अजाक्स = 10;
putchar (अजाक्स);
पक = पक + १;
अगर (पक! = फोर्ड) गोटो सीन 2;