সার্কেল গোলকধাঁধার পরীক্ষক


12

আপনি সেই কাঠের খেলনাগুলিকে জানেন যেখানে সামান্য বল বিয়ারিং রয়েছে যেখানে গোলকধাঁধির চারদিকে ঘুরতে অবজেক্টটি রয়েছে? এই মত দয়াল। একটি গোলকধাঁধা এবং একাধিক চলন দেওয়া, বলটি কোথায় শেষ হবে তা নির্ধারণ করুন।

বোর্ডটি উল্লম্বভাবে অনুষ্ঠিত হয় এবং বোর্ডটি যখন ঘোরানো হয় তখন কেবল মাধ্যাকর্ষণ দ্বারা চালিত হয়। প্রতিটি "সরানো" একটি ঘূর্ণন (রেডিয়ানগুলিতে)।

গোলকধাঁটি হ'ল কেবল ঘন ঘন বৃত্তাকার দেয়াল, প্রতিটি দেওয়ালের সাথে বাইরের করিডোরটিতে ঠিক একইভাবে একটি খোলার রয়েছে, এটি অনুমান করুন (walls দেয়ালগুলি বৃত্তযুক্ত এবং বিন্দু নয়) ধরুন:

গোলকধাঁধা

আপনি দেখতে পাচ্ছেন, বলটি মাঝখানে শুরু হয় এবং বেরিয়ে যাওয়ার চেষ্টা করছে। বলটি যখন সঠিকভাবে অভিমুখী হয়ে উঠবে তত্ক্ষণাত্ তার মধ্যে পড়বে, যদিও এটি কোনও ঘূর্ণনের মধ্য দিয়েই হবে। একক আবর্তনের ফলে বল একাধিক খোলার মধ্য দিয়ে পড়তে পারে। উদাহরণস্বরূপ, >= n * 2 * piকোনও গোলকধাঁধা থেকে বাঁচার জন্য একটি ঘূর্ণন যথেষ্ট।

গেমের উদ্দেশ্যগুলির জন্য, 0.001উদ্বোধনের রেডিয়ানগুলির মধ্যে অবস্থিত একটি বলটিকে "ফিট" হিসাবে বিবেচনা করা হয় এবং এটি পরবর্তী করিডোরের মধ্যে নেমে আসবে।

ইনপুট:

ইনপুট দুটি অংশে রয়েছে:

  • গোলকধাঁধাটি একটি পূর্ণসংখ্যার দ্বারা প্রদত্ত nগোলকটিকে কতগুলি দেয়াল / খোলার উপস্থাপন করে তা উপস্থাপন করে। এর পরে nলাইনগুলি অনুসরণ করা হবে এবং প্রতিটিটিতে একটি করে সংখ্যা থাকবে এবং প্রতিনিধিত্ব করবে যে পরের করিডোরটি পাস হবে কোথায়।

  • চালগুলি একটি পূর্ণসংখ্যা হিসাবে দেওয়া হয় যা mপ্রতিনিধিত্ব করে যে কতগুলি চালানো হয়েছিল, তারপরে (আবার পৃথক রেখাগুলিতে) বোর্ডের রেডিয়েন্সে mঘড়ির কাঁটার ঘোরানো (নেতিবাচক হ'ল অ্যান্টলিকওয়াইজ)।

সমস্ত প্যাসেজ পজিশন হিসাবে দেওয়া হয়েছে 0 rad = up, ধনাত্মক রেডিয়ানগুলি ঘড়ির কাঁটা দিয়ে চলেছে।

উপরের নমুনা চিত্রের জন্য, ইনপুটটি দেখতে দেখতে এটির মতো হতে পারে:

7                        // 7 openings
0
0.785398163
3.14159265
1.74532925
4.71238898
4.01425728
0
3                        // 3 moves
-3.92699082
3.14159265
0.81245687

আউটপুট: বলটি শেষ হয় এমন করিডোর নম্বরটি আউটপুট দেয় Cor করিডোরগুলি শূন্য-সূচীযুক্ত হয়, কেন্দ্র থেকে শুরু করে, তাই আপনি শুরু করুন 0। আপনি এক উদ্বোধনী মধ্য দিয়ে পাস করেন, তাহলে আপনি দালান আছেন 1। আপনি যদি পুরো গোলকধাঁধা থেকে বাঁচেন, কোনও পূর্ণসংখ্যা আউটপুট করুন>= n

নমুনা ইনপুট জন্য, তিনটি চাল আছে। প্রথমটি দুটি বল খোলার মধ্য দিয়ে বল পড়বে । দ্বিতীয় খোলা ও তৃতীয় খুঁজে বের করে না পাও নেই এক । বলটি এখন করিডোরে রয়েছে 3, সুতরাং প্রত্যাশিত আউটপুটটি হ'ল:

3

আচরণটি অবৈধ ইনপুট জন্য অপরিজ্ঞাত। বৈধ ইনপুটটি সুগঠিত হয় n >= 1এবং এর সাথে m >= 0

স্কোরিং হ'ল স্ট্যান্ডার্ড কোড গল্ফ, সর্বনিম্ন সংখ্যা বাইট জিতেছে। স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ। ইনপুট অবশ্যই হার্ড-কোডড হওয়া উচিত নয়, তবে স্ট্যান্ডার্ড ইনপুট, আর্গুমেন্ট, কনসোল ইত্যাদি থেকে নেওয়া যেতে পারে আউটপুটটি কনসোল, ফাইল যা-ই হতে পারে, আউটপুটটিকে কোথাও দৃশ্যমান করে তোলে।


"অবৈধ ইনপুটটির জন্য আচরণটি অপরিজ্ঞাত।" << - এটি সমস্ত ধাঁধাতে রাখা প্রয়োজন!
TheDoctor

সেই অনুমানের ক্ষেত্রে আপনিও গণনা করতে পারবেন π যখনই পরিবর্তনশীল যথার্থতার প্রয়োজন হয়, সঠিকভাবে বল বাড়ানো বা না পড়ে তা বলা পর্যন্ত যথেষ্ট না হওয়া পর্যন্ত যথাযথতা বাড়ানো। ফিটের জন্য সহ্য করার ক্ষেত্রে আমার একটি সমস্যা রয়েছে (বা কমপক্ষে এটির বর্তমান শব্দটি) যদি ক) টানা ফিটগুলি একে অপরের সাথে 0.001 এর বেশি হয় তবে বলটি কেবলমাত্র দুটি স্তরে পড়ে যদি সহনশীলতা বি বিবেচনায় নেওয়া হয়) যখন বলটি কোনও গর্তের 0.001 এর মধ্যে থাকে, এটি গর্তে লাফ দেয় (যদি আপনি সত্যিকার অর্থে শব্দটির কিছু পড়তে চান)।
Wrzlprmft

@Wrzlprmft এই বলটি গর্তে লাফ দেয় না। প্রান্তিকের কথা ভাবুন মানে গর্তটি বলের চেয়ে কিছুটা প্রশস্ত। এটি এখনও একই অবস্থান থেকে নেমে আসে, কেবল এক স্তর আরও। যদি আপনি কল্পনা করেন যে থ্রেশহোল্ডটি ছিল 1, আপনি কেবল বড় ছিদ্র দিয়ে কাজ করছেন, বলগুলি যখন পড়ে তখন গর্তটির কেন্দ্রে লাফিয়ে না।
জিওবিটস

কেন এমন অসুবিধে ফর্ম্যাটে ইনপুট? আমি পুরোপুরি নিশ্চিত যে আমি পুরো প্রোগ্রামগুলি পড়ার দরকারের চেয়ে কম গল্ফ করেছি: /
তাল

উত্তর:


2

পার্ল, 211 191

পাঠযোগ্যতার জন্য নতুন লাইন এবং ইন্ডেন্টেশন সহ:

$p=atan2 0,-1;
@n=map~~<>,1..<>;
<>;
while(<>){
    $_=atan2(sin,cos)for@n;
    $y=abs($n[$-]+$_)<$p-.001
        ?$_
        :($_<=>0)*$p-$n[$-];
    $_+=$y for@n;
    $p-.001<abs$n[$-]&&++$-==@n&&last;
    $_-=$y;
    .001<abs&&redo
}
print$-

ইনপুটটিতে চালগুলির সংখ্যা বাতিল করা হয়, স্টিডিনের ইওফ চলনের সমাপ্তি নির্দেশ করে।


5

জাভাস্ক্রিপ্ট 200

function f(i){with(Math)for(m=i.split('\n'),o=m.slice(1,t=+m[0]+1),m=m.slice(t+1),c=PI,p=2*c,r=0,s=1e-3;m.length;c%=p)abs(c-o[r])<s?r++:abs(t=m[0])<s?m.shift(c+=t):(b=t<0?-s:s,c+=p-b,m[0]-=b);return r}

সম্পাদনা : এখানে একটি অ্যানিমেটেড উদাহরণ রয়েছে যা প্রমাণ করে যে এই সমাধানকারী কাজ করে: http://jsfiddle.net/F74AP/4/

অ্যানিমেটেড

ফাংশনটি ইনপুট স্ট্রিংকে পাসিং বলা উচিত।
এখানে ওপি দ্বারা প্রদত্ত উদাহরণটির কল দেওয়া হল:

f("7\n0\n0.785398163\n3.14159265\n1.74532925\n4.71238898\n4.01425728\n0\n3\n-3.92699082\n3.14159265\n0.81245687");

এটি 3যেমন ইচ্ছা তেমন ফেরত দেয় ।


2
চ্যালেঞ্জ থেকে, "... ইনপুট অবশ্যই হার্ড-কোডড হওয়া উচিত নয় ..." । আমার ভুল না হলে এর অর্থ আপনাকে এটি পড়তে হবে এবং আপনার একটি সম্পূর্ণ প্রোগ্রামও থাকতে হবে। এটি দেখতে কেবল কোনও ফাংশনের মতো।
রেইনবোল্ট

2
আমি বুঝতে পারি না, মানগুলি হার্ড-কোডড হয় না! "... ইনপুট অবশ্যই হার্ড-কোডড হওয়া উচিত নয়, তবে স্ট্যান্ডার্ড ইনপুট, আর্গুমেন্ট, কনসোল ইত্যাদি থেকে নেওয়া যেতে পারে "। বিষয়ে সম্পূর্ণ প্রোগ্রাম , আমি দেখতে পাই না যেখানে এটি উল্লিখিত হলে ও যাহাই হউক না কেন, আইএমও এটি একটি সম্পূর্ণ জাতীয় সমাধান।
মাইকেল এম।

আমি একটি সম্পূর্ণ প্রোগ্রাম নির্দিষ্ট করে নেই, তাই আমি কেবল কোনও ফাংশনে কোনও সমস্যা দেখছি না। যাইহোক, ইনপুট করা হয় নতুন লাইন দিয়ে আলাদা করা হচ্ছে হিসাবে নির্দিষ্ট না ইতিমধ্যে দেশীয় অ্যারে মধ্যে ব্যবস্থা। এটি সন্তুষ্ট করা সহজ হওয়া উচিত।
জিওবিটস

1
@ জিওবিটস, আমি পরে এটি সংশোধন করব, এই ফিডলটি
মাইকেল এম।

1
@ জিওবিটস, ঠিক আছে! সাধারণ লক্ষণ ত্রুটি ... স্থির ;-)
মাইকেল এম।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.