সময় এসেছে ব্রিটিশ গোয়েন্দা বিভাগকে পরাস্ত করার জন্য একটি বিপজ্জনক সন্ধানে। এই চ্যালেঞ্জের উদ্দেশ্যটি হ'ল সংক্ষিপ্ততম কোডটি লেখা যা একটি ননোগ্রাম সমাধান করবে।
ননোগ্রাম কী?
নিয়ম সহজ। আপনার স্কোয়ারগুলির একটি গ্রিড রয়েছে, যা অবশ্যই কালো বা বাম ফাঁকাতে পূর্ণ হতে হবে। গ্রিডের প্রতিটি সারির পাশে সেই সারিতে কালো স্কোয়ারের দৈর্ঘ্যের তালিকাবদ্ধ রয়েছে। প্রতিটি কলামের উপরে that কলামটিতে কালো স্কোয়ারের দৈর্ঘ্যের তালিকাবদ্ধ রয়েছে। আপনার লক্ষ্য সমস্ত কালো স্কোয়ার সন্ধান করা। এই ধাঁধা প্রকারে, সংখ্যাগুলি হ'ল পৃথক টোমোগ্রাফির একটি রূপ যা পরিমাপ করে যে কোনও প্রদত্ত সারিতে বা কলামে ভরাট-ইন স্কোয়ারের কতগুলি অখণ্ড রেখা রয়েছে measures উদাহরণস্বরূপ, "4 8 3" এর একটি সূত্র বলতে বোঝা যাচ্ছে যে ক্রমানুসারে গ্রুপগুলির মধ্যে কমপক্ষে একটি ফাঁকা বর্গক্ষেত্রের সাথে চার, আট এবং তিনটি ভরা স্কোয়ারের সেট রয়েছে। [ ১ ] [ ২ ]
সুতরাং উপরের ননোগ্রামের সমাধানটি হ'ল:
বাস্তবায়ন বিশদ
আপনি ননোগ্রামের প্রতিনিধিত্ব করতে বেছে নিতে পারেন তবে আপনি যা চান তা বেছে নিতে পারেন এবং আপনার ভাষার জন্য আপনি যেভাবে উপযুক্ত মনে করেন তা ইনপুট হিসাবে নিতে পারেন। আউটপুট জন্য একই যায়। এই চ্যালেঞ্জের উদ্দেশ্য হ'ল আক্ষরিক অর্থে কাজটি করা; যদি আপনি আপনার প্রোগ্রাম যা আউটপুট দেয় তার সাথে যদি ননগ্রামটি সমাধান করতে পারেন তবে তা বৈধ। একটি সতর্কতা হ'ল আপনি কোনও অনলাইন সলভার ব্যবহার করতে পারবেন না :)
এই সমস্যাটি খুব অ্যালগোরিদমিকভাবে চ্যালেঞ্জিং (এনপি-সম্পূর্ণ) যেহেতু এর কোনও সম্পূর্ণ দক্ষ সমাধান নেই এবং এর মতো, বৃহত্তরগুলির সমাধান করতে সক্ষম না হওয়ায় আপনাকে দণ্ডিত করা হবে না, যদিও আপনার উত্তরটি যদি ভারী হয়ে থাকে তবে তা পুরষ্কারপ্রাপ্ত হবে যদি বড় মামলাগুলি পরিচালনা করতে সক্ষম (বোনাস দেখুন)। একটি মানদণ্ড হিসাবে, আমার সমাধান 5-10 সেকেন্ডের মধ্যে প্রায় 25x25 পর্যন্ত কাজ করে। বিভিন্ন ভাষার মধ্যে নমনীয়তার অনুমতি দেওয়ার জন্য, 25x25 ননগ্রামের জন্য 5 মিনিটেরও কম সময় নেওয়া সমাধানগুলি যথেষ্ট ভাল।
আপনি সর্বদা একটি বর্গ NxN ননগ্রামে ধাঁধাটি ধরে নিতে পারেন।
আপনার সমাধানগুলি পরীক্ষা করতে আপনি এই অনলাইন ননগ্রাম ধাঁধা প্রস্তুতকারকটি ব্যবহার করতে পারেন ।
স্কোরিং
আপনি অবশ্যই যে কোনও ভাষা ব্যবহার করতে পারেন নিঃসন্দেহে এবং এটি কোড গল্ফ হওয়ায় এন্ট্রিগুলি ক্রমে সাজানো হবে: accuracy -> length of code -> speed.
তবে কোড গল্ফিং ভাষার দ্বারা নিরুৎসাহিত হবেন না, সমস্ত ভাষায় উত্তর যা গল্ফিংয়ের চেষ্টা দেখায় একটি আকর্ষণীয় উপায়ে upvated হবে!
বোনাস
আমি এখানে ব্রিটিশ ইন্টেলিজেন্স দ্বারা প্রকাশিত একটি ক্রিপ্টোগ্রাফিক ক্রিসমাস কার্ড থেকে ননোগ্রাম সম্পর্কে জানতে পারি । প্রথম অংশটি ছিল মূলত একটি বিশাল 25x25 ননোগ্রাম। আপনার সমাধানটি যদি এটি সমাধান করতে সক্ষম হয় তবে আপনি ক্লুডস পাবেন :)
ডেটা প্রবেশের ক্ষেত্রে আপনার জীবনকে আরও সহজ করার জন্য, আমি আপনার বিনামূল্যে ব্যবহারের জন্য এই নির্দিষ্ট ধাঁধাটির জন্য কীভাবে ডেটা উপস্থাপন করেছি তা সরবরাহ করেছি। প্রথম 25 টি লাইনগুলি সারি ক্লু, তারপরে একটি '-' বিভাজনকারী রেখা, তারপরে কোল ক্লুগুলির 25 লাইন, তারপরে একটি '#' বিভাজক রেখা এবং তারপরে স্কয়ারের ক্লুগুলি পূরণ করে গ্রিডের প্রতিনিধিত্ব করা হয়।
7 3 1 1 7
1 1 2 2 1 1
1 3 1 3 1 1 3 1
1 3 1 1 6 1 3 1
1 3 1 5 2 1 3 1
1 1 2 1 1
7 1 1 1 1 1 7
3 3
1 2 3 1 1 3 1 1 2
1 1 3 2 1 1
4 1 4 2 1 2
1 1 1 1 1 4 1 3
2 1 1 1 2 5
3 2 2 6 3 1
1 9 1 1 2 1
2 1 2 2 3 1
3 1 1 1 1 5 1
1 2 2 5
7 1 2 1 1 1 3
1 1 2 1 2 2 1
1 3 1 4 5 1
1 3 1 3 10 2
1 3 1 1 6 6
1 1 2 1 1 2
7 2 1 2 5
-
7 2 1 1 7
1 1 2 2 1 1
1 3 1 3 1 3 1 3 1
1 3 1 1 5 1 3 1
1 3 1 1 4 1 3 1
1 1 1 2 1 1
7 1 1 1 1 1 7
1 1 3
2 1 2 1 8 2 1
2 2 1 2 1 1 1 2
1 7 3 2 1
1 2 3 1 1 1 1 1
4 1 1 2 6
3 3 1 1 1 3 1
1 2 5 2 2
2 2 1 1 1 1 1 2 1
1 3 3 2 1 8 1
6 2 1
7 1 4 1 1 3
1 1 1 1 4
1 3 1 3 7 1
1 3 1 1 1 2 1 1 4
1 3 1 4 3 3
1 1 2 2 2 6 1
7 1 3 2 1 1
#
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
এবং আপনার সুবিধার জন্য এখানে কিছুটা আলাদা সংস্করণ রয়েছে; কমা দ্বারা পৃথক করা টুপল (সারি, কর্ন) যেখানে প্রতিটি উপাদান তালিকার তালিকা থাকে।
([[7, 3, 1, 1, 7],
[1, 1, 2, 2, 1, 1],
[1, 3, 1, 3, 1, 1, 3, 1],
[1, 3, 1, 1, 6, 1, 3, 1],
[1, 3, 1, 5, 2, 1, 3, 1],
[1, 1, 2, 1, 1],
[7, 1, 1, 1, 1, 1, 7],
[3, 3],
[1, 2, 3, 1, 1, 3, 1, 1, 2],
[1, 1, 3, 2, 1, 1],
[4, 1, 4, 2, 1, 2],
[1, 1, 1, 1, 1, 4, 1, 3],
[2, 1, 1, 1, 2, 5],
[3, 2, 2, 6, 3, 1],
[1, 9, 1, 1, 2, 1],
[2, 1, 2, 2, 3, 1],
[3, 1, 1, 1, 1, 5, 1],
[1, 2, 2, 5],
[7, 1, 2, 1, 1, 1, 3],
[1, 1, 2, 1, 2, 2, 1],
[1, 3, 1, 4, 5, 1],
[1, 3, 1, 3, 10, 2],
[1, 3, 1, 1, 6, 6],
[1, 1, 2, 1, 1, 2],
[7, 2, 1, 2, 5]],
[[7, 2, 1, 1, 7],
[1, 1, 2, 2, 1, 1],
[1, 3, 1, 3, 1, 3, 1, 3, 1],
[1, 3, 1, 1, 5, 1, 3, 1],
[1, 3, 1, 1, 4, 1, 3, 1],
[1, 1, 1, 2, 1, 1],
[7, 1, 1, 1, 1, 1, 7],
[1, 1, 3],
[2, 1, 2, 1, 8, 2, 1],
[2, 2, 1, 2, 1, 1, 1, 2],
[1, 7, 3, 2, 1],
[1, 2, 3, 1, 1, 1, 1, 1],
[4, 1, 1, 2, 6],
[3, 3, 1, 1, 1, 3, 1],
[1, 2, 5, 2, 2],
[2, 2, 1, 1, 1, 1, 1, 2, 1],
[1, 3, 3, 2, 1, 8, 1],
[6, 2, 1],
[7, 1, 4, 1, 1, 3],
[1, 1, 1, 1, 4],
[1, 3, 1, 3, 7, 1],
[1, 3, 1, 1, 1, 2, 1, 1, 4],
[1, 3, 1, 4, 3, 3],
[1, 1, 2, 2, 2, 6, 1],
[7, 1, 3, 2, 1, 1]])
s=[].fill([].fill(0,0,25),0,25);s[3][3]=s[3][4]=s3[3][12]=s3[3][13]=s3[3][21]=s[8][6]=s[8][7]=s[8][10]=s[8][14]=s[8][15]=s[8][18]=s[16][6]=s[16][11]=s[16][16]=s[16][20]=s[21][3]=s[21][4]=s[21][9]=s[21][10]=s[21][15]=s[21][20]=s[21][21]=1;