पायथ शायद सबसे सफल सामान्य-उद्देश्य वाली गोल्फ भाषा है। हालांकि यह नई भाषाओं के परिणामस्वरूप कुछ हद तक गिरावट में है, 2014 से 2016 तक पाइथ के संक्षिप्त सिंटैक्स, निरंतर अपडेट, ओवरलोडिंग और (अपने युग के लिए) कई बिल्डिंस ने इसे अधिकांश प्रश्नों के लिए पसंदीदा बना दिया।
पायथ कोड को अक्सर पढ़ना मुश्किल होता है। यहां तक कि डिबग मोड (ट्रांसप्लेड पायथन) के आउटपुट में अक्सर एक लंबी लाइन होती है, कभी-कभी कोष्ठक के साथ दस गहरी नेस्टेड होते हैं। हालांकि, सही ढंग से स्वरूपित पायथ बहुत पठनीय है।
यहाँ प्ले वर्ड चेन में @isaacg द्वारा लिखा गया Pyth कोड का एक टुकड़ा है ।
.MlZfqhMtTeMPT+Lzs.pMyQ
यह इस तरह बहुत अधिक पठनीय है।
.M Filter by gives-maximal-value of
l Z lambda Z:length(Z) over
f filter by (lambda T:
q equal
hM t T head-map tail T
eM P T end-map Pop T)
+L Append z to each element in
z
s .pM y Q flattened permutations of each subset of Q
इस चुनौती के लिए, हम Pyth वर्णों को श्रेणीबद्ध करने और स्वरूपण पर ध्यान केंद्रित करने के kolmogorov-complexity पहलू को समाप्त करते हैं । Pyth कोड होने के बजाय, इनपुट में वर्ण शामिल होंगे 0123456789M
। अंक , n
एरिटी के एक फंक्शन को दर्शाता है n
और M
एक ऑपरेटर को दर्शाता है। उदाहरण के लिए, उपरोक्त कोड को इस रूप में दर्शाया गया है 210221M101M102M011M10
। यहाँ कदम हैं:
स्ट्रिंग को टोकन में अलग करें।
एक टोकन मेल खाता है [0-9]M*
। 0M
इनपुट में नहीं होगा।
अनुगामी 0 s जोड़ें।
जब पर्याप्त तर्क नहीं होते हैं, तो Pyth कोड को कई निहित चर (लैम्ब्डा वैरिएबल या Q
s) के रूप में जोड़ देता है, जैसा कि कार्यक्रम के तर्कों को भरने के लिए आवश्यक है; इन्हें 0
एस द्वारा दर्शाया जाना चाहिए ।
समूह टोकन लाइनों में।
एक टोकन की शुद्धता उसके अंक का मूल्य है।
एक Arity-0 टोकन (यानी 0) एक पंक्ति को समाप्त करता है।
एक arity-1 टोकन के लिए अगला टोकन एक ही लाइन पर जाना चाहिए, एक स्थान द्वारा अलग किया गया।
एक तर्क> = 2 टोकन के लिए, इसके तर्क अलग-अलग पंक्तियों पर चलते हैं, क्रम में वे कोड में दिखाई देते हैं, प्रत्येक के बाद उनके स्वयं के सबरगमेंट और इतने पर। एक टोकन के तर्क उस टोकन के अंत में एक स्थान से अधिक होते हैं।
इनपुट
एक गैर-रिक्त स्ट्रिंग (या चार सरणी, लंबाई -1 स्ट्रिंग्स की सरणी, आदि) मानक I / O विधियों द्वारा अनुमत है 0123456789M
, जिसमें विकल्प शामिल नहीं होंगे 0M
।
उत्पादन
उपरोक्त नियमों के अनुसार स्ट्रिंग स्वरूपित है।
परीक्षण के मामलों
210221M101M102M011M10
2
1 0
2
2
1M 1 0
1M 1 0
2M
0
1 1M 1 0
123M4M
1 2
3M
4M
0
0
0
0
0
0
0
2MM
2MM
0
0
11011100
1 1 0
1 1 1 0
0
9000000
9
0
0
0
0
0
0
0
0
0
210221M101M102M011M10
होगा[2,1,0,2,2,1,'M',1,0,1,'M',1,0,2,'M',0,1,1,'M',1,0]
M
s को पूर्णांक से भिन्न डेटाटाइप होने दिया जाए।
M
?