ओपन सोर्स सॉफ्टवेयर के रूप में रॉल के आसन्न रिलीज की लंबी, लंबी, लंबी अतिदेय घोषणा को देखते हुए , मैं इस बिंगो समस्या को हल करने के लिए अपनी पालतू बोली पर लौट आया । मैं जल्द ही Rebmu को अपने स्वयं के, किशोर GPL पैकेज के रूप में वितरित करने में सक्षम हो सकता हूं। :)
कॉम्पैक्ट संकेतन में:
rtZ5[GisGpcRaZisGaAPgPCaSB6zAPv'*]l5[AgL5[apGfAsk+A5]]hd+Gu[raGin-NTrM'*fisGv5]p"BINGO!"
बोली एक चाल मैं कॉल का उपयोग करता mushing जिस पर समझाया गया है Rebmu पेज । यह इस अर्थ में "वैध" है कि यह पार्सर को धोखा नहीं देता है; यह Rebol वैध है ... और वास्तव में इसे स्वतंत्र रूप से साधारण कोड के साथ-साथ (अहम) "लॉन्ग-फॉर्म" Rebmu ... से जोड़ा जा सकता है ... जिसमें BTW 141 अक्षर होगा:
[rt z 5 [g: is g pc r a z is g a ap g pc a sb 6 z ap v '*] l 5 [a: g l 5 [ap g f a sk+ a 5]] hd+ g u [ra g in- nt r m '* fis g v 5] p "BINGO!"]
(यह देखते हुए कि मैं दावा करता हूं कि संपीड़न एक चाल है जिसे कोई स्वचालन या संकलन की सहायता के बिना कर सकता है, मैं वास्तव में कोड को शापित रूप में विकसित करता हूं। यह मुश्किल नहीं है।)
यह वास्तव में काफी सरल है, कुछ खास नहीं - मुझे यकीन है कि अन्य रेबोल प्रोग्रामर चीजों को बंद कर सकते हैं। कुछ टिप्पणी स्रोत GitHub पर है , लेकिन मैं जो मुख्य चाल का उपयोग करता हूं वह एक लंबी श्रृंखला ("सूची", "सरणी", व्हाट्स-यू-यू) में सभी संभव समाधानों का निर्माण करना है। मैं इनपुट लूप के दौरान विकर्ण समाधानों का निर्माण करता हूं, क्योंकि यह सिर पर पांच सम्मिलन लेता है और उन्हें बनाने के लिए पूंछ में पांच जोड़ देता है ... और प्रगति में पहले से ही पांच-पुनरावृत्ति लूप है।
पूरी बात आसानी से रेबोले कोड के लिए मैप करती है, और मैंने अभी तक किसी भी "मैट्रिक्स लाइब्रेरी" को रेम्बु में ट्रांसपोज़िशन या अन्य नौटंकी के साथ नहीं फेंका है जो अक्सर ऊपर आते हैं। किसी दिन मैं ऐसा करूंगा लेकिन अभी मैं केवल रेबोल के माध्यम के अपेक्षाकृत करीब काम करने की कोशिश कर रहा हूं। क्रिप्टिक-दिखने वाली चीजें जैसे:
[g: is g pc r a z is g a ap g pc a sb 6 z ap v '*]
... बल्कि सरल हैं:
[
; assign the series pointer "g" to the result of inserting
; the z'th element picked out of reading in some series
; from input that was stored in "a"...this pokes an element
; for the forward diagonal near the front of g
g: insert g (pick (readin-mu a) z)
; insert the read-in series "a" from above into "g" as well,
; but *after* the forward diagonal elements we've added...
insert g a
; for the reverse diagonal, subtract z from 6 and pick that
; (one-based) element out of the input that was stored in "a"
; so an element for the reverse diagonal is at the tail
append g (pick a (subtract 6 z))
; so long as we are counting to 5 anyway, go ahead and add an
; asterisk to a series we will use called "v" to search for
; a fulfilled solution later
append v '*
]
नोट: कोष्ठक स्पष्टता के लिए ऊपर जोड़ा गया। लेकिन रेबोल प्रोग्रामर (अंग्रेजी बोलने वालों की तरह) आम तौर पर संचार में व्याकरण का संकेत देने के लिए अतिरिक्त संरचनात्मक कॉलआउट के आवेदन से बचते हैं ... बल्कि अन्य अनुप्रयोगों के लिए उन्हें बचाते हैं ...
बस एक अतिरिक्त बोनस के रूप में यह दिखाने के लिए कि यह वास्तव में कितना दिलचस्प है, मैं बोर्ड को योग करने के लिए सामान्य कोड के कुछ मिश्रण में फेंक दूंगा। प्रोग्रामिंग शैलियों वास्तव में हैं ... संगत:
rtZ5[GisGpcRaZisGaAPgPCaSB6zAPv'*]
temp-series: g
sum: 0
loop 5 * 5 [
square: first temp-series
if integer! == type? square [
sum: sum + square
]
temp-series: next temp-series
]
print ["Hey grandma, the board sum is" sum]
l5[AgL5[apGfAsk+A5]]hd+Gu[raGin-NTrM'*fisGv5]p"BINGO!"
यह रेम्बु के रूप में अच्छी तरह से मान्य है, और यह आपके साथ बिंगो खेलने से पहले आपको एक अच्छा बोर्ड योग देगा। दिए गए उदाहरण में, यह कहता है Hey grandma, the board sum is 912। जो शायद सही है। लेकिन आपको बात समझ आ गयी। :)
rowएक-चार नाम से बदल सकते हैं । अनटाइटेड: कोशिश करेंi in'*'*5]और[x=='*']साथ बदलें[x==i]।