পয়েন্টগুলির একটি তালিকা দেওয়া, সংক্ষিপ্ততম পথটি খুঁজে নিন যা সমস্ত পয়েন্টগুলিতে যায় এবং শুরুতে ফিরে আসে।
ভ্রমণ সেলসম্যান প্রবলেম কম্পিউটার বিজ্ঞান ক্ষেত্রে সুপরিচিত, কারণ নিরূপণ / এটি আনুমানিক করার অনেক উপায় আছে। এটি পয়েন্টগুলির খুব বড় গ্রুপগুলির জন্য সমাধান করা হয়েছে, তবে কিছু বৃহত্তম এটি শেষ করতে অনেকগুলি সিপিইউ-বছর সময় নেয়।
আলু দিয়ে পোড়াবেন না।
হট আলু এমন একটি গেম যেখানে 2+ প্লেয়ার সংগীত বাজানোর সময় একটি বৃত্তের চারপাশে একটি "আলু" দেয়। অবজেক্টটি এটি পরবর্তী প্লেয়ারের কাছে দ্রুত পাঠানো হয় pass সংগীত বন্ধ হয়ে গেলে আপনি যদি আলু ধরে রাখেন তবে আপনি বাইরে চলে যাবেন।
বস্তুর গরম আলু সেলসম্যান হল:
100 টি অনন্য পয়েন্টের একটি সেট দেওয়া , সেই পয়েন্টগুলি আরও ভাল ক্রমে ফিরিয়ে দিন ( আরও নিচে সংজ্ঞায়িত সংক্ষিপ্ত মোট দূরত্ব )। এটি পরবর্তী খেলোয়াড়ের কাছে সমস্যাটি "পাস" করবে। তাদের এটির উন্নতি করতে হবে এবং এটি পরবর্তীটিতে পাস করতে হবে etc. ইত্যাদি a
এটিকে "ব্রুট-ফোর্স-মি-এ-পাথ" প্রতিযোগিতা থেকে বিরত রাখতে এই শর্তাদি রয়েছে:
আলু পাস করতে আপনি এক মিনিটের বেশি সময় নিতে পারবেন না । যদি আপনি এক মিনিট শেষ হওয়ার পরে একটি সংক্ষিপ্ত সমাধান খুঁজে না পেয়ে এবং পাস করেন না তবে আপনি বাইরে চলে যাবেন।
আপনি 25 টির বেশি পয়েন্টের অবস্থান পরিবর্তন করতে পারবেন না । যথার্থ হ'ল,
>= 75
পয়েন্টগুলি অবশ্যই আপনার একই স্থানে থাকতে হবে them এটা কোন ব্যাপার না , যা আপনি যেগুলি, পরিবর্তন করার সিদ্ধান্ত নেন মাত্র পরিমাণ আপনি পরিবর্তন।
যখন কেবলমাত্র একজন খেলোয়াড় বাকি থাকে, তিনি সেই খেলায় বিজয়ী হন এবং একটি পয়েন্ট পান। একটি ট্যুরে 5*n
খেলাগুলি সমন্বিত, যেখানে n
খেলোয়াড় সংখ্যা। প্রতিটি গেম, প্রারম্ভিক প্লেয়ার ঘোরানো হবে এবং অবশিষ্ট প্লেয়ার ক্রমটি বদলে যাবে । শেষে সবচেয়ে পয়েন্ট থাকা খেলোয়াড়টি ট্যুরের বিজয়ী। যদি ট্যুরনিটি প্রথম স্থানের সাথে টাই করে শেষ হয় তবে কেবল সেই প্রতিযোগীদের সাথেই একটি নতুন ট্যুরে খেলানো হবে। কোনও টাই না হওয়া পর্যন্ত এটি চলতে থাকবে।
প্রতিটি গেমের জন্য প্রারম্ভিক খেলোয়াড় কোনও নির্দিষ্ট ক্রমে সিউডোরডমোমলি সিলেক্টেড পয়েন্টগুলির একটি সেট পাবেন।
পয়েন্টগুলি x,y
কার্টেসিয়ান গ্রিডে সংখ্যক পূর্ণসংখ্যার স্থানাঙ্ক হিসাবে সংজ্ঞায়িত করা হয়। দূরত্ব ব্যবহার পরিমাপ করা হয় ম্যানহাটন দূরত্ব , |x1-x2| + |y1-y2|
। সমস্ত স্থানাঙ্ক [0..199]
পরিসীমা মধ্যে থাকা হবে ।
ইনপুট
ইনপুট একটি একক স্ট্রিং আর্গুমেন্ট দিয়ে দেওয়া হয়। এটিতে চলতি খেলোয়াড়ের সংখ্যা ( m
) এবং 100 পয়েন্ট উপস্থাপন করে 201 টি কমা-বিভাজিত পূর্ণসংখ্যার সমন্বয় করা হবে :
m,x0,y0,x1,y1,x2,y2,...,x99,y99
এই পয়েন্টগুলির ক্রম হল বর্তমান পথ। মোট দুরত্ব প্রতিটি পয়েন্ট থেকে পরের ( dist(0,1) + dist(1,2) + ... + dist(99,0)
) এ দূরত্ব যোগ করে প্রাপ্ত হয় । মোট দূরত্ব গণনা করার সময় ফিরে যেতে ভুলবেন না!
লক্ষ্য করুন m
হয় না খেলোয়াড়দের খেলা শুরু সংখ্যা, এটা সংখ্যা এখনও হয়।
আউটপুট
আউটপুট একইভাবে ইনপুট, বিয়োগের মতো দেওয়া হয় m
; কমা-বিভাজিত পূর্ণসংখ্যাযুক্ত একটি একক স্ট্রিং তাদের নতুন ক্রমের পয়েন্টগুলি উপস্থাপন করে।
x0,y0,x1,y1,x2,y2,...,x99,y99
নিয়ন্ত্রণ প্রোগ্রামটি কেবল এক মিনিটের জন্য আউটপুটটির জন্য অপেক্ষা করবে। আউটপুট প্রাপ্ত হলে এটি যাচাই করবে:
- আউটপুট সুগঠিত হয়
- আউটপুট কেবল এবং ইনপুট উপস্থিত সমস্ত 100 পয়েন্ট নিয়ে গঠিত
>=75
পয়েন্টগুলি তাদের মূল অবস্থানগুলিতে- পূর্বের পথের চেয়ে পাথের দৈর্ঘ্য কম
যদি এই চেকগুলির মধ্যে কোনওটি ব্যর্থ হয় (বা কোনও আউটপুট নেই) তবে আপনি বাইরে চলে গেছেন এবং গেমটি পরবর্তী খেলোয়াড়ের দিকে এগিয়ে যাবে।
নিয়ন্ত্রণ প্রোগ্রাম
আপনি এই লিঙ্কে নিয়ন্ত্রণ প্রোগ্রাম খুঁজে পেতে পারেন । নিয়ন্ত্রণ প্রোগ্রাম নিজেই নির্বিচারক, এবং এর ডামি বীজের সাথে পোস্ট করা হয় 1
। স্কোরিংয়ের সময় ব্যবহৃত বীজ আলাদা হবে, তাই টার্ন অর্ডার / পয়েন্ট তালিকাগুলি বিশ্লেষণ করার চেষ্টা করবেন না don't
মূল ক্লাসটি হ'ল Tourney
। এটি চালানো প্রতিযোগীদের যুক্তি হিসাবে প্রদত্ত একটি সম্পূর্ণ টুর্নামেন্ট করবে। এটি প্রতিটি গেমের বিজয়ী এবং শেষে একটি টেলিট আউট করে। দুটি স্যুপবটস সহ একটি নমুনা ট্যুরি দেখতে দেখতে:
Starting tournament with seed 1
(0) SwapBot wins a game! Current score: 1
(1) SwapBot wins a game! Current score: 1
(1) SwapBot wins a game! Current score: 2
(1) SwapBot wins a game! Current score: 3
(0) SwapBot wins a game! Current score: 2
(1) SwapBot wins a game! Current score: 4
(1) SwapBot wins a game! Current score: 5
(1) SwapBot wins a game! Current score: 6
(1) SwapBot wins a game! Current score: 7
(1) SwapBot wins a game! Current score: 8
Final Results:
Wins Contestant
2 (0) SwapBot
8 (1) SwapBot
আপনি যদি একবারে কেবল একটি গেম পরীক্ষা করতে চান তবে আপনি তার Game
পরিবর্তে ক্লাস চালাতে পারেন । এটি আর্গুমেন্ট হিসাবে দেওয়া ক্রমে খেলোয়াড়দের সাথে একটি গেম চালাবে। ডিফল্টরূপে এটি বর্তমান প্লেয়ার এবং পথের দৈর্ঘ্য দেখিয়ে একটি প্লে-বাই-প্লেও মুদ্রণ করবে।
এছাড়াও অন্তর্ভুক্ত কয়েকটি পরীক্ষা খেলোয়াড়দের আছেন: SwapBot
, BlockPermuter
, এবং TwoSwapBot
। প্রথম দুটি রান করাতে অন্তর্ভুক্ত হবে না, তাই পরীক্ষার সময় নির্দ্বিধায় তাদের ব্যবহার এবং আপত্তি জানাতে হবে। বিচার করার জন্য অন্তর্ভুক্ত করা TwoSwapBot
হবে , এবং সে কোনও ঝুঁকি নেই, তাই আপনার এ-গেমটি নিয়ে আসুন।
মিশ্রিত বস্তু
আপনি রাষ্ট্রের তথ্য সংরক্ষণ করতে পারবেন না এবং প্রতিটি পালা আপনার প্রোগ্রামের একটি পৃথক রান। প্রতিটি বার আপনি যে তথ্য পাবেন তা হ'ল পয়েন্টের সেট।
আপনি বাহ্যিক সংস্থান ব্যবহার করতে পারবেন না। এর মধ্যে রয়েছে নেটওয়ার্ক কল এবং ফাইল অ্যাক্সেস।
আপনি টিএসপি সমস্যা বা এর রূপগুলি সমাধান / সহায়তা করার জন্য ডিজাইন করা লাইব্রেরি ফাংশন ব্যবহার করতে পারবেন না।
আপনি কোনওভাবেই অন্য খেলোয়াড়দের কারসাজি বা হস্তক্ষেপ করতে পারবেন না।
আপনি নিয়ন্ত্রণ প্রোগ্রাম বা কোনওভাবে অন্তর্ভুক্ত শ্রেণি বা ফাইলগুলিতে কোনও উপায়ে হস্তক্ষেপ বা হস্তক্ষেপ করতে পারবেন না।
মাল্টি-থ্রেডিং অনুমোদিত।
ব্যবহারকারী প্রতি এক জমা। আপনি যদি একাধিক এন্ট্রি জমা দেন তবে আমি কেবল জমা দেওয়া প্রথমটি প্রবেশ করবো। আপনি যদি আপনার জমা পরিবর্তন করতে চান তবে মূলটি সম্পাদনা / মুছুন।
টুর্নামেন্টটি আইউ -3--3770০ সিপিইউ এবং ১GB জিবি র্যাম সহ কম্পিউটারে উবুন্টু ১৩.০৪ এ চলবে । এটি কোনও ভিএম-তে চালানো হবে না। আমি দূষিত হিসাবে যে কোনও কিছু বুঝতে পারি তা অবিলম্বে বর্তমান এবং ভবিষ্যতে প্রবেশ করা আপনার জমা দেওয়া কোনও অযোগ্যতার জন্য অযোগ্য হয়ে যাবে ।
সমস্ত এন্ট্রি বিনামূল্যে ( বিয়ার হিসাবে ) সফ্টওয়্যার দিয়ে কমান্ড লাইন থেকে চালানো আবশ্যক । আপনার এন্ট্রি সংকলন / চালাতে আমার যদি সমস্যা হয় তবে আমি মন্তব্যগুলিতে সহায়তা করার অনুরোধ করব। যদি আপনি কোনও প্রতিক্রিয়া না জানান বা আমি শেষ পর্যন্ত এটি চালাতে না পারি তবে এটি অযোগ্য ঘোষণা করা হবে।
ফলাফল (22 মে 2014)
নতুন ফলাফল আছে! UntangleBot প্রতিযোগিতাটি বেশ সাবলীলভাবে পরাজিত করেছে। টুস্বপবট সাতটি জয়কে পরিচালনা করে এবং এসএনএএনবটও জিততে পারে। এখানে একটি স্কোরবোর্ড এবং কাঁচা আউটপুটটির লিঙ্ক রয়েছে :
Wins Contestant
22 (2) ./UntangleBot
7 (0) TwoSwapBot
1 (5) SANNbot.R
0 (1) BozoBot
0 (3) Threader
0 (4) DivideAndConquer
যেমনটি এখন দাঁড়িয়ে আছে , আনটঙ্গলবট চেকমার্কটি জিতেছে। যদিও তাতে আপনাকে প্রবেশ করতে নিরুৎসাহিত করবেন না, যেহেতু আমি আরও প্রতিযোগী উপস্থিত হওয়ার সাথে সাথে টুর্নামেন্টটি চালাব এবং সেই অনুসারে গৃহীত উত্তরটি পরিবর্তন করব।