p
\Ai
\&
>(&]&|0
<*&d
&~bN
10
( )/+
/*
এটি অনলাইন চেষ্টা করুন!
ব্যাখ্যা
এটি এখন পর্যন্ত জেলিফিশে আমি লিখেছি সবচেয়ে বিস্তৃত (এবং সবচেয়ে দীর্ঘতম) প্রোগ্রাম the আমি বোধগম্যভাবে এটিকে ভেঙে ফেলতে সক্ষম হবো কিনা সে সম্পর্কে আমার কোনও ধারণা নেই তবে আমি অনুমান করি আমাকে চেষ্টা করতে হবে।
জেলিফিশ মোটামুটি সাধারণ পুনরাবৃত্তি অপারেটর সরবরাহ \করে, যা "এনথকে কিছু খুঁজে পেতে " সাহায্য করে। এর অর্থশাস্ত্রগুলির মধ্যে একটি হ'ল "কোনও মানকে কোনও ফাংশন পুনরায় করা অবধি পৃথক পরীক্ষা ফাংশন সত্যবাদী কিছু না দেয়" (আসলে, পরীক্ষার ফাংশনটি বর্তমান এবং শেষ উপাদান উভয়ই গ্রহণ করে, তবে আমরা কেবল এটি বর্তমান উপাদানের দিকে নজর দেব) । আমরা এটি "পরবর্তী বৈধ সংখ্যা" ফাংশনটি প্রয়োগ করতে ব্যবহার করতে পারি। এর আরেকটি ওভারলোড \হ'ল "একটি এনআর শুরুর মানের উপর একটি ক্রিয়া পুনরাবৃত্তি করা"। আমরা আমাদের আগের ফাংশনটি ব্যবহার করতে পারি এবং এটি 0এন সময়ে পুনরাবৃত্তি করতে পারি , যেখানে এন ইনপুট। কোডের এই অংশটি দিয়ে মোটামুটি সংক্ষিপ্তভাবে সেট আপ করা হয়েছে:
p
\Ai
\&
> 0
( 0ফলস্বরূপ ফাংশনটির আসল ইনপুটগুলি কেন কিছুটা জটিল এবং আমি এখানে সেগুলিতে যাব না The )
এই সমস্তগুলির সাথে সমস্যাটি হ'ল আমরা এখনকার মানটিকে ম্যানুয়ালি টেস্ট ফাংশনে স্থান দেব না। \অপারেটর আমাদের জন্য এই কাজ করবে। সুতরাং এখন আমরা একটি একক আনারি ফাংশন (রচনাগুলি, হুকস, কাঁটাচামচ এবং কারিঙের মাধ্যমে) তৈরি করেছি যা একটি সংখ্যা নেয় এবং আমাদের বলে যে এটি একটি বৈধ সংখ্যা কিনা (যেমন একটি যা তার অঙ্কের যোগফল এবং অঙ্কের পণ্য দ্বারা বিভক্ত)) আপনি যুক্তিটি উল্লেখ করতে না পারলে এটি মোটামুটি তুচ্ছ is কখনো। এটি এই সৌন্দর্য:
(&]&|
<*&d
&~bN
10
( )/+
/*
(একটি ইউনারী হয় হুক , যার মানে এটি নীচের ফাংশন (কল fতার ইনপুটের) (বর্তমান মান x), এবং তারপর অধিকার (পরীক্ষা ফাংশন তাদের উভয়ের পাসের g), যে হয় এটা নির্ণয় g(f(x), x)।
আমাদের ক্ষেত্রে, f(x)অন্য যৌগিক ফাংশন যা অঙ্ক পণ্য এবং অঙ্ক যোগফল সঙ্গে একজোড়া এগিয়ে যাচ্ছে x। এর অর্থ gএকটি ফাংশন হবে xযা বৈধ কিনা তা যাচাই করার জন্য তিনটি মান রয়েছে ।
আমরা fঅঙ্ক অঙ্ক এবং অঙ্কের পণ্য কীভাবে গণনা করে তা দেখে শুরু করব । এটি হ'ল f:
&~b
10
( )/*
/+
&এটিও রচনা (তবে অন্যদিকে রাউন্ড)। ~কারি হচ্ছে তাই 10~bএকটি ফাংশন দেয় যা একটি সংখ্যার দশমিক অঙ্কগুলি গণনা করে, এবং যেহেতু আমরা &ডান দিক থেকে এটি পেরিয়ে যাচ্ছি , এটি প্রথম জিনিস যা ইনপুটটি ঘটবে x। বাকী অংশগুলি তাদের যোগফল এবং পণ্য গণনা করার জন্য অঙ্কগুলির এই তালিকাটি ব্যবহার করে।
একটি সমষ্টি গনা করার জন্য, আমরা করতে পারেন ভাঁজ এটি উপর উপরন্তু, যা /+। তেমনি, পণ্যটি গণনা করতে আমরা এর সাথে গুনটি ভাঁজ করি /*। এই উভয় ফলাফলকে একটি জোড়ায় যুক্ত করতে আমরা একজোড়া হুক ব্যবহার করি (এবং )। এর কাঠামোটি হ'ল:
()g
f
(যেখানে fএবং gপণ্য ও যোগফল যথাক্রমে আছে।) আসুন চেষ্টা জিনিসটা কেন এই আমাদের একজোড়া দেয় f(x)এবং g(x)। মনে রাখবেন যে ডান হুকটিতে )কেবল একটি যুক্তি রয়েছে। এই ক্ষেত্রে, অন্যান্য যুক্তি এমনভাবে ;আবদ্ধ হয় যা তার যুক্তিগুলিকে একটি জুটিতে আবৃত করে। তদুপরি, হুকগুলি বাইনারি ফাংশন হিসাবেও ব্যবহার করা যেতে পারে (যা এখানে ক্ষেত্রে হবে) এই ক্ষেত্রে কেবলমাত্র কেবলমাত্র একটি যুক্তিতে আভ্যন্তরীণ ফাংশন প্রয়োগ করে। সুতরাং সত্যিই )একটি একক ফাংশন gএকটি ফাংশন দেয় যে গণনা করে [x, g(y)]। বাম হুক এটিকে ব্যবহার করে, একসাথে fআমরা পেয়েছি [f(x), g(y)]। এটি পরিবর্তে অবিচ্ছিন্ন প্রসঙ্গে ব্যবহৃত হয়, যার অর্থ এটি প্রকৃতপক্ষে ডেকে আনা হয়েছে x == yএবং তাই আমরা [f(x), g(x)]প্রয়োজনীয় হিসাবে শেষ করি । ইসস।
এটি কেবল একটি জিনিস রেখে দেয়, যা ছিল আমাদের পূর্ববর্তী পরীক্ষার কাজ g। রিকল এটি যেমন বলা হবে g([p, s], x)যেখানে xএখনো বর্তমান ইনপুট মান, pতার অঙ্ক পণ্য এবং sতার অঙ্ক পরিধি এ পর্যন্তই। এটি হ'ল g:
&]&|
<*&d
N
বিভাজ্যতা পরীক্ষা করতে, আমরা স্পষ্টতই |জেলিফিশে থাকা মডুলো ব্যবহার করব । কিছুটা অস্বাভাবিকভাবে, এটি তার ডান-হাতের অপারেন্ডকে তার বাম-হাতের অপারেন্ডকে নিয়ে যায়, যার অর্থ এই যে যুক্তিগুলি gইতিমধ্যে ডান ক্রমে রয়েছে (পাথরের গাণিতিক ক্রিয়াকলাপগুলি স্বয়ংক্রিয়ভাবে তালিকার উপরে থ্রেড করে, সুতরাং এটি দুটি পৃথক মডুলিকে নিখরচায় গণনা করবে) । আমাদের সংখ্যাটি পণ্য এবং যোগফল উভয় দ্বারা বিভাজ্য, যদি ফলাফলটি এক জোড়া শূন্য হয়। এটি কেস কিনা তা যাচাই করতে, আমরা জোড়টিকে বেস -২ সংখ্যা ( d) এর তালিকা হিসাবে দেখি । এর ফলাফলটি শূন্য, কেবল যখন জোড়ার উভয় উপাদানই শূন্য হয়, সুতরাং Nউভয় মানগুলি ইনপুটকে বিভক্ত করে কিনা তার জন্য সত্যবাদী মান পেতে আমরা এই ( ) এর ফলাফলটিকে অগ্রাহ্য করতে পারি। নোট করুন |, dএবংNসবগুলি এক সাথে এক সাথে রচিত হয় &।
দুর্ভাগ্যক্রমে, এটি পুরো গল্প নয়। অঙ্কের পণ্যটি শূন্য হলে কী হবে? জেলিফিশে শূন্যের সাথে বিভাগ এবং মডুলো উভয়ই শূন্য ফিরে আসে। যদিও এটি কিছুটা বিজোড় কনভেনশন মনে হতে পারে তবে এটি আসলে কিছুটা কার্যকর হতে পারে (কারণ মডিউলগুলি করার আগে আমাদের শূন্যের জন্য পরীক্ষা করার দরকার নেই)। তবে এর অর্থ এটিও হ'ল আমরা যদি একটি ভুল ধনাত্মক পেতে পারি, যদি অঙ্কের যোগফলটি ইনপুটকে ভাগ করে দেয় তবে ডিজিটের পণ্যটি শূন্য হয় (যেমন ইনপুট 10)।
আমরা আমাদের বিভাজ্যতার ফলাফলটিকে ডিজিট পণ্য দ্বারা গুণিত করে এটি ঠিক করতে পারি (সুতরাং অঙ্কের পণ্যটি যদি শূন্য হয় তবে এটি আমাদের সত্যবাদী মানটিকেও শূন্যে পরিণত করবে)। প্রোডাক্ট এবং যোগফলের জোড় দিয়ে বিভাজ্যতার ফলাফলটিকে গুণিত করা এবং পরে পণ্যটি থেকে ফলাফলটি বের করা সহজ হয় to
জোড়াটি দিয়ে ফলাফলটি গুণিত করতে, কিন্ডাকে আগের মানটিতে (জোড়) ফিরে পাওয়া দরকার। এটি একটি কাঁটাচামচ ( ]) দিয়ে করা হয়। কাঁটাচামচ স্টেরয়েডগুলিতে হুকের মতো ধরণের। আপনি যদি তাদের দুটি ফাংশন দেন fএবং g, তারা একটি বাইনারি ফাংশন উপস্থাপন করে যা গণনা করে f(a, g(a, b))। আমাদের ক্ষেত্রে, aপণ্য / যোগফল, bবর্তমান ইনপুট মান, gআমাদের বিভাজ্যতা পরীক্ষা, এবং fগুণটি। সুতরাং এই সমস্ত গণনা [p, s] * ([p, s] % x == [0, 0])।
এখন যা আছে তা হ'ল এটির প্রথম মানটি বের করা, যা পুনরুক্তি ব্যবস্থায় ব্যবহৃত টেস্ট ফাংশনের চূড়ান্ত মান। এটি হেড ফাংশন &সহ কাঁটা ( ) কাঁটা তৈরি করার মতোই সহজ , যা তালিকার প্রথম মানটি দেয়।<