?1-(v #1)-
1 0v ^(# 0 (1+0)#)!
(#) ^#1-(0)#
যদি কোনও স্ট্যান্ডার্ড কমপ্লায়েন্ট ইন্টারলিটার ব্যবহার করা হয় তবে এটি ইনপুট এবং আউটপুট বাইট মান হিসাবে নেয় । আসলে stdin / stdout- এ তে দশমিক সংখ্যার ব্যবহার করতে, আপনাকে প্রয়োজন চাই পাইথন ইন্টারপ্রেটার সঙ্গে NUMERIC_OUTPUT = True
এবং অতিরিক্ত বিকল্প NUMERIC_INPUT = True
।
ব্যাখ্যা
প্রোগ্রামটির কঙ্কালটি হ'ল
?1-( 1 -
1 )!
আমরা N
প্রথম ভয়েসের উপর ইনপুটটি পড়ি এবং এটি পেতে হ্রাস পেয়েছি N-1
। আমরা দ্বিতীয় ভয়েসকে আরম্ভ করি 1
। তারপরে আমরা একবার লুপ করব N-1
, যার প্রতিটি পুনরাবৃত্তি দ্বিতীয় স্ট্যাকের ক্রমের পরবর্তী মান পায় gets শেষে আমরা N
তম সংখ্যাটি মুদ্রণ করি ।
প্রোগ্রামটির ধারণাটি হ'ল ক্রমের প্রতিটি উপাদানকে তৃতীয় ভয়েসের একটি সারিতে স্থাপন করা এবং প্রতিটি পুনরাবৃত্তিতে সেই সারির মাথা হ্রাস করা। যখন মাথা পৌঁছে যায় 0
, আমরা ক্রমটির মান বৃদ্ধি করি এবং এটি সরিয়ে ফেলি 0
।
এখন বিষয়টি হ'ল প্রিলিউড সারি ব্যবহার না করে স্ট্যাক ব্যবহার করে। সুতরাং এটি একটি সারির মতো ব্যবহার করতে আমাদের কিছুটা স্ট্যাকের চারপাশে স্থানান্তর করতে হবে।
v #
0v ^
(#)
এটি অনুক্রমের বর্তমান মানটিকে প্রথম ভয়েস (অস্থায়ী অনুলিপি হিসাবে) অনুলিপি করে, একটি 0
দ্বিতীয় ভয়েসে (সারির শেষ চিহ্ন চিহ্নিত করতে ) এক ধাক্কা দেয় । এবং তারপরে দ্বিতীয়টিতে তৃতীয় স্ট্যাকটি স্থানান্তর করতে (এবং এর মাধ্যমে বিপরীত) একটি লুপ সঞ্চালন করে। লুপের পরে, আমরা বর্তমান সিকোয়েন্স মানটির অনুলিপিটি দ্বিতীয় স্ট্যাকের উপরে রাখি (যা আমাদের সারিটির লেজ)।
)
(#
^#1-
এটি দেখতে কিছুটা কুৎসিত লাগে তবে মূলত এটি এমন একটি লুপ যা স্ট্যাকটিকে তৃতীয় ভয়েসের দিকে ফিরিয়ে দেয়। যেহেতু )
স্থানান্তর নির্দেশাবলীর একই কলামে রয়েছে তাই 0
আমরা দ্বিতীয় ভয়েসটি আগে রেখেছিলাম তৃতীয় ভয়েসও শেষ হবে, সুতরাং আমাদের এটি অন্যটির সাথে সরিয়ে ফেলতে হবে #
। তারপরে তৃতীয় কণ্ঠের শীর্ষকে হ্রাস করুন, অর্থাৎ সারির শিরোনাম।
এখন এটি কিছুটা বিরক্তিকর হয়ে 0
ওঠে - যখন মানটি হয় তখন আমরা কিছু কোড চালাতে চাই , তবে প্রিলিডের একমাত্র নিয়ন্ত্রণ কাঠামো (লুপ) কেবলমাত্র শূন্য-অবধি মানগুলিতে সাড়া দেয়।
0 (1+0)#
(0)#
নোট করুন যে দ্বিতীয় ভয়েসের শীর্ষটি সত্যবাদী (যেহেতু গোলম্ব ক্রমটি কোনও সকে ধারণ করে না 0
)। সুতরাং কাজের চাপ সেই কণ্ঠে চলে যায় (প্রথম বন্ধনীর জোড়)। আমাদের যদি কেবল সারির মাথাটি না থেকে থাকে তবে তা ঘটতে আমাদের কেবল রোধ করা উচিত 0
। সুতরাং প্রথমে আমাদের তৃতীয় কণ্ঠে একটি "লুপ" রয়েছে যা 0
যদি দ্বিতীয় কণ্ঠের উপরে চাপ দেয় তবে যদি সারির মাথাটি এখনও শূন্য থাকে না। আমরা 0
এখনই লুপ থেকে প্রস্থান করার জন্য তৃতীয় ভয়েসটিতে একটি টিপলাম। #
তৃতীয় ভয়েস তারপর পারেন যে সরিয়ে ফেলা হবে 0
, অথবা কিউ প্রধান সরিয়ে ফেলা হবে যদি যে ইতিমধ্যে শূন্য ছিল। এখন যে দ্বিতীয় লুপটি কেবলমাত্র প্রবেশ করানো হবে যদি সারিটির শূন্যটি শূন্য ছিল (এবং এটি)0
দ্বিতীয় কণ্ঠে কখনও ধাক্কা দেওয়া হয়নি)। সেক্ষেত্রে আমরা সিকোয়েন্সের বর্তমান মান বাড়িয়েছি এবং 0
লুপ থেকে বেরিয়ে আসার জন্য একটি চাপ দিই । শেষ অবধি, সর্বদা 0
স্ট্যাকের উপরে থাকবে, যা আমাদের বাতিল করতে হবে।
আমি আপনাকে বলেছি যে প্রিলেডে যৌক্তিক অবহেলা বিরক্তিকর ...
n
পরিবর্তে ব্যবহার করে2 - n % 1
। উত্তরগুলি উল্লেখযোগ্যভাবে আলাদা হওয়ার আশা করার কোনও কারণ আছে কি?