ওপেন সোর্স সফ্টওয়্যার হিসাবে রেবলের আসন্ন মুক্তির দীর্ঘ, দীর্ঘ, দীর্ঘ ওভারডিউড ঘোষণা দিয়ে আমি এই বিঙ্গো সমস্যা সমাধানের জন্য আমার পোষ্য উপভাষায় ফিরে এসেছি । আমি শীঘ্রই রেবমুকে তার নিজস্ব, টেনেসি জিপিএল প্যাকেজ হিসাবে বিতরণ করতে সক্ষম হতে পারি। :)
কমপ্যাক্ট স্বরলিপি:
rtZ5[GisGpcRaZisGaAPgPCaSB6zAPv'*]l5[AgL5[apGfAsk+A5]]hd+Gu[raGin-NTrM'*fisGv5]p"BINGO!"
উপভাষাটি এমন একটি কৌশল ব্যবহার করে যা আমি মুশিং বলি যা রেবমু পৃষ্ঠাতে ব্যাখ্যা করা হয়েছে । এটি "বৈধ" অর্থে যে এটি পার্সারকে প্রতারণা করে না; এটি বৈধ রেবোল ... এবং সাধারণভাবে সাধারণ কোডের সাথে অহরহ মিশ্রিত করা যেতে পারে (আহেম) "দীর্ঘ-রূপ" রেবমু ... যা বিটিডাব্লু হবে ১৪১ টি অক্ষর:
[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!"]
(প্রদত্ত যে আমি দাবি করি যে সংক্ষেপণটি এমন একটি কৌশল যা স্বয়ংক্রিয়তা বা সংকলনের সাহায্য ছাড়াই করতে পারে, আমি আসলে কোডটি ছাঁটাই আকারে তৈরি করি It's এটি কঠিন নয়))
এটি আসলে বেশ সহজ, বিশেষ কিছুই নয় - আমি নিশ্চিত যে অন্যান্য রেবোল প্রোগ্রামাররা জিনিসগুলি শেভ করতে পারে। কিছু মন্তব্য করা উত্সটি গিটহাবটিতে রয়েছে , তবে আমি যে প্রধান কৌশলটি ব্যবহার করি তা হ'ল দীর্ঘ সিরিজে সমস্ত সম্ভাব্য সমাধান তৈরি করা ("তালিকা", "অ্যারে", কী কী আছে)। আমি ইনপুট লুপ চলাকালীন তির্যক সমাধানগুলি তৈরি করি, কারণ এটি তৈরি করতে মাথার পাঁচটি সন্নিবেশ এবং লেজটিতে পাঁচটি সংযোজন লাগে ... এবং ইতিমধ্যে একটি পাঁচ-পুনরাবৃত্তি লুপ চলছে।
পুরো জিনিসটি সহজেই রেবোল কোডে ম্যাপ করে এবং আমি এখনও রেপমুতে কোনও "ম্যাট্রিক্স লাইব্রেরি" ট্রান্সপোজিশন বা অন্যান্য চিকিত্সাগুলি দিয়ে ফেলিনি যা প্রায়শই উপস্থিত হয়। কোনও দিন আমি এটি করব তবে আপাতত আমি কেবল রেবোলের মাধ্যমের তুলনামূলকভাবে কাজ করার চেষ্টা করছি। ক্রিপ্টিক-চেহারাযুক্ত জিনিস:
[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]।