.
Ajax,.
Ford,.
Act I:.
Scene I:.
[Enter Ajax and Ford]
Scene II:.
Ford:
Open your mind.Is sky nicer than you?If so, let us return to scene IV.
Ajax:
Open your mind.You is sum you and sum big big big big big big pig and big big big big cat!
Scene III:.
Ford:
Speak thy mind.
Ajax:
You is sum you and pig!Is you as big as zero?If so, let us return to scene II.Let us return to scene III.
Scene IV:.
[Exeunt]
Ungolfed संस्करण:
The Decoding of the Lengths of Veronan Runs - A Drama of PPCG.
Romeo, quite a character.
Juliet, Romeo's lover and multiplicand.
Act I: In which the lengths of runs are decoded.
Scene I: A silent entrance.
[Enter Romeo and Juliet]
Scene II: In which neither Romeo nor Juliet believes the other open-minded.
Juliet:
Open your mind. Is my mother jollier than thou? If so,
we must proceed to scene IV.
Romeo:
Open your mind. Thou art the sum of thyself and the sum of my good aunt and
the difference between nothing and the quotient of the square of twice the sum
of thy foul fat-kidneyed goat and thy death and thy evil variable!
Scene III: In which Romeo snaps and brutally insults Juliet.
Juliet:
Speak thy mind.
Romeo:
Thou art the sum of thyself and a hog! Art thou as rotten as nothing? If so,
let us return to scene II. Let us return to scene III.
Scene IV: Finale.
[Exeunt]
मैं drsam94 के Python SPL संकलक का उपयोग कर रहा हूं , जिसमें कुछ कीड़े हैं (इसलिए, उदाहरण के लिए, मैं Open your mind
इसके बजाय उपयोग करता हूंOpen thy mind
गोल्फ संस्करण में करता हूं)।
इस कार्यक्रम को चलाने के लिए, उपयोग करें:
$ python splc.py rld.spl > rld.c
$ gcc rld.c -o rld.exe
$ echo -n ":144,1'1" | ./rld
:4444,'
यह काम किस प्रकार करता है
एसपीएल एक गूढ़ प्रोग्रामिंग भाषा है जिसे कार्यक्रमों को शेक्सपियर नाटकों की तरह बनाया गया है। यह वर्णों को चर के रूप में उपयोग करके करता है, और वर्णों को एक दूसरे से बातें कहने के द्वारा प्रसंस्करण किया जाता है।
The Decoding of the Lengths of Veronan Runs - A Drama of PPCG.
यह नाटक का शीर्षक है; यह संकलक द्वारा नजरअंदाज कर दिया है।
Romeo, quite a character.
Juliet, Romeo's lover and multiplicand.
यहां हम बाकी प्रोग्राम में इस्तेमाल किए गए वेरिएबल्स को घोषित कर रहे हैं। सब कुछ betwen ,
और .
संकलक द्वारा नजरअंदाज कर दिया है। इस मामले में, हम घोषणा करते हैं Romeo
, चरित्र को डिकोड किया जा रहा है, और Juliet
, चरित्र की रन लंबाई को धारण करने के लिए उपयोग किया जाता है।
Act I: In which the lengths of runs are decoded.
यहां हम कार्यक्रम में पहली और एकमात्र कार्रवाई की घोषणा करते हैं। अधिनियम और दृश्य लेबल की तरह हैं; वे किसी भी समय let us return to scene II
या उस के कुछ प्रकार का उपयोग करके कूद सकते हैं । हम केवल एक अधिनियम का उपयोग करते हैं, क्योंकि यह हमारी आवश्यकताओं के लिए पर्याप्त है। फिर से, बीच में कुछ भी :
और .
संकलक द्वारा नजरअंदाज कर दिया जाता है।
Scene I: A silent entrance.
यहां हम पहला दृश्य घोषित करते हैं। दृश्य रोमन अंकों में गिने जाते हैं: पहला है Scene I
, दूसरा Scene II
, और इसी तरह।
[Enter Romeo and Juliet]
यह एक चरण की दिशा है; इसमें, हम "चरण" पर आने के लिए चर Romeo
और Juliet
चर बताते हैं। केवल दो चर "मंच" पर एक बार में हो सकते हैं; मंच का उपयोग किया जाता है ताकि संकलक यह पता लगा सके कि किस चर को संबोधित किया जा रहा है जब वे बोलते हैं। क्योंकि हमारे पास केवल दो चर हैं, रोमियो और जूलियट कार्यक्रम की लंबाई के लिए मंच पर रहेंगे।
Scene II: In which neither Romeo nor Juliet believes the other open-minded.
एक और दृश्य घोषणा। एक और रन-लंबाई को डिकोड करने के लिए सीन II को जंप किया जाएगा।
Juliet:
घोषणा के इस रूप का मतलब है कि जूलियट ने बोलना शुरू किया है। अगले Romeo:
, मंच की दिशा, या दृश्य / अभिनय घोषणा तक सब कुछ जूलियट द्वारा बोली जाने वाली एक पंक्ति होगी, और इस तरह "मुझे" जूलियट, "आप" / "तू" रोमियो, आदि के लिए संदर्भित करेगा।
Open your mind.
यह कमांड STDIN से एकल वर्ण के क्रमिक मूल्य को संग्रहीत करता है Romeo
।
Is my mother jollier than thou?
एसपीएल में, संज्ञाएं 1 या -1 का अनुवाद करती हैं, इस पर निर्भर करता है कि वे सकारात्मक हैं या नकारात्मक। इस मामले में, my mother
1 से अनुवाद। विशेषण (सकारात्मक या नकारात्मक) उनकी संज्ञा को 2 से गुणा करते हैं।
यह एक प्रश्न है; इसमें, जूलियट पूछता है कि क्या my mother
(AKA 1) रोमियो की तुलना में "जूलियर" है। तुलनाएं या तो अनुवाद करती हैं less than
(यदि वे नकारात्मक हैं, जैसे worse
) या greater than
(यदि वे सकारात्मक हैं, जैसे jollier
)। इसलिए, यह सवाल उबलता है Is 1 greater than you?
।
इस प्रश्न को पूछने का कारण इनपुट के अंत का पता लगाना है। चूंकि EOF
प्लेटफ़ॉर्म द्वारा भिन्न होता है, लेकिन आमतौर पर 1 से कम होता है, इसलिए हम इसका पता लगाने के लिए इसका उपयोग करते हैं।
If so, we must proceed to scene IV.
यदि पूर्ववर्ती प्रश्न का मूल्यांकन किया जाता है true
, तो हम IV पर जाते हैं - जो कि कार्यक्रम का अंत है। संक्षेप में, यदि हम एक ईओएफ का पता लगाते हैं, तो हम कार्यक्रम को समाप्त करते हैं।
Romeo:
यह अब रोमियो की पंक्ति है: "मैं" और "आप" क्रमशः रोमियो और जूलियट को संदर्भित करते हैं।
Open your mind.
फिर, यह कथन एसटीडीआईएन से जूलियट में एकल चरित्र के क्रमिक मूल्य को रखता है, जो इस मामले में संग्रहीत चरित्र की रन-लंबाई है Romeo
।
Thou art the sum of thyself and the sum of my good aunt and the difference
between nothing and the quotient of the square of twice the sum of thy foul
fat-kidneyed goat and thy death and thy evil variable!
यह बहुत विस्तार में जाने के लिए बहुत लंबा है, लेकिन बस मुझ पर भरोसा है कि यह अनुवाद करता है Juliet -= 48
। हम ऐसा इसलिए करते हैं क्योंकि जूलियट एक अंक के ASCII मूल्य रखती है, और ord('0') == 48
; 48 को घटाते हुए, हम एक संख्या के ASCII मान से संख्या में ही अनुवाद करते हैं।
Scene III: In which Romeo snaps and brutally insults Juliet.
एक और दृश्य घोषणा। यह एक पाश जिसमें हम बार-बार के चरित्र मूल्य प्रिंट के लिए है Romeo
, Juliet
कई बार।
Juliet:
Speak thy mind.
यह कथन रोमियो को एक चरित्र के रूप में उनके मूल्य को मुद्रित करने का कारण बनता है; यानी रोमियो में जो भी कैरेक्टर वैल्यू पहले स्टोर की गई थी, अब आउटपुट है।
Romeo:
Thou art the sum of thyself and a hog!
हॉग एक नकारात्मक संज्ञा है, इसलिए a hog
-1 में अनुवाद करता है; इसलिए, यह कथन मूल्यांकन करता है Juliet -= 1
।
Art thou as rotten as nothing?
रोमियो यहां पूछता है कि क्या जूलियट "के रूप में सड़ा हुआ है", या इसके बराबर, 0।
If so, let us return to scene II.
यदि जूलियट का मान 0 है, तो हम दूसरे दृश्य के रन-लेंथ को डिकोड करने के लिए II पर वापस आते हैं।
Let us return to scene III.
वरना, हम रोम के चरित्र को फिर से प्रोड्यूस करने के लिए III पर वापस आते हैं।
Scene IV: Finale.
[Exeunt]
यह अंतिम दृश्य घोषणा कार्यक्रम के अंत के लिए सिर्फ एक मार्कर है। [Exeunt]
चरण दिशा संकलक पाने के लिए करने के लिए वास्तव में अंतिम दृश्य उत्पन्न आवश्यक है।