ভূমিকা
ব্রেইনকোপ্টার একটি মজাদার ব্রেনফ *** ডেরিভেটিভ যা একটি চিত্র হিসাবে একটি ব্রেনফ *** প্রোগ্রামকে এনকোড করে। 2 ডি ভাষা হিসাবে এটি দুটি অতিরিক্ত কমান্ড ব্যবহার করে; তারা নির্দেশ পয়েন্টারটি (প্রথম দিকে ডান দিকে নির্দেশ করা) ঘড়ির কাঁটা এবং ঘড়ির কাঁটার দিকে ঘোরান। Braincopter খুব অনুরূপ Brainloller বিভিন্ন কমান্ড হিসাবে স্বতন্ত্র রং ব্যবহারের পরিবর্তে, এটা পরিবর্তে প্রতিটি পিক্সেল এর আরজিবি মান উপর ভিত্তি করে কমান্ড হিসাব, যে ব্যতীত।
ব্রেইনকোপ্টার সূত্রের ভিত্তিতে প্রতিটি পিক্সেলের জন্য কমান্ড গণনা করে
N = (65536 * R + 256 * G + B) % 11
, যেখানে N
কমান্ড নম্বর number কমান্ড নম্বর থেকে Brainf *** কমান্ডে ম্যাপিং নিম্নরূপ:
0 >
1 <
2 +
3 -
4 .
5 ,
6 [
7 ]
8 rotate instruction pointer to the right (clockwise)
9 rotate instruction pointer to the left (counterclockwise)
10 NOP
ব্রেইনকোপ্টার স্টেগনোগ্রাফি বা অন্য কোনও গোপন বার্তাগুলি গোপন করার জন্য দরকারী, যে কোনও ছবিতে প্রতিটি পিক্সেলের রঙ পছন্দসই অপারেশন দেওয়ার জন্য সামান্য পরিবর্তন করা যেতে পারে। এ জাতীয় পরিবর্তিত চিত্রগুলি প্রায়শই মূল থেকে পৃথক হয়।
চ্যালেঞ্জ
এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা কোনও চিত্র এবং মস্তিষ্কের একটি স্ট্রিং *** কোডকে ইনপুট হিসাবে গ্রহণ করে এবং এতে মেনডযুক্ত ব্রেনফ *** কোডের সাথে মূল চিত্র তৈরি করে।
এটি করতে, প্রতিটি চিত্রকে আসল চিত্রটিতে নিয়ে যান এবং এটির সাথে মূল পিক্সেলের রঙের সবচেয়ে কাছের আরজিবি মান দিয়ে প্রতিস্থাপন করুন যা সঠিক ব্রেনকপ্টার নির্দেশকে মূল্যায়ন করে। এই চ্যালেঞ্জের উদ্দেশ্যে রঙের পার্থক্য হিসাবে সংজ্ঞায়িত করা হয়েছে abs(R1 - R2) + abs(G1 - G2) + abs(B1 - B2)
। টাইয়ের ক্ষেত্রে একই ব্রেনকোপ্টার কমান্ডের সাথে দুটি রঙ সমাধান করা মূল রঙের সাথে সমানভাবে ঘনিষ্ঠ হয়, তা বেছে নেওয়া যেতে পারে।
উদাহরণস্বরূপ, যদি #FF8040
ব্রেইনকোপ্টারটিতে একটি '1' নির্দেশিকা উত্পাদন করতে মূল রঙ হয় এবং এটি পরিবর্তন করতে হয় তবে #FF7F40
তা চয়ন করা উচিত।
যখন নির্দেশের পয়েন্টারটি চিত্রের প্রান্তটি বন্ধ হয়ে যায় তখন ব্রেইনকোপ্টারটি প্রস্থান করবে, সুতরাং আমরা 8 এবং 9 টি কমান্ড (যথাক্রমে নির্দেশ নির্দেশককে ঘড়ির কাঁটার দিকে এবং ঘড়ির কাঁটার দিকে ঘোরান) ব্যবহার করে ইমেজে এটি রাখব। উদাহরণ সহ এনকোডিংয়ের ফর্ম্যাটটি ব্যাখ্যা করা সবচেয়ে সহজ।
ইনপুট +[[->]-[-<]>-]>.>>>>.<<<<-.>>-.>.<<.>>>>-.<<<<<++.>>++.
এবং একটি 8x9 চিত্রের জন্য, নির্দেশিকাগুলি এইভাবে প্রেরণ করা হবে (ব্রেনফ *** কমান্ডগুলি ব্রেনকপটার সমতুল্য পরিবর্তে এবং টার্নগুলির ইউনিকোড উপস্থাপনা ব্যবহার করে):
+ [ [ - > ] - ↲
↳ - > ] < - [ ↲
↳ ] > . > > > ↲
↳ < < < < . > ↲
↳ - . > > - . ↲
↳ > . < < . > ↲
↳ > > > - . < ↲
↳ + + < < < < ↲
↳ . > > + + . N
(যেখানে এন একটি এনওপি) আপনার প্রোগ্রাম অবশ্যই এই নিয়ন্ত্রণ প্রবাহ ব্যবহার করা উচিত । ব্রেইনফ *** ইনপুট সর্বদা চিত্রে ফিট করতে সক্ষম হবে; তবে, আপনি এটি ধরে নাও নিতে পারেন যে এটি সর্বদা চিত্রের সাথে ঠিক ফিট করবে। যদি এটি খুব ছোট হয় তবে এটি এনওপি দিয়ে প্যাড করুন; ব্রেইনকোপ্টার কোডটি এখনও ঘড়ির কাঁটার দিকের / ঘড়ির কাঁটার দিকের দিকের উভয় দিকে অবশ্যই চালু থাকতে হবে।
আপনি ধরে নিতে পারেন যে Brainf *** ইনপুটটিতে আটটি অক্ষর থাকবে
><+-,.[]
।
আপনার প্রোগ্রাম বা ফাংশনের আউটপুটগুলি পরীক্ষা করতে অফিসিয়াল ব্রেইনকপ্টার দোভাষী ব্যবহার করুন ।
পরীক্ষার মামলা
ইনপুট:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
উদাহরণ আউটপুট:
ব্রেইনকপ্টার আউটপুট:
Hello World!
ইনপুট:
>++++++++++[<++++++++++>-]>>>>>>>>>>>>>>>>++++[>++++<-]>[<<<<<<<++>+++>++++>++++++>+++++++>+++++++>++++>-]<++<+++++<++++++++++<+++++++++<++++++<<<<<<<<<<<<<[>+>+>[-]>>>>[-]>[-]<<<<<<<[>>>>>>+>+<<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]+>---[<->[-]]<[>>>>>>.>.>..<<<<<<<<<<<<+<<[-]>>>>>>-]<<<<<[>>>>>+>+<<<<<<-]>>>>>[<<<<<+>>>>>-]+>-----[<->[-]]<[>>>>>>>>>>.<.<..<<<<<<<<<<<<+<[-]>>>>>-]<+>[-]>[-]>[-]<<<[>+>+>+<<<-]>[<+>-]+>----------[<->[-]]<[<<+>[-]>-]>[-]>[-]<<<<[>>+>+>+<<<<-]>>[<<+>>-]+>----------[<->[-]]<[<<<+>[-]>>-][-]>[-]<<<<<[>>>>+>+<<<<<-]>>>>[<<<<+>>>>-]+>[<->[-]]<[[-]>[-]<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[>++++++++[<++++++>-]<.-.[-]][-]>[-]<<<[>>+>+<<<-]>>>[<<<+>>>-]<[>++++++++[<++++++>-]<.[-]][-]>[-]<<[>+>+<<-]>>[<<+>>-]++++++++[<++++++>-]<.[-]]>>>>.<<<<<<<<<<<-]
আউটপুট:
ব্রেইনকপ্টার আউটপুট:
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17...
ইনপুট:
>>+[>>[>]>+>,[>>++++[>++++++++<-]>[<<<[>+>+<<-]>[<+>-]>[<<->>[-]]>-]<<<<->[<+>-[<->-[-[-[-[-[-[-[-[-[<+>-[-[-[-[<->-[-[-[-[-[-[-[-[-[-[-[-[-[<+>-[<->-[<+>-[<->>>+++[>+++++++++<-]>+[<<<[>+>+<<-]>[<+>-]>[<<->>[-]]>-]<<<[<+>-[<->-[<+>-[<->[-]]<[-<++>]>]]<[-<+>]>]]<[-<++++++>]>]]]]]]]]]]]]]]]<[-<+++++>]>]<[-<++++++++>]>]<[-<++++>]>]<[-<+++++++>]>]]]]]]]]]]<[-<+++>]>]]<[-<<[<]<->>[>]>]>]<[-<<[<]<->>[>]>]<<[<]<]>>[>]>>>>>>+<<<<<<<[<]>[[<<[<]<<+>+>>[>]>-]<<[<]<[>>[>]>+<<[<]<-]+<-[-[-[-[-[-[-[->->>[>]>[>]>>>>>[>[>>]>>>]>>[<<<<+>>+>>-]<<[>>+<<-]>>>[<<<<+>+>>>-]<<<[>>>+<<<-]<[->>>>>[<<<<<+>+>>>>-]<<<<[>>>>+<<<<-]<[<++++++++++>-]]>>>>>>[<<<<<<+>+>>>>>-]<<<<<[>>>>>+<<<<<-]<[->>>>>>>[<<<<<<<+>+>>>>>>-]<<<<<<[>>>>>>+<<<<<<-]<[<<++++++++++[>++++++++++<-]>>-]]<.[-]<<<[<<]>[<<<<<[<<]>]<<[<]>[<+>-]<[<]<<]>[->>[>]>[>]>>>>>[>[>>]>>>]>[>>]<<[->[-]>>>>[<<+>>->[<<+>>->[<<+>>-]>]>>>]<<<<<<<[<<]>[<<<<<[<<]>]>[>>]<<]>>>>>[>[>>]>>>]<<<<<[<<]>[>[>>]<<[->>+<[>>+<<-]<<<]>->>+<<<<<<<[<<]>]>+>>>>>[>[>>]>>>]>,[>+>+<<-]>[<+>-]>[[>+>+<<-]>>[<<+>>-]<[-<->[-<->[-<->[-<->[-<->[-<->[-<->[-<->[-<->[[-]<-><<<---------->+>>]]]]]]]]]]<]<[>+>+<<-]>[<+>-]>[-[-[-[-[-[-[-[-[-[-<<---------->+>[-[-[-[-[-[-[-[-[-[[-]<<---------->+>]]]]]]]]]]]]]]]]]]]]<<[>>+>+<<<-]>>[<<+>>-]+>[<<<+>>->[-]]<[-<[>+>+<<-]>[<+>-]>[<<<+>>>[-]]<]<[>+>+<<-]>[<+>-]>[<<+>>[-]]<<<<+[-[<<<<<<[<<]>[<<<<<[<<]>]>[>>]<+>>>>[>[>>]>>>]>-]>[>]<[[>+<-]<]<<<<<<[<<]>[>[>>]<<[>[>>+<<-]>+<<-<<]>->>+<<<<<<<[<<]>]>[>>]+>>>>>[>[>>]>>>]>]<<<<<<[<<]>[<<<<<[<<]>]>[>>]<<->>>>>[<<+>>->[<<+>>->[<<+>>-]>]>>>]<<<<<<<[<<]>[<<<<<[<<]>]<<<<<[<<]>[<<<<<[<<]>]<<[<]>[<+>-]<[<]<]<]>[->>[>]>[>]>>>>>[>[>>]>>>]+>[>>]>>>[-]>[-]+<<<<<<[<<]>[<<<<<[<<]>]<<[<]>[<+>-]<[<]<]<]>[->>[>]>[>]>>>>>[>[>>]>>>]+<<<<<[<<]>-<<<<<[<<]>[<<<<<[<<]>]<<[<]>[<+>-]<[<]<]<]>[->>[>]>[>]>>>>>[>[>>]>>>]>[->[<<<[<<]<<+>+>>>[>>]>-]<<<[<<]<[>>>[>>]>+<<<[<<]<-]+<[[-]>->>>[>>]>-<+[<<]<<]>[->>>[>>]>+++++++++<<<[<<]<]>>>[>>]+>>]<<-<<<<[>>>>+>+<<<<<-]>>>>[<<<<+>>>>-]>[-<<[>+>+<<-]>[<+>-]>>+<[[-]>-<]>[-<<<<->[-]>>>>[<<+>>->[<<+>>->[<<+>>-]>]>>>]<<<<<<<[<<]>[<<<<<[<<]>]>[>>]>>]<]<<<[<<]<<<<[<<]>[<<<<<[<<]>]<<[<]>[<+>-]<[<]<]<]>[->>[>]>[>]>>>>>[>[>>]>>>]>>+<[->[<<<[<<]<<+>+>>>[>>]>-]<<<[<<]<[>>>[>>]>+<<<[<<]<-]<[-[-[-[-[-[-[-[-[-[->>>>[>>]>[-]>[-]+>+<<<<<[<<]<<]]]]]]]]]]>>>>[>>]+>>]>[-<<<[<<]<<+>+>>>[>>]>]<<<[<<]<[>>>[>>]>+<<<[<<]<-]<[->>>>[>>]>[>[>>]<<[>[>>+<<-]>+<<-<<]>->>+>[>>]>]<<<[<<]>[<<<<<[<<]>]<<<]<<[<<]>[<<<<<[<<]>]<<[<]>[<+>-]<[<]<]<]>[->>[>]>[>]>>>>>[>[>>]>>>]>[>>]>>>[>[>>]>>>]>+[<<<<<<[<<]>[<<<<<[<<]>]<<<<<[<<]>[<<<<<[<<]>]<<[<]<[>+<-]>[<<[<]<<+>+>>[>]>-]<<[<]<[>>[>]>+<<[<]<-]+<-[-[>-<[-]]>[->>[>]>[>]>>>>>[>[>>]>>>]>[>>]>>>[>[>>]>>>]>[>]+[<]<<<<<[<<]>[<<<<<[<<]>]<<<<<[<<]>[<<<<<[<<]>]<<[<]<[<]<]<]>[->>[>]>[>]>>>>>[>[>>]>>>]>[>>]>>>[>[>>]>>>]>[>]<-<[<]<<<<<[<<]>[<<<<<[<<]>]<<<<<[<<]>[<<<<<[<<]>]<<[<]<[<]<]>>[>]>[>]>>>>>[>[>>]>>>]>[>>]>>>[>[>>]>>>]>]<<<<<<[<<]>[<<<<<[<<]>]<<<<<[<<]>[<<<<<[<<]>]<<[<]<[<]<]<]>[->>[>]>[>]>>>>>[>[>>]>>>]>>[<<<+>+>>-]<<[>>+<<-]>>>[<<<<+>+>>>-]<<<[>>>+<<<-]<<+>[[-]<-<<<[<<]>[<<<<<[<<]>]<<[<]>[<+>-]>[>]>>>>>[>[>>]>>>]<]<[->>>[>>]>>>[>[>>]>>>]>+[<<<<<<[<<]>[<<<<<[<<]>]<<<<<[<<]>[<<<<<[<<]>]<<[<]>[<+>-]>[<<[<]<<+>+>>[>]>-]<<[<]<[>>[>]>+<<[<]<-]+<-[-[>-<[-]]>[->>[>]>[>]>>>>>[>[>>]>>>]>[>>]>>>[>[>>]>>>]>[>]<-<[<]<<<<<[<<]>[<<<<<[<<]>]<<<<<[<<]>[<<<<<[<<]>]<<[<]<[<]<]<]>[->>[>]>[>]>>>>>[>[>>]>>>]>[>>]>>>[>[>>]>>>]>[>]+[<]<<<<<[<<]>[<<<<<[<<]>]<<<<<[<<]>[<<<<<[<<]>]<<[<]<[<]<]>>[>]>[>]>>>>>[>[>>]>>>]>[>>]>>>[>[>>]>>>]>]<<<<<<[<<]>[<<<<<[<<]>]<<<<<[<<]>[<<<<<[<<]>]<<[<]>[<+>-]>[>]>>>>>[>[>>]>>>]<<]<<<[<<]>[<<<<<[<<]>]<<[<]<[<]<]>>[>]>]
আউটপুট:
ব্রেইনকপ্টার আউটপুট:
এটি একজন ব্রেইনফ *** স্ব-অনুবাদক । এটি কোড দ্বারা ইনপুট থেকে পৃথক করে !
; উদাহরণস্বরূপ, ইনপুটটি ,[.,]!Hello, World!\0
আউটপুট দেবে Hello, World!
, ধরে নিবেন \0
একটি নাল বাইট দ্বারা প্রতিস্থাপিত হয়েছিল।
স্কোরিং
এটি কোড-গল্ফ , তাই সংক্ষিপ্ত উত্তরটি জেতে। শুভ গল্ফিং!