আপনি চিকন একটি গ্লোব। স্বাভাবিকভাবেই, স্লাইম হওয়ার কারণে, আপনি যতটা সম্ভব এলাকাতে ওঠাতে চান। তবে আরও 3 টি স্লাইম রয়েছে যারা একই জিনিসটি করতে চায়। কে হবে উন্নত চর্বি?
বিবরণ
সমস্ত স্লাইম এক অঙ্গনে জড়ো করা হবে। বিচারকরা (অর্থাত্ নিয়ন্ত্রণ প্রোগ্রাম) সমস্ত সম্ভাব্য 4-স্লাইম সংমিশ্রণের একটি বিস্তৃত তালিকার মধ্য দিয়ে যাবেন, এগুলি একটি টেবিলের কোণায় রাখবেন এবং কোন অঞ্চলটি সবচেয়ে বেশি অঞ্চল জুড়ে বেরিয়ে আসে তা পর্যবেক্ষণ করবেন।
আপনার স্লাইমগুলি প্রতি বারে 3 টির মধ্যে একটি ক্রিয়াকলাপ করতে পারে: ছড়িয়ে পড়ে, লাফিয়ে যায় বা মার্জ করে। এগুলি কী বোঝায় তা সম্পর্কে আরও বিবরণ আউটপুট বিভাগে সরবরাহ করা হবে।
বোর্ড / এরিনা
অঙ্গনটি একটি বর্গ বোর্ড হবে (বর্তমানে 8x8, তবে এটি ভবিষ্যতে পরিবর্তন হতে পারে)। এখানে একটি গেমের অগ্রগতির উদাহরণ রয়েছে:
11111222
11111444
11.22444
.1222.4.
333.3244
33333.44
333...44
333....4
স্লাইমটি 1 থেকে 4 সংখ্যক (প্লেয়ার 1 থেকে 4) দ্বারা উপস্থাপিত হয় এবং খালি স্থানটি একটি বিন্দু দ্বারা প্রতিনিধিত্ব করে ( .
)। প্রথমদিকে, বোর্ডটি বাম কোণার উপরে প্লেয়ার 1 এর কাঁচের একক ইউনিট, উপরের ডানদিকে প্লেয়ার 2, নীচে বাম দিকে প্লেয়ার 3 এবং নীচে ডানদিকে প্লেয়ার 4 ব্যতীত সমস্ত খালি স্থান হিসাবে শুরু করবে।
কোডটিতে পাঠযোগ্যতার জন্য স্থানাঙ্কগুলি 0-ভিত্তিক সারি এবং কলাম সূচক দ্বারা প্রতিনিধিত্ব করা হয়। উদাহরণস্বরূপ, স্থানাঙ্কগুলি (3, 6) 4 র্থ সারিতে 7 ম বর্গের প্রতিনিধিত্ব করে (উপরের উদাহরণে ক 4
)। (এটি স্কোয়ারগুলিতে অ্যাক্সেস করা সহজ করে তোলে:। board[coords.x][coords.y]
) এখানে একটি চাক্ষুষ চিত্র রয়েছে:
(0, 0) (0, 1) (0, 2)
(1, 0) (1, 1) (1, 2)
(2, 0) (2, 1) (2, 2)
ইনপুট
আপনার প্রোগ্রামের ইনপুটটি আপনি কোন খেলোয়াড় (1, 2, 3, বা 4), একটি কমা ( ,
), তারপরে বোর্ড / অঙ্গনের সামগ্রী (কমা দিয়ে প্রতিস্থাপন করা নতুন লাইনের সাথে) থাকবে be উদাহরণস্বরূপ, আপনি যদি উপরের দৃশ্যে 3 খেলোয়াড় হন তবে আপনার ইনপুটটি হবে:
3,11111222,11111444,11.22444,.1222.4.,333.3244,33333.44,333...44,333....4
আউটপুট
আপনার প্রোগ্রামটি অবশ্যই 4 পূর্ণসংখ্যার আউটপুট দেয়। প্রথম দুটি হ'ল আপনি যে স্লাইমটি সরাতে চান তার যথাক্রমে সারি এবং কলাম সূচক এবং পরের দুটি হ'ল আপনি যেখানে সরাতে চান তার সারি এবং কলাম সূচী।
প্রতিটি বারে আপনার কাছে তিনটি পছন্দ রয়েছে: ছড়িয়ে পড়া, লাফানো বা একত্রীকরণ।
বিস্তার
ছড়িয়ে দেওয়ার জন্য, লক্ষ্য স্থানাঙ্কগুলি স্লাইম সরানো থেকে ঠিক এক বর্গ দূরে থাকতে হবে এবং লক্ষ্য স্থানাঙ্কের বর্গক্ষেত্রটি অবশ্যই ফাঁকা স্থান হতে হবে। ছড়িয়ে পড়ার সময় লক্ষ্য স্থানাঙ্কগুলিতে একটি নতুন স্লাইম তৈরি করা হয় এবং পুরাতন পাতলা সরানো হয় না । নতুন স্লাইম তৈরি হওয়ার পরে, এই নতুন স্লাইমের চারপাশে 8 স্কোয়ারের সমস্ত শত্রু স্লাইম সরানো প্লেয়ারে রূপান্তরিত হয়।
উদাহরণস্বরূপ, চিত্র 1-এ বোর্ডের সাথে, প্লেয়ার 1 যদি আউটপুট দেয়
0 1 1 2
তবে ফলাফলটি ডুমুর 2-এ বোর্ড হবে।1. 2. 11.22 11.12 1..22 1.112 ..22. ..11. ..... .....
ঝাঁপ দাও
লাফানোর জন্য, লক্ষ্য স্থানাঙ্কগুলি স্লাইম সরানো থেকে ঠিক দুটি স্কোয়ার দূরে থাকতে হবে এবং লক্ষ্য স্থানাঙ্কের বর্গক্ষেত্রটি অবশ্যই ফাঁকা স্থান হতে হবে। যখন জুপমিং হয়, লক্ষ্য স্থানাঙ্কগুলিতে একটি নতুন স্লাইম তৈরি করা হয় এবং পুরাতন কাটা সরানো হয়। নতুন স্লাইম তৈরি হওয়ার পরে, এই নতুন স্লাইমের চারপাশে 8 স্কোয়ারের সমস্ত শত্রু স্লাইম সরানো প্লেয়ারে রূপান্তরিত হয়।
উদাহরণস্বরূপ, চিত্র 1-এ বোর্ডের সাথে, প্লেয়ার 1 যদি আউটপুট দেয়
0 1 2 3
তবে ফলাফলটি ডুমুর 2-এ বোর্ড হবে।1. 2. 11..2 1...2 1...2 1...1 ....2 ...11 ...22 ...11
একত্রিত করা
মার্জ করার জন্য, লক্ষ্য স্থানাঙ্কগুলি স্লাইম সরানো থেকে ঠিক এক বর্গ দূরে থাকতে হবে এবং লক্ষ্য স্থানাঙ্কের বর্গক্ষেত্রটি অবশ্যই একই প্লেয়ারের কাটা হতে হবে। মার্জ করার সময়, পুরানো পাতলা সরানো হয়। তারপরে, লক্ষ্য স্লাইমের চারপাশে 8 স্কোয়ারের সমস্ত খালি স্থানগুলি সরানো প্লেয়ারে রূপান্তরিত হয় (পুরানো কাটা সরানো সহ নয়)।
উদাহরণস্বরূপ, চিত্র 1-এ বোর্ডের সাথে, প্লেয়ার 1 যদি আউটপুট দেয়
0 1 1 2
তবে ফলাফলটি ডুমুর 2-এ বোর্ড হবে।1. 2. 11..2 1.112 1.1.2 11112 ....2 .1112 ..222 ..222
আপনি কেবল অবৈধ স্থানাঙ্ক (প্রাক্তন 0 0 0 0
) আউটপুট করেও পাস করতে পারেন ।
বিধি ও সীমাবদ্ধতা
অতিরিক্ত বিধিগুলি হ'ল:
- ডেটা অব্যাহত রাখতে আপনি নিজের ফোল্ডারে ফাইল পড়তে এবং লিখতে পারেন (জমাগুলি সংরক্ষণ করা হবে
players/YourBotName/yourBotName.language
) তবে আপনি এর বাইরে অন্য কোনও কিছুর সংশোধন বা অ্যাক্সেস করতে পারবেন না not ইন্টারনেট অ্যাক্সেস নিষিদ্ধ। - আপনার জমাটি বিশেষত কোনও কোড জমা দেওয়া বা অন্য জমা দেওয়ার জন্য কোড করা যাবে না। (আপনার একাধিক জমা থাকতে পারে তবে তাদের অবশ্যই কোনওভাবেই একে অপরের সাথে ইন্টারঅ্যাক্ট করা উচিত নয়))
- আপনার জমা দিতে প্রতি সেকেন্ডে 0.1 সেকেন্ডের বেশি লাগবে না। আপনার জমা যদি মাঝে মাঝে 0.105 সেকেন্ড সময় নেয় তবে তা ঠিক আছে তবে এই সময়সীমাটির চেয়ে এটি ধারাবাহিকভাবে বেশি সময় নিতে পারে না। (অত্যধিক দীর্ঘ সময় নিরীক্ষণ এড়াতে এটি মূলত একটি স্যানিটি চেক))
- আপনার জমাটি অন্য কোনওর মতো সঠিক সদৃশ (যেমন সঠিক একই যুক্তি ব্যবহার করুন) হওয়া উচিত নয়, এমনকি এটি অন্য ভাষায় হলেও।
- আপনার জমাটি অবশ্যই একটি গুরুতর জমা দিতে হবে। এটি মতামতভিত্তিক, তবে আপনার জমাটি যদি চ্যালেঞ্জটি সমাধান করার জন্য স্পষ্টভাবে চেষ্টা না করে (উদাহরণস্বরূপ, আপনি প্রতিটি পালা পেরিয়ে যান), এটি অযোগ্য ঘোষণা করা হবে।
আপনার জমাটি যদি এই নিয়মগুলির কোনও ভঙ্গ করে বা স্পেসিফিকেশন অনুসরণ না করে তবে এটি অযোগ্য ঘোষণা করা হবে, এখান থেকে সরানো playerlist.txt
হবে এবং গেমটি শুরু থেকেই পুনরায় শুরু হবে। যদি আপনার জমাটি অযোগ্য ঘোষণা করা হয় তবে আমি কেন আপনার পোস্টে একটি মন্তব্য করব। অন্যথায়, আপনার জমাটি লিডারবোর্ডে যুক্ত করা হবে। (যদি আপনি লিডারবোর্ডে আপনার জমাটি দেখতে না পান, আপনার পোস্টে কোনও ব্যাখ্যামূলক মন্তব্য না করেন এবং নীচে "শেষ আপডেট" সময়ের আগে আপনার জমা পোস্ট করেছেন, দয়া করে আমাকে বলুন! আমি সম্ভবত অজান্তে এটি উপেক্ষা করেছি))
আপনার প্রবেশে, দয়া করে অন্তর্ভুক্ত করুন:
- একটি নাম.
- শেল কমান্ড (উদাহরণস্বরূপ, আপনার প্রোগ্রাম চালানোর জন্য
java MyBot.java
,ruby MyBot.rb
,python3 MyBot.py
, ইত্যাদি)।- নোট করুন যে ইনপুট (আপনার প্লেয়ার এবং মানচিত্র) এতে একটি কমান্ড লাইনের যুক্তি হিসাবে যুক্ত হবে।
- প্রোগ্রামগুলি উবুন্টু ১৪.০৪-এ পরীক্ষা করা হবে, সুতরাং আপনার কোডটি এতে (অবাধে) চালানো যেতে পারে তা নিশ্চিত করুন।
- একটি সংস্করণ নম্বর, যদি আপনার কোডটি আপনার ভাষার বিভিন্ন সংস্করণে আলাদাভাবে কাজ করে।
- আপনার বট কোড
- কীভাবে কোডটি সংকলন করতে হবে তার নির্দেশাবলী
নিয়ামক কোড / পরীক্ষা, উদাহরণ বট
কন্ট্রোলার কোডটি সি ++ তে লেখা হয় এবং এটি গিথুব-এ পাওয়া যায় । আপনার কোডটি কীভাবে চালানো এবং পরীক্ষা করতে হবে সে সম্পর্কে আরও নির্দেশাবলী সেখানে পাওয়া যাবে।
simplebot.rb
, একটি খুব সাধারণ বট যা প্রতিটি মোড় এলোমেলো স্থানে ছড়িয়ে পড়ে বা এলোমেলোভাবে লাফ দেয়, এছাড়াও গিতুব পোস্ট করা হয় ।
স্কোরিং এবং লিডারবোর্ড
বোর্ডের সমস্ত স্কোয়ারগুলি পূর্ণ হয়ে গেলে, খেলাটি শেষ হয় এবং স্কোরগুলি গণনা করা হয়। কোনও খেলোয়াড়ের চূড়ান্ত স্কোর হল স্কোয়ারের পরিমাণ যা গেমের শেষে তাদের পাতলা করে contain যদি 2000 টার্নগুলি (প্রতিটি খেলোয়াড়ের জন্য 500) কেটে যায় এবং গেমটি এখনও শেষ না হয় তবে গেমটি যেভাবেই শেষ হবে এবং স্কোরগুলি এমনভাবে রিপোর্ট করা হবে যেন গেমটি শেষ হয়ে গেছে।
টুর্নামেন্টের শেষে, সমস্ত গেমের স্কোরগুলি গড়ে প্রতিটি খেলোয়াড়ের চূড়ান্ত স্কোর গণনা করতে হবে, যা লিডারবোর্ডে পোস্ট করা হবে। জমা দেওয়ার সময়সীমা নেই; নতুন জমাগুলি আসার সাথে সাথে আমি পর্যায়ক্রমে লিডারবোর্ড আপডেট করতে থাকব to
একটি আসল লিডারবোর্ড উপস্থিত না হওয়া পর্যন্ত 4 টি জমা দেওয়ার প্রয়োজন।
+--------------------------+-----------+--------------------+
| Name | Avg Score | Last Updated (UTC) |
+--------------------------+-----------+--------------------+
| GreedySlime | 47.000 | Jul 22 10:27 PM |
| Jumper | 12.000 | Jul 22 10:27 PM |
| ShallowBlue | 5.000 | Jul 22 10:27 PM |
| Lichen | 0.000 | Jul 22 10:27 PM |
+--------------------------+-----------+--------------------+
শেষ আপডেট: জুলাই 22 10:27 অপরাহ্ন (ইউটিসি)।