তীর ধাঁধা পালাতে


14

প্রশ্ন

আপনার কাছে 50 বাই 50 টি অক্ষরের অ্যারে রয়েছে। প্রতিটি ঘরে একটি তীর থাকে যা চার দিকের যে কোনও একটিতে নির্দেশ করে। কোনও সেল খালি নেই। একটি ঘরে প্রবেশ করার সময়, আপনাকে অবশ্যই এটির দ্বারা নির্দিষ্ট দিক থেকে বেরিয়ে আসতে হবে। তীরটি আপনি যে দিক থেকে এসেছিলেন সেদিকেও নির্দেশ করতে পারে, যার ফলস্বরূপ একটি মৃতপ্রাপ্তি ঘটে।

গোলকধাঁধার বাইরের সীমান্তের যে কোনও ঘর থেকে আপনি শুরু করতে পারেন এবং এমন একটি পথ খুঁজে পেতে পারেন যা আপনাকে গোলকধাঁধায় নিয়ে যায় এবং আপনাকে অন্য কোনও কক্ষে প্রস্থান করতে পারে। ইনপুট <,>, ^ এবং ভি সমন্বিত একটি অ্যারে হিসাবে দেওয়া হবে আউটপুটটি একক অঙ্ক (বুলিয়ান, পূর্ণসংখ্যা বা চরিত্র, যে কোনও কিছুই করবে) 0 হিসাবে (কাজটি অসম্ভব বলে ইঙ্গিত করে) বা 1 (আপনার কাছে নির্দেশ করে যে টাস্ক অর্জন)।

উদাহরণ (প্রকৃত অ্যারে এর চেয়ে বড় হবে)

^ v < >
> < v <
v > v ^

আউটপুট হবে

1
আপনি <ডানদিকে <থেকে প্রবেশ করতে পারেন, যা আপনাকে নীচে ভি থেকে "<ভি ভি" পথ দিয়ে প্রস্থান করবে

কাজটি হ'ল সংক্ষিপ্ততম কোডটি লিখতে হবে যা ধাঁধাটি ইনপুট হিসাবে গ্রহণ করবে এবং নিয়মগুলিতে উল্লিখিত হিসাবে এটিতে কোনও পাথ রয়েছে কিনা তা নির্ধারণ করুন এবং একক অঙ্ক 0 বা 1 আউটপুট করুন

প্রকৃত অঙ্কগুলির পরিবর্তে সত্য এবং মিথ্যা আউটপুট দেওয়ার অনুমতি দেওয়া হয়।


6
কিছু সত্যিকারের পরীক্ষার কেস নিয়ে কাজ করা ভাল লাগবে
লিয়াম

ইনপুটটি কি একটি মাত্রিক অ্যারে বা দ্বিমাত্রিক? এবং আপনি কেবল একটি <দ্বারা ডানদিকে প্রবেশ করতে পারেন বা আপনি ^ দিয়েও প্রবেশ করতে পারেন?
বোবল

সংক্ষিপ্ত কোডের জন্য যে কোনওটি প্রয়োজন, @ বববেল ইনপুটটিকে 1 বা 2 মাত্রিক অ্যারে হিসাবে দেওয়া যেতে পারে। এমনকি কোডটি সংক্ষিপ্ত করতে পারলে <> ^ v এর পরিবর্তে তীরগুলি 1 2 3 4 হিসাবে প্রবেশ করা যেতে পারে। এবং হ্যাঁ, আপনি via এর মাধ্যমেও প্রবেশ করতে পারেন।
ভুতগুলি_ইন_কোড

1
৫০ বাই ৫০, অ্যারেতে কোনও এলোমেলোভাবে সমাধান হওয়ার সম্ভাবনা নেই প্রায় 0। সমাধানের কমপক্ষে কয়েকটি নির্দিষ্ট পদক্ষেপ থাকতে হবে বা ব্যবহারকারী সমাধানের পথটি নির্দিষ্ট করেছেন এমনটি আপনার পক্ষে ভাল হয়।
ডেভিডসি

1
এটিকে "একটি তীরের পালা" বলা উচিত ছিল ... তবুও একটি সমাধান বিবেচনা করা হচ্ছে।
বেকার

উত্তর:


6

সিজেম, 89 81 বাইট

q~"><v^":A2/{f{\*}z}/sA[1W52-52]er:T,,{[52md]51f%0e=1=},:E{[2704{__T=+}*]\-E&},,g

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

কিভাবে এটা কাজ করে

q~        e# Read and evaluate all input. This pushes an array of strings.
"><v^":A  e# Push that string and save it in A.
2/        e# Split it into ["><" "v^"].
{         e# For each chunk:
  f{      e#   For each input string, push the string and the chunk; then:
    \*    e#     Join the chunk, using the string as separator.
  }       e#
  z       e#   Transpose rows and columns.
}/        e#
s         e# Flatten the resulting array of strings.
A         e# Push "><v^".
[1W52-52] e# Push [1 -1 52 -52].
er        e# Perform transliteration.
:T        e# Save the result in T.
,,        e# Push [0 ... 2703].
{         e# Filter; for each integer I in [0 ... 2703]:
  [52md]  e#   Push [I/52 I%52].
  51f%    e#   Take both integers modulo 51 to map 51 to 0.
  0e=     e#   Count the number of resulting zeroes.
  1=      e#   Check if the count is 1.
},        e# If it is, keep I.
:E        e# Save the filtered array in E.
{         e# For each integer I in E:
  [2704{  e#   Do 2704 times:
    __    e#     Push two copies of the integer on the stack.
    T=    e#     Select the corresponding element from T.
    +     e#     Add it to the first copy.
  }*]     e#   Collect all results in an array.
  \-      e#   Remove I from that array.
  E&      e#   Intersect with E.
},        e# If the intersection is non-empty, keep the integer.
,g        e# Push the sign of the length of the filtered array.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.