এই চ্যালেঞ্জের ক্ষেত্রে, আপনাকে পেট্রি-ডিশ অঙ্গনে মৃত্যুর সাথে লড়াই করতে অবশ্যই এককোষী জীবের একটি প্রজাতি তৈরি করতে হবে। আখড়াটি একটি আয়তক্ষেত্রাকার গ্রিড হিসাবে প্রতিনিধিত্ব করা হয়, যেখানে প্রতিটি ঘর একটি স্থান দখল করে:
.....x....
...x...o..
...x.c..o.
.......o..
আরোপ করা
প্রতিটি ঘরে তিনটি বৈশিষ্ট্য রয়েছে। গেমের শুরুতে আপনার সেল প্রজাতিগুলি নির্দিষ্ট করার সময়, আপনি এই বৈশিষ্ট্যের মধ্যে 12 পয়েন্ট বরাদ্দ করেন।
- হিট পয়েন্টস (এইচপি): কোনও কোষের এইচপি শূন্যে নেমে গেলে, এটি মারা যায়। নতুন কোষগুলিতে পূর্ণ এইচপি রয়েছে।
- যখন একটি কোষ মারা যায়, তখন এটি একটি মৃতদেহের পিছনে ফেলে দেয় যা শক্তির জন্য অন্যান্য কোষগুলি খেতে পারে।
- কোনও ঘর হারিয়ে যাওয়া এইচপি পুনরুদ্ধার করতে পারে না, তবে এটি ভাগ করে পুরো এইচপি সহ একটি নতুন ঘর তৈরি করতে পারে।
- শক্তি : একটি কক্ষ গ্রহণ করতে পারে এমন বেশিরভাগ ক্রিয়াকলাপের জন্য শক্তি প্রয়োজন। সক্রিয়ভাবে বিশ্রাম নেওয়ার মাধ্যমে, কোনও কোষ তার প্রজাতির সর্বাধিক সর্বাধিক সর্বাধিক হারিয়ে যাওয়া শক্তি ফিরে পেতে পারে।
- 5 টিরও কম শক্তি সহ একটি কোষের প্রজাতি ব্যর্থ হতে পারে, কারণ এটি নতুন কোষ তৈরিতে ভাগ করতে পারে না।
- একটি কোষ তার প্রজাতির সর্বাধিক মান ছাড়িয়ে আবার শক্তি অর্জন করতে পারে না।
- নতুন তৈরি করা ঘরে একটি প্রাথমিক শক্তি মান তার পিতামাতার কাছ থেকে অনুলিপি করা হয় (এবং এর প্রজাতির নির্দিষ্টকরণের দ্বারা নির্ধারিত সর্বাধিক মান)।
- অম্লতা : যদি কোনও কোষটি বিস্ফোরিত করতে পছন্দ করে, ঘরের অ্যাসিডিটি স্তরটি সংলগ্ন কোষগুলির ক্ষতির গণনা করতে ব্যবহৃত হয়।
ক্রিয়াকলাপ
প্রতিটি পালা, প্রতিটি ঘর একটি পদক্ষেপ নিতে পারে:
সরান: ঘরটি 1 শক্তি ব্যয়ে যে কোনও দিকে (N / S / E / W / NE / NW / SE / SW) এক স্থান স্থানান্তরিত করে।
- একটি ঘর অন্য একটি জীবন্ত কক্ষ দ্বারা দখল করা স্থানের উপরে স্থানান্তর করতে পারে না।
- একটি ঘর গ্রিড থেকে সরানো যায় না।
- একটি কক্ষের দেহে চলে যাওয়া শবকে ধ্বংস করে।
আক্রমণ: 1 থেকে 3 এনার্জি পয়েন্ট ব্যয় করে 1 থেকে 3 টি ক্ষতি করে, একটি সেল একটি সংলগ্ন কক্ষে আক্রমণ করে।
- একটি ঘর যে কোনও দিকে আক্রমণ করতে পারে (এন / এস / ই / ডাব্লু / এনই / এনডাব্লু / এসই / এসডাব্লু)
- বন্ধুত্বপূর্ণ কোষগুলিতে আক্রমণ করা আইনী।
ভাগ করুন: ঘরটি 5 শক্তির ব্যয়ে সংলগ্ন স্থানে একটি নতুন ঘর তৈরি করে এবং তৈরি করে।
- একটি ঘর যে কোনও দিকে বিভক্ত করতে পারে (এন / এস / ই / ডাব্লু / এনই / এনডাব্লু / এসই / এসডাব্লু)
- নতুন কক্ষে আপনার মূল ঘরের স্পেসিফিকেশন অনুযায়ী পূর্ণ এইচপি রয়েছে।
- বিভাগের ব্যয় বিয়োগের পরে নতুন কক্ষে তার পিতামাতার মতো শক্তি রয়েছে energy (উদাহরণস্বরূপ, প্রাথমিক 8 এনার্জি পয়েন্ট সহ একটি প্যারেন্ট সেলটি কমিয়ে 3 শক্তি এনে দেওয়া হবে এবং 3 শক্তি দিয়ে একটি শিশু কোষ তৈরি করবে)।
- একটি নতুন ঘর আপনার পরবর্তী পালা না হওয়া পর্যন্ত কাজ করতে পারে না।
- একটি জীবন্ত কোষ দ্বারা অধিগ্রহণ করা কোনও জায়গাতে কোনও ঘর বিভাজন করতে পারে না, তবে এটি একটি মৃত কোষের দেহ দ্বারা দখল করা কোনও জায়গায় বিভক্ত হতে পারে (এটি মৃতদেহকে ধ্বংস করে)।
খাওয়া: একটি কোষ একটি সংলগ্ন সেল লাশ খায়, 4 শক্তি অর্জন করে।
- একটি ঘর যে কোনও দিকে খেতে পারে (এন / এস / ই / ডাব্লু / এনই / এনডাব্লু / এসই / এসডাব্লু)
বিশ্রাম: একটি ঘরের জন্য একটি ঘরের কিছুই করা হয় না, আবার 2 শক্তি ফিরে আসে।
বিস্ফোরণ: যখন কোনও কোষে 3 বা তার চেয়ে কম এইচপি এবং এইচপির চেয়ে বেশি শক্তি থাকে, তখন এটি বিস্ফোরিত হতে পারে এবং আটটি সংলগ্ন কোষের ক্ষতির কারণ হতে পারে।
- প্রতিটি সংলগ্ন কক্ষের ক্ষয়ক্ষতি
(exploding cell HP) + (explodng cell acidity)
- বিস্ফোরণে নিহত যে কোনও কোষের মতোই একটি বিস্ফোরিত সেল মারা যায় এবং মৃতদেহের পিছনে ছেড়ে যায়।
- প্রতিটি সংলগ্ন কক্ষের ক্ষয়ক্ষতি
প্রোটোকল
সেটআপ
আপনার প্রোগ্রাম BEGIN
স্টিডিনে সরবরাহিত স্ট্রিংয়ের সাথে চলবে । আপনার প্রোগ্রামটি অবশ্যই আপনার কোষের প্রজাতির জন্য এইচপি, শক্তি এবং অ্যাসিডিটির প্রতিনিধিত্ব করে 3 অ-নেতিবাচক পূর্ণসংখ্যার স্পেস-বিভাজিত তালিকাটিকে স্টাডাউট করতে হবে: যেমন 5 6 1
,। সংখ্যাগুলি অবশ্যই 12 এর সমষ্টি হতে হবে 0
, আপনি যদি চান তবে অম্লতা হতে পারে । (অন্যান্য বৈশিষ্ট্যগুলিও শূন্য হতে পারে তবে কার্যত এমনটি করা গেমটি হারায়!)
আপনি উত্তর-পশ্চিম বা দক্ষিণ-পূর্ব কোণে, একটি প্রান্ত দিয়ে উভয় প্রান্ত থেকে এক স্থান দূরে একটি কক্ষ দিয়ে শুরু করুন। প্রারম্ভিকণে পূর্ণ এইচপি এবং শক্তি রয়েছে।
প্রতিটি কোষ কাজ করে
প্রতিবার, আপনার প্রোগ্রামটি আপনার টিমের জীবিত প্রতিটি কক্ষের জন্য একবার অনুরোধ করা হবে (কেবলমাত্র সেলগুলি এই পালাটি তৈরি করেছে ব্যতীত) যাতে সেলটি কাজ করতে পারে। আপনার প্রোগ্রামটি স্টিডিনে ডেটা সরবরাহ করা হয়েছে যাতে এতে পেট্রি ডিশের রাজ্য এবং এই নির্দিষ্ট ঘর সম্পর্কিত তথ্য রয়েছে:
10 4
..........
..xx.c....
...c...o..
......o...
6 3 5 7
প্রথম দুটি সংখ্যা অঙ্গনের প্রস্থ এবং উচ্চতা নির্দেশ করে: এখানে একটি 10-বাই -4 আখড়া রয়েছে।
o
কোষ তোমার;x
কোষ তোমার শত্রুদের হয়। (এটি সর্বদা সত্য; প্রতিটি প্লেয়ার সর্বদা তাদের নিজস্ব কোষ হিসাবে দেখায়o
)).
শূণ্যস্থান খালি আছে।c
শূণ্যস্থান ভোজ্য সেল ওই মৃতদেহগুলিকে প্রতিনিধিত্ব করে।
খালি লাইনের পরে সংখ্যাগুলি এই সেল সম্পর্কে তথ্য উপস্থাপন করে:
- প্রথম দুটি সংখ্যা
x,y
স্থানাঙ্কগুলি হয়,0,0
উপরের বাম দিক থেকে সূচিকৃত (সুতরাং6 3
এখানে দক্ষিণ-সর্বাধিকo
কক্ষকে বোঝানো হয় )। - তৃতীয় নম্বরটি হ'ল কোষের এইচপি; চতুর্থ নম্বরটি হ'ল কোষের শক্তি।
আপনার প্রোগ্রামটি একটি ক্রিয়াকলাপ (স্টাডাউট) করা উচিত। নীচের উদাহরণগুলিতে, আমরা N
উদাহরণের দিকনির্দেশ হিসাবে ব্যবহার করব , তবে এটি সেই ক্রিয়া ( N
/ S
/ E
/ W
/ NE
/ NW
/ SE
/ SW
) এর জন্য কোনও দিকনির্দেশ আইনী হতে পারে । সমস্ত প্রোগ্রাম আউটপুট কেস-সংবেদনশীল, তবে উদাহরণগুলি বড় হাতের অক্ষর ব্যবহার করবে। অবৈধ যে কোনও আউটপুট ক্রিয়াকলাপ (এটির মধ্যে অবৈধ সিনট্যাক্স রয়েছে বা অবৈধ ক্রিয়াকলাপের চেষ্টা করার কারণে) উপেক্ষা করা হয় এবং এর ফলে সেল REST
ইনিংয়ের ফলাফল হয় (এবং এভাবে 2 শক্তি অর্জন)।
MOVE N
DIVIDE N
EAT N
ATTACK N 2
- সংখ্যাটি আক্রমণটির শক্তি উপস্থাপন করে (1 - 3)REST
EXPLODE
আপনার দলের পালা আপনার সমস্ত কক্ষকে এক এক করে অভিনয়ের সুযোগ দেওয়া নিয়ে গঠিত। প্রতিপক্ষের কোষগুলির যে কোনও একটির আগে আপনার সমস্ত কক্ষ কাজ করে। আপনার সমস্ত কক্ষ একবার কাজ করার পরে, আপনার পালা শেষ হবে এবং আপনার প্রতিপক্ষের পালা শুরু হবে। আপনার প্রতিপক্ষের সমস্ত কক্ষ একবার কাজ করলে আপনার পালা আবার শুরু হয়। আপনার পালা মধ্যে, প্রতিটি ঘর তার বয়সের উপর ভিত্তি করে কাজ করার জন্য অগ্রাধিকার দেওয়া হয়: আপনার দলের প্রাচীনতম কোষগুলি কম বয়সী কোষের আগে প্রথমে কাজ করে।
উদাহরণ
একটি প্রোগ্রাম কীভাবে আচরণ করে তা এখানে রয়েছে। স্টিডিনের ইনপুটটি এখানে নেতৃস্থানীয় >
তীরগুলির সাথে বোঝানো হয় (স্পষ্ট করে স্পেস দিয়ে প্রকৃত ইনপুট থেকে পৃথক করা হয়) এবং স্টডআউটে আউটপুটটিতে <
তীর থাকে।
> BEGIN
< 5 6 1
তারপরে, প্রোগ্রামটি আবার শুরু করা হয়েছে:
> 10 4
> ..........
> .o........
> ........x.
> ..........
>
> 1 1 5 6
< DIVIDE SE
আপনার প্রতিপক্ষের পালা (যিনি DIVIDE W
একক প্রারম্ভিক কক্ষটি নিয়ে সিদ্ধান্ত নিয়েছিলেন ) পরে, প্রতিটি প্রোগ্রামের জন্য একবার আপনার প্রোগ্রামটি দু'বার চাওয়া হয়েছে:
> 10 4
> ..........
> .o........
> ..o....xx.
> ..........
>
> 1 1 5 1
< MOVE E
আপনার পালা দ্বিতীয় অনুরোধ জন্য:
> 10 4
> ..........
> ..o.......
> ..o....xx.
> ..........
>
> 2 2 5 1
< MOVE SE
নোট করুন এই দ্বিতীয় কক্ষটি আপনার পালা শুরুর আগে অন্য কোষের চলাচলের ভিত্তিতে আপডেট হওয়া বোর্ডের অবস্থাটি দেখে sees এছাড়াও লক্ষ করুন যে এই কক্ষটি 1 শক্তি দিয়ে তৈরি করা হয়েছে, কারণ পিতামৃত কোষটিতে 6 টি শক্তি ছিল যখন এটি বিভাগে শেষ পালা করেছিল (সুতরাং মূল 6, বিয়োগের 5-শক্তি ব্যয়কে 1 শক্তি দিয়ে একটি শিশু কোষ তৈরি করেছিল)।
এখন আপনার পালা শেষ এবং আপনার প্রতিপক্ষের পালা শুরু। দুটি বিরোধী কক্ষকে অভিনয়ের সুযোগ দেওয়া হবে এবং তারপরে আপনার পরবর্তী পালা শুরু হবে।
জিত
আপনি উভয় দ্বারা জিততে পারেন:
- সমস্ত বিরোধী কোষ ধ্বংস করে দেওয়া, বা
- প্রতি খেলোয়াড়ের 150 টি মোড় শেষ হওয়ার পরে আপনার প্রতিপক্ষের চেয়ে বেশি কক্ষ থাকা
একে অপরের জমা দেওয়ার বিরুদ্ধে 100 গেমের জয়ের সংখ্যার ভিত্তিতে স্কোরিং করা হবে। সিমুলেশনগুলির অর্ধেকের মধ্যে, আপনার প্রোগ্রামটি প্রথমে যেতে দেওয়া হবে।
টাই গেমস (অর্থাত্ দেড়শ টার্নের পরে ঠিক একই সংখ্যক ঘরগুলি, বা কেবলমাত্র অবশিষ্ট কোষগুলি বিস্ফোরণে একসাথে মারা হয়) উভয় খেলোয়াড়ের জয়ের মোট হিসাবে গণনা করা হয় না।
অন্যান্য তথ্য
- আপনার প্রোগ্রামের রাজ্য বজায় রাখার চেষ্টা করা উচিত নয় (পেট্রি থালা ব্যবহারের বাইরে): এককোষী জীবের খুব ভাল স্মৃতি থাকে না এবং মুহুর্তে বিশ্ববাসীর প্রতিক্রিয়া হয়। বিশেষত কোনও ফাইলের (বা অন্যান্য ডেটা স্টোর) লিখিতভাবে, একটি রিমোট সার্ভারের সাথে যোগাযোগ করা, বা পরিবেশের ভেরিয়েবলগুলি সুস্পষ্টভাবে অনুমোদিত নয়।
- উবুন্টু 12.04.4 এ জমা দেওয়া / সংকলন করা হবে।
- ১০০ স্কোরিং গেমের স্পেসিফিকেশনগুলি এখনও নিশ্চিত হওয়া যায়নি তবে তারা সম্ভবত একাধিক রঙ্গিন মাপের সাথে জড়িত থাকবে (উদাহরণস্বরূপ, একটি ছোট অঙ্গনে 50 রান এবং বৃহত্তর অঙ্গনে 50 রান)। বৃহত্তর অঙ্গনের জন্য, উপযুক্ত যুদ্ধ সংঘটিত হতে পারে তা নিশ্চিত করার জন্য আমি সর্বোচ্চ টার্নের গণনা বাড়িয়ে তুলতে পারি।
সম্পদ
এখানে ড্রাইভার কোড যা সিমুলেশনটি চালায়, নোড.জেএস এর জন্য লিখিত, দ্বারা ডাকা হয়েছিল node petri.js 'first program' 'second program'
। উদাহরণস্বরূপ, জাভা-লিখিত কক্ষের বিরুদ্ধে পাইথন-লিখিত কক্ষটি আঁকানো যেমন দেখায় node petri.js 'python some_cell.py' 'java SomeCellClass'
।
অতিরিক্ত হিসাবে, আমি বুঝতে পারি যে স্টিডিনে একাধিক লাইনগুলি পড়া এবং পার্স করা একটি বিশাল ব্যথা হতে পারে, তাই আমি বিভিন্ন ভাষায় কয়েকটি সম্পূর্ণ নমুনা কোষ খসড়া করেছি যা আপনি নির্মান করতে, সম্পূর্ণরূপে ওভারহল করতে বা সম্পূর্ণ উপেক্ষা করতে মুক্ত are
- জাভা সেল
- পাইথন সেল
- জাভাস্ক্রিপ্ট সেল (নোড.জেএস সহ ব্যবহারের জন্য)
অবশ্যই আপনি আলাদা ভাষায় একটি সেল লিখতে মুক্ত; এগুলি কেবল তিনটি ভাষা যা আমি সময় সাশ্রয় সহায়তা হিসাবে বয়লারপ্লেট কোড লেখার সিদ্ধান্ত নিয়েছি।
ড্রাইভার চালাতে আপনার যদি কোনও সমস্যা হয় তবে এই চ্যালেঞ্জের জন্য আমি যে চ্যাট রুমটি তৈরি করেছি তাতে বিনা দ্বিধায় আমাকে চট করুন । চ্যাটের জন্য যদি আপনার যথেষ্ট খ্যাতি না থাকে তবে কেবল একটি মন্তব্য করুন।
'node c:/cell/cell_template.js'
যেমন নির্দিষ্ট করতে হবে ঠিক তেমন প্রতিটি যুক্তির জন্য একটি সম্পূর্ণ চালিতযোগ্য কমান্ড নির্দিষ্ট করতে হবে'java CellTemplate'
। আমি চ্যালেঞ্জ পাঠ্যে আরও পরিষ্কার করব। আপনার যদি সমস্যা হতে থাকে তবে আমরা (এবং প্রযুক্তিগত সমস্যাযুক্ত অন্য কেউ) আমার সবেমাত্র তৈরি একটি চ্যাটরুমে এই আলোচনা চালিয়ে যেতে পারি ।