ব্রেনফাক , 474 176 154 151 149 137 বাইট
এর একটি ইনপুট স্ট্রিং লাগে আট 0
এবং 1
প্রথম সহ 0
দশমিক বিন্দু জন্য।
(পোস্টের টেবিলের দ্বিতীয় কলামের মতো)
0 থেকে 9 পর্যন্ত আউটপুট ডিজিট।
,>,>,>,,,>,>,>+[[->]<++<<<<<<]>[>[>[>[->[>++++++<-<]>[--<]<]>>.>>]<[>
>[>->++<<-]>-[+>++++<]>+.>]]>[>>>+<<<-]>[>>+++.>]]>[>>>[>+++<-]>-.>]
এটি অনলাইন চেষ্টা করুন!
অ্যালগরিদম
একটি নির্দিষ্ট বিভাগের অবস্থা পর্যালোচনা করে আমরা সম্ভাব্য অঙ্কগুলির একটি সেটকে ছোট ছোট উপচ্ছেদে বিভক্ত করতে পারি। নীচে আমার কোডে স্ট্যাটিক বাইনারি অনুসন্ধান গাছ ব্যবহৃত হয়েছে। বাম সাবট্রি ওয়ান স্টেটের সাথে সামঞ্জস্য করে, ডানদিকে বিভাগের অফএফ রাজ্যের সাথে সম্পর্কিত।
0,1,2,3,4,5,6,7,8,9
|
/-------[A]-------------------------\
0,2,3,5,6,7,8,9 1,4
| |
/-------------[B]----------------\ /----[G]----\
0,2,3,7,8,9 5,6 4 1
| |
/--------[E]--------\ /----[E]----\
0,2,8 3,7,9 6 5
| |
/----[F]----\ /----[F]----\
0,8 2 9 3,7
| |
/----[G]----\ /----[G]----\
8 0 3 7
গল্ফ করার জন্য দরকারী কিছু পর্যবেক্ষণ
- বিটস সি এবং ডি অপ্রয়োজনীয় এবং এড়ানো যায়।
- শীর্ষস্থানীয় শূন্য (দশমিক পয়েন্টের জন্য বিট) 48 (মান) 48 হিসাবে ব্যবহৃত হতে পারে, ইনপুট পার্সিং এবং আউটপুট প্রস্তুতের জন্য উভয়ই গুরুত্বপূর্ণ।
- যখন পাতায় পৌঁছে যায় এবং অঙ্ক মুদ্রণ করা হয়, তখন আমাদের কেবলমাত্র সমস্ত শর্ত বাদ দেওয়া উচিত। এটি জিরোসের অঞ্চলে ডেটা পয়েন্টারটি যথেষ্ট পরিমাণে সরিয়ে দিয়ে করা যায় যাতে এটি ফিরে না আসতে পারে।
- সামঞ্জস্যের জন্য ডানদিকে শূন্যগুলি ব্যবহার করা ভাল, কারণ কিছু বিএফ বাস্তবায়ন নেতিবাচক ডেটা পয়েন্টারগুলিকে সমর্থন করে না।
- সুতরাং ডানদিকের ঘরে আউটপুট মান সংরক্ষণ করা ভাল, তাই আমরা শূন্যের ক্ষেত্রটি সহজেই ডানদিকে পৌঁছাতে পারি।
- সুতরাং বাম থেকে ডানে বিটগুলি পরীক্ষা করা ভাল: A, B, E, F, G যাতে আমরা আউটপুট সেলটি আরও সহজে পৌঁছাতে পারি।
- বিভিন্ন সংখ্যা আউটপুট কোড ভাগ করতে পারে। উদাহরণস্বরূপ, 5 এবং 6 একই সাবট্রিতে রয়েছে। আমরা
+++++
উভয় মানের জন্য এবং তারপরে +
কেবল ছয়টির জন্য করতে পারি ।
- আমরা
+
যদি আগে থেকে আউটপুট মান 2 যোগ করি তবে আমরা কমান্ডের সংখ্যা হ্রাস করতে পারি। সেক্ষেত্রে আমাদের এটিকে কেবল এবং কেবল হ্রাস করতে হবে 0
এবং 1
অন্যান্য সংখ্যার জন্য সুবিধা পেতে হবে।