টিআই-বেসিক (টিআই -৪৪ প্লাস সিই), 31 বাইট
.5(Ans+1+remainder(Ans+1,2)-4not(remainder(Ans,4)))i^(2Ans
টিআই-বেসিক হ'ল একটি টোকেনাইজড ভাষা এবং এখানে ব্যবহৃত প্রতিটি টোকেন একটি বাইট, ব্যতীত remainder(
, যা দুটি।
এটি 1-ইনডেক্সড সংস্করণ ব্যবহার করে।
ব্যাখ্যা:
এমন একটি প্যাটার্ন রয়েছে যা প্রতি চারটি সংখ্যাকে পুনরাবৃত্তি করে। 1-ইনডেক্সড সংস্করণে এটি হ'ল: - (x + 1) / 2, (x + 1) / 2, - (x + 1) / 2, (x-1) / 2 ইনপুট মান x এর জন্য। এটি টুকরোড়া-সংজ্ঞায়িত ফাংশন হিসাবে উপস্থাপন করা যেতে পারে।
f (x) = - (x + 1) / 2 যদি x ≡ 1 মোড 4; (x + 1) / 2 যদি x ≡ 2 মড 4 হয়; - (x + 1) / 2 যদি x ≡ 3 মড 4 হয়; (x-1) / 2 যদি x ≡ 0 মড 4 হয়
যেহেতু "x ≡ 1 মোড 4" এবং "x 4 3 মড 4" অংশগুলি সমান, তাই আমরা তাদেরকে "x ≡ 1 মোড 2" এর সাথে সংযুক্ত করতে পারি।
এখন টুকরোড়া ফাংশন হয়:
f (x) = - (x + 1) / 2 যদি x ≡ 1 মোড 2; (x + 2) / 2 যদি x ≡ 2 মড 4 হয়; (x-2) / 2 যদি x ≡ 0 মড 4 হয়
এখান থেকেই আমি এটিকে আসল কমান্ডগুলিতে ভাঙ্গতে শুরু করি। যেহেতু মানটি সূচকগুলির জন্যও ইতিবাচক এবং বিজোড়গুলির জন্য নেতিবাচক, তাই আমরা (-1) ^ x ব্যবহার করতে পারি। তবে টিআই-বেসিক i^(2X
(5 বাইট) (-1)^Ans
(6 বাইট) এর চেয়ে কম হয় । নোট করুন যে ক্রিয়াকলাপের ক্রমের কারণে বন্ধনীগুলি প্রয়োজনীয়।
এখন যেহেতু আমাদের কাছে বিজোড় ইনপুটগুলি অগ্রাহ্য করার উপায় রয়েছে, আমরা মোডগুলিতে এগিয়ে যাই (পরবর্তীতে অগ্রাহ্যকারীটিকে যুক্ত করে)। আমি কোনও বিজোড় ইনপুটটিকে ডিফল্ট হিসাবে তৈরি করেছি, তাই আমরা শুরু করি .5(Ans+1)
।
এমনকি ইনপুটটির ক্ষেত্রে ঠিক করার জন্য, প্রথম বন্ধনীতে কেবল একটি সংখ্যায় যুক্ত করুন, তবে x x 0 0 মোড 2 কেবল এটিই .5(Ans+1+remainder(Ans+1,2))
বা হিসাবে প্রদর্শিত হতে পারে .5(Ans+1+not(remainder(Ans,2)))
তবে তাদের বাইট গণনা রয়েছে তাই এটি কোন বিষয় নয়।
একাধিক -4-ইনপুটটির কেসটি ঠিক করতে, আমাদের প্রথম বন্ধনীগুলির সংখ্যা থেকে 3 টি বিয়োগ করতে হবে, তবে আরও 1 টি প্রয়োজন কারণ 4 এর সমস্ত গুণকটি সমান, যা আমাদের পূর্ববর্তী পদক্ষেপের মধ্যে একটি যোগ করবে, সুতরাং আমাদের এখন .5(Ans+1+remainder(Ans+1,2)-4not(remainder(Ans,4)))
।
এখন, সম্পূর্ণ প্রোগ্রামটি পেতে সাইন-নির্ধারণকারী অংশটি শেষ পর্যন্ত সন্ধান করুন।