আউটপুট যেমন ধরনের বিবৃতি একটি পূর্ণ আনুষ্ঠানিক সমকামী 1+2=3
, 2+2=2*(1+1)
ইত্যাদি
Introuction
আপনি যদি পেনো অ্যারিমেটিক জানেন তবে আপনি সম্ভবত এই বিভাগটি এড়িয়ে যেতে পারেন।
প্রাকৃতিক সংখ্যাগুলি আমরা কীভাবে সংজ্ঞায়িত করব তা এখানে:
(Axiom 1) 0 is a number
(Axiom 2) If `x` is a number, the `S(x)`, the successor of `x`, is a number.
সুতরাং, উদাহরণস্বরূপ S(S(S(0)))
একটি সংখ্যা।
আপনি আপনার কোডে যে কোনও সমতুল্য উপস্থাপনা ব্যবহার করতে পারেন। উদাহরণস্বরূপ, এই সমস্তগুলি বৈধ:
0 "" 0 () !
1 "#" S(0) (()) !'
2 "##" S(S(0)) ((())) !''
3 "###" S(S(S(0))) (((()))) !'''
...
etc
নিম্নরূপে সংজ্ঞা সংজ্ঞায়িত করার জন্য আমরা বিধিগুলি প্রসারিত করতে পারি।
(Rule 1) X+0 = X
(Rule 2) X+S(Y)=S(X)+Y
এটির সাহায্যে আমরা নিম্নলিখিত হিসাবে 2 + 2 = 4 প্রমাণ করতে পারি
S(S(0)) + S(S(0)) = 2 + 2
[Rule 2 with X=S(S(0)), Y=S(0)]
S(S(S(0))) + S(0) = 3 + 1
[Rule 2 with X=S(S(S(0))), Y=0]
S(S(S(S(0)))) + 0 = 4 + 0
[Rule 1 with X=S(S(S(S(0))))
S(S(S(S(0)))) = 4
নিম্নলিখিত হিসাবে আমরা গুণগুলি সংজ্ঞায়িত করতে এই বিধিগুলি প্রসারিত করতে পারি
(Rule 3) X*0 = 0
(Rule 4) X*S(Y) = (X*Y) + X
যদিও এটির অনুমতি দেওয়ার জন্য আমাদের প্রথম বন্ধনীগুলির কাঠামোগত ভূমিকা সংজ্ঞা দেওয়া দরকার।
(Axiom 3) If X is a number, (X) is the same number.
সংযোজন এবং গুণক অপারেটরগুলি কঠোরভাবে বাইনারি হয় এবং বন্ধনী সর্বদা স্পষ্ট থাকতে হবে। A+B+C
ভাল সংজ্ঞায়িত করা হয় না, (A+B)+C
এবং A+(B+C)
হয়।
উদাহরণ
গুণনের বিষয়ে একটি উপপাদ্য প্রমাণ করার জন্য এখন আমাদের পর্যাপ্ত পরিমাণ রয়েছে: 2 + 2 = 2 * 2
2 + 2
(2) + 2
(0 + 2) + 2
((0*2) + 2) + 2
(1*2) + 2
2*2
আবশ্যকতা
একটি প্রমাণ যাA=B
একটি তালিকা এক্সপ্রেশন যেমন:
- প্রথমটি হ'ল
A
, - শেষটি
B
, এবং - প্রথমটিতে পৃথক তালিকার প্রতিটি অভিব্যক্তি একটি নিয়মের অধীনে রূপান্তর করে পূর্বের কাছ থেকে প্রাপ্ত হতে পারে।
আপনার প্রোগ্রামটি ইনপুট হিসাবে দুটি বৈধ এক্সপ্রেশন গ্রহণ করবে , প্রতিটি অভিব্যক্তিতে উপরে সংজ্ঞায়িত হিসাবে সংখ্যা, সংযোজন, গুণ, এবং প্রথম বন্ধনী রয়েছে।
আপনার প্রোগ্রামটি প্রমাণ হিসাবে প্রমাণিত হবে, উপরের সংজ্ঞায়িত হিসাবে একটি তালিকা, যে দুটি এক্সপ্রেশন সমান, যদি এমন প্রমাণ উপস্থিত থাকে।
যদি দুটি এক্সপ্রেশন সমান না হয়, আপনার প্রোগ্রামটি কিছুই আউটপুট দেবে না।
সীমিত সংখ্যক পদক্ষেপে প্রমাণ বা অসন্তুষ্টি সর্বদা সম্ভব, কারণ প্রতিটি অভিব্যক্তি একক সংখ্যায় কমিয়ে আনা যায় এবং এই সংখ্যাগুলি সাম্যের জন্য তুচ্ছ পরীক্ষা করা যেতে পারে।
যদি ইনপুট এক্সপ্রেশনটি বৈধ হয় না (যেমন ভারসাম্যহীন প্রথম বন্ধনী, নন-সংখ্যা, বা নন-বাইনারি অপারেটর রয়েছে) তবে আপনার প্রোগ্রামটি ত্রুটি সহ প্রস্থান করা উচিত, একটি ব্যতিক্রম ছুঁড়ে দেওয়া উচিত, একটি ত্রুটি মুদ্রণ করা উচিত, বা অন্যথায় কিছু পর্যবেক্ষণযোগ্য আচরণ তৈরি করা উচিত যা পৃথক থেকে পৃথক ইনপুটগুলি বৈধ তবে সমান নয় এমন ক্ষেত্রে ।
সংক্ষেপে, গ্রহণযোগ্য ইনপুটগুলির জন্য স্বাভাবিক আউটপুট হ'ল ইনপুট সহ সমান সংখ্যার একটি তালিকা, যা নিম্নলিখিত নিয়ম দ্বারা উত্পাদিত হয়।
(Axiom 1) 0 is a number
(Axiom 2) If `x` is a number, the `S(x)`, the successor of `x`, is a number.
(Axiom 3) If X is a number, (X) is the same number
(Rule 1) X+0 = X
(Rule 2) X+S(Y)=S(X)+Y
(Rule 3) X*0 = 0
(Rule 4) X*S(Y) = (X*Y) + X
(Rule 5) X = (X) (Axiom 3 expressed as a transformation rule.)
ইনপুট এবং আউটপুট সংখ্যা কোন উপযুক্ত উপস্থাপনা, অনুমতি দেওয়া হয় যেমন 0=""=()
, 3="###"=(((())))
ইত্যাদি হোয়াইটস্পেস অপ্রাসঙ্গিক।
বিধিগুলি অবশ্যই উভয় দিকেই প্রয়োগ করা যেতে পারে। আপনার প্রোগ্রামটিতে কোন নিয়ম ব্যবহৃত হচ্ছে তা আউটপুট দিতে হবে না, কেবল পূর্বের এক্সপ্রেশনটিতে তার ক্রিয়া দ্বারা উত্পাদিত এক্সপ্রেশন।
সংক্ষিপ্ততম কোড জিতেছে।