ফ্লাড পেইন্টের খেলায়, গেমটির লক্ষ্যটি হ'ল যতটা সম্ভব কয়েকটি টার্নে পুরো বোর্ডটি একই রঙে পাওয়া যায়।
খেলাটি এমন বোর্ডের সাহায্যে শুরু হয় যা এরকম কিছু দেখায়:
3 3 5 4 1 3 4 1 5
5 1 3 4 1 1 5 2 1
6 5 2 3 4 3 3 4 3
4 4 4 5 5 5 4 1 4
6 2 5 3[3]1 1 6 6
5 5 1 2 5 2 6 6 3
6 1 1 5 3 6 2 3 6
1 2 2 4 5 3 5 1 2
3 6 6 1 5 1 3 2 4
বোর্ডের কেন্দ্রে বর্তমানে সংখ্যা (একটি রঙের প্রতিনিধিত্ব করে) is Each অর্থাত্ কেন্দ্র বর্গক্ষেত্রের বন্যার অঞ্চলে) এর সাথে রঙ পরিবর্তন করবে। সুতরাং যদি কেন্দ্র বর্গাকার রঙটি 5 তে পরিবর্তন করে:
3 3 5 4 1 3 4 1 5
5 1 3 4 1 1 5 2 1
6 5 2 3 4 3 3 4 3
4 4 4 5 5 5 4 1 4
6 2 5 5[5]1 1 6 6
5 5 1 2 5 2 6 6 3
6 1 1 5 3 6 2 3 6
1 2 2 4 5 3 5 1 2
3 6 6 1 5 1 3 2 4
তারপরে 3 যেটি 3 কেন্দ্রের বাম দিকে ছিল তাও রঙ পরিবর্তন করবে। এখন কেন্দ্রের এক থেকে মোট সাতটি 5 টি পৌঁছনীয় এবং তাই আমরা যদি তখন রঙ 4 এ পরিবর্তন করি:
3 3 5 4 1 3 4 1 5
5 1 3 4 1 1 5 2 1
6 5 2 3 4 3 3 4 3
4 4 4 4 4 4 4 1 4
6 2 4 4[4]1 1 6 6
5 5 1 2 4 2 6 6 3
6 1 1 5 3 6 2 3 6
1 2 2 4 5 3 5 1 2
3 6 6 1 5 1 3 2 4
আঁকা অঞ্চলটি আবার আকারে নাটকীয়ভাবে বৃদ্ধি পায়।
আপনার কাজ হ'ল এমন একটি প্রোগ্রাম তৈরি করা যা আপনি 19-বাই-19 রঙের গ্রিড 1 থেকে 6 থেকে ইনপুট হিসাবে গ্রহণ করবেন, আপনি যে কোনও ফর্মই চয়ন করুন:
4 5 1 1 2 2 1 6 2 6 3 4 2 3 2 3 1 6 3
4 2 6 3 4 4 5 6 4 4 5 3 3 3 3 5 4 3 4
2 3 5 2 2 5 5 1 2 6 2 6 6 2 1 6 6 1 2
4 6 5 5 5 5 4 1 6 6 3 2 6 4 2 6 3 6 6
1 6 4 4 4 4 6 4 2 5 5 3 2 2 4 1 5 2 5
1 6 2 1 5 1 6 4 4 1 5 1 3 4 5 2 3 4 1
3 3 5 3 2 2 2 4 2 1 6 6 6 6 1 4 5 2 5
1 6 1 3 2 4 1 3 3 4 6 5 1 5 5 3 4 3 3
4 4 1 5 5 1 4 6 3 3 4 5 5 6 1 6 2 6 4
1 4 2 5 6 5 5 3 2 5 5 5 3 6 1 4 4 6 6
4 6 6 2 6 6 2 4 2 6 1 5 6 2 3 3 4 3 6
6 1 3 6 3 5 5 3 6 1 3 4 4 5 1 2 6 4 3
2 6 1 3 2 4 2 6 1 1 5 2 6 6 6 6 3 3 3
3 4 5 4 6 6 3 3 4 1 1 6 4 5 1 3 4 1 2
4 2 6 4 1 5 3 6 4 3 4 5 4 2 1 1 4 1 1
4 2 4 1 5 2 2 3 6 6 6 5 2 5 4 5 4 5 1
5 6 2 3 4 6 5 4 1 3 2 3 2 1 3 6 2 2 4
6 5 4 1 3 2 2 1 1 1 6 1 2 6 2 5 6 4 5
5 1 1 4 2 6 2 5 6 1 3 3 4 1 6 1 2 1 2
এবং রঙগুলির একটি ক্রম ফিরে আসুন যা কেন্দ্রের বর্গক্ষেত্রটি প্রতিটি পরিবর্তনে পরিবর্তিত হবে, আবার আপনার নির্বাচনের বিন্যাসে:
263142421236425431645152623645465646213545631465
প্রতিটি চলার ক্রম শেষে, 19-বাই-19 গ্রিডের স্কোয়ারগুলি অবশ্যই একই রঙের হবে।
আপনার প্রোগ্রামটি সম্পূর্ণরূপে নির্বিচারক হওয়া উচিত; সিউডোর্যান্ডম সমাধানগুলি অনুমোদিত, তবে প্রোগ্রামটি অবশ্যই প্রতিবার একই পরীক্ষার ক্ষেত্রে একই আউটপুট উত্পন্ন করতে হবে।
বিজয়ী প্রোগ্রামটি এই ফাইলটিতে পাওয়া সমস্ত 100,000 পরীক্ষার কেস সমাধানের জন্য সর্বনিম্ন মোট পদক্ষেপ গ্রহণ করবে (জিপযুক্ত পাঠ্য ফাইল, 14.23 মেগাবাইট)। যদি দুটি সমাধান একই সংখ্যক পদক্ষেপ নেয় (উদাহরণস্বরূপ যদি তারা উভয়ই অনুকূল কৌশলটি খুঁজে পেয়ে থাকে), তবে সংক্ষিপ্ত প্রোগ্রামটি জয়ী হবে।
বার্টপিজা পরীক্ষার ফলাফল যাচাই করার জন্য জাভাতে একটি প্রোগ্রাম লিখেছিল। এই প্রোগ্রামটি ব্যবহার করতে, আপনার জমা দিন এবং কোনও ফাইলকে আউটপুটটি পাইপ করুন steps.txt
। তারপরে, একই ডিরেক্টরিতে এই প্রোগ্রামটি steps.txt
এবং floodtest
ফাইলটি চালান । যদি আপনার এন্ট্রি বৈধ হয় এবং সমস্ত ফাইলের জন্য সঠিক সমাধান উত্পাদন করে তবে এটি সমস্ত পরীক্ষা পাস করে ফিরে আসতে হবেAll boards solved successfully.
import java.io.*;
import java.util.*;
public class PainterVerifier {
public static void main(String[] args) throws FileNotFoundException {
char[] board = new char[361];
Scanner s = new Scanner(new File("steps.txt"));
Scanner b = new Scanner(new File("floodtest"));
int lineNum = 0;
caseloop: while (b.hasNextLine()) {
for (int l = 0; l < 19; l++) {
String lineb = b.nextLine();
if (lineb.isEmpty())
continue caseloop;
System.arraycopy(lineb.toCharArray(), 0, board, l * 19, 19);
}
String line = s.nextLine();
if (line.isEmpty())
continue;
char[] steps = line.toCharArray();
Stack<Integer> nodes = new Stack<Integer>();
for (char c : steps) {
char targetColor = board[180];
char replacementColor = c;
nodes.push(180);
while (!nodes.empty()) {
int n = nodes.pop();
if (n < 0 || n > 360)
continue;
if (board[n] == targetColor) {
board[n] = replacementColor;
if (n % 19 > 0)
nodes.push(n - 1);
if (n % 19 < 18)
nodes.push(n + 1);
if (n / 19 > 0)
nodes.push(n - 19);
if (n / 19 < 18)
nodes.push(n + 19);
}
}
}
char center = board[180];
for (char c : board)
if (c != center) {
s.close();
b.close();
System.out.println("\nIncomplete board found!\n\tOn line " + lineNum + " of steps.txt");
System.exit(0);
}
if (lineNum % 5000 == 0)
System.out.printf("Verification %d%c complete...\n", lineNum * 100 / 100000, '%');
lineNum++;
}
s.close();
b.close();
System.out.println("All boards solved successfully.");
}
}
এছাড়াও, একটি স্কোরবোর্ড, যেহেতু ফলাফলগুলি আসলে স্কোর অনুসারে বাছাই হয় না এবং এখানে এটি আসলে অনেকটাই গুরুত্বপূর্ণ:
- 1,985,078 - স্ম্যাক 42, জাভা
- 2,075,452 - ব্যবহারকারী1502040, সি
- 2,098,382 - টাইগ্রো, সি #
- 2,155,834 - কোডার টাও, সি #
- 2,201,995 - মিস্টারব্যাকেন্ড, জাভা
- 2,383,569 - কোডার টাও, সি #
- 2,384,020 - হার্জান, সি
- 2,403,189 - অরিজিনিল, জাভা
- 2,445,761 - হার্জান, সি
- 2,475,056 - জেরেমি তালিকা, হাস্কেল
- 2,480,714 - স্টিলটার্মাইট, সি (2,395 বাইট)
- 2,480,714 - হার্জান, জাভা (4,702 বাইট)
- 2,588,847 - বার্ন্ট পিজ্জা, জাভা (2,748 বাইট)
- 2,588,847 - Gero3, node.js (4,641 বাইট)
- 2,979,145 - টিউন প্রোঙ্ক , ডেল্ফি এক্সই 3
- 4,780,841 - বার্ন্ট পিজ্জা, জাভা
- 10,800,000 - জো জেড, পাইথন