বিন্দু অনুসরণ করুন


22

চ্যালেঞ্জ

অক্ষরের একটি আয়তক্ষেত্রাকার গ্রিড দেওয়া হয়েছে

ABCDE
FGHIJ
KLMNO
PQRST

এবং বিন্দু এবং স্পেসগুলির একই মাত্রা সহ একটি গ্রিড

। । ।
  । । ।
  । ।  
  । । ।  

উপরের বাম কোণে শুরু করে গ্রিডের মাধ্যমে বিন্দু অনুসরণ করে স্ট্রিংটি আউটপুট করুন। এই উদাহরণ ফল দেয়ABGLQRSNIJE

নোট

  • আপনি ইনপুট গ্রিডগুলি একাধিক স্ট্রিংয়ের পরিবর্তে 2D-অ্যারে বা আপনার ভাষার নিকটতম বিকল্প হিসাবে নিতে পারেন।
  • আপনি স্পেসের পরিবর্তে আপনার ভাষার NULL মান ব্যবহার করতে পারেন। তবে আপনাকে পথটি চিহ্নিত করতে বিন্দুগুলি ব্যবহার করতে হবে।
  • ফাঁকা স্থান সহ একই লাইনে আপনার বিন্দুগুলি আলাদা করতে হবে না to আমি কেবল তাদের পাঠযোগ্যতার জন্য যুক্ত করেছি।
  • ক্ষুদ্রতম সম্ভাব্য গ্রিডটির আকার 1x1 রয়েছে।
  • শুরু এবং শেষ বিন্দুর একমাত্র প্রতিবেশী থাকবে। তাদের মধ্যে বিন্দু সর্বদা সঠিক দুটি উল্লম্ব বা অনুভূমিক প্রতিবেশী থাকবে। এটি গ্যারান্টি দেয় যে পথটি নির্বিঘ্নে।
  • পথটি তির্যক হবে না।
  • গ্রিডের অক্ষরগুলি আপনার [a-z]জন্য সবচেয়ে সুবিধাজনক যাই হোক না কেন পরিসরের সমস্ত উচ্চতর বা ছোট হাতের অক্ষর হবে ।
  • পথটি সর্বদা উপরের বাম কোণে শুরু হবে।

বিধি

পরীক্ষার মামলা

গ্রিড # 1

ABCABCW
DEFGHUQ
XLUSDQZ
ASUKWXI
WUKOAIM
AIAIOUP
। ।          
  । । ।      
      ।      
। । । ।      
।            
।            
=> এবিএফজিএসকুশওয়া
। । । । । । ।
            ।
। । । ।
। । । ।
। ।
। । । । । । ।
=> এবিসিএবিসিডাব্লিউকিউজিমিম্পুওইআইএআইএআইএক্সএলএউউকে

গ্রিড 2

প্রথম এবং দ্বিতীয় উদাহরণগুলির দ্বিতীয় লাইনে ট্রিপল স্পেস নোট করুন।

এবি
সিডি
।  
   
=> এ
। ।
   
=> এবি
।  
। ।
=> এসিডি

গ্রিড # 3

একজন
।
=> এ

শুভ কোডিং!


আপনি কি নিশ্চিত যে গ্রিড # 1 এর জন্য দ্বিতীয় পরীক্ষার কেসটি সঠিক? আমি মনে করি আউটপুট হওয়া উচিত ABCABCUQXIUOIAIAWAXLUUK
ভোল্টাহ

@ ওলতাহ ইঙ্গিতটির জন্য ধন্যবাদ, এটি সংশোধন করেছেন। গ্রিডে বিন্দুগুলির একটি কলামে বাম দিকে ছিল।
ডেনকার

আমাদের এখানে কি অন্য প্রতিটি চরিত্রের সাথে একটি স্থান যেমন স্থান হিসাবে গ্রহণ করা দরকার, বা এটি কেবল অক্ষর এবং নিউলাইন (এবং ডট ম্যাট্রিক্সে কোনও অতিরিক্ত স্থান নেই) হতে পারে?
এমএস 210

@ এমএস 210 যেমনটি চ্যালেঞ্জে বলা হয়েছে, আপনি ফাঁকা জায়গাগুলির পরিবর্তে কিছু ধরণের NULL মান ব্যবহার করতে পারেন, অবশ্যই আপনি ইনপুটটিকে 2D অ্যারে হিসাবে গ্রহণ করবেন।
ডেনকার

আমি বলতে চাইছি, কিছুই নয়, এমনকি একটি নাল বাইটও নয়।
এমএস 210

উত্তর:


4

এপিএল, 63 বাইট

{⍺[(⊂1 1){×≢⍵:⍺,(V/⍵)∇⍵/⍨~V←(+=⌊/)+/¨2*⍨⍺-⍵⋄⍺}1↓(,⍵='.')/,⍳⍴⍵]}

এটি এমন একটি ফাংশন যা দুটি চরিত্রের ম্যাট্রিকেস গ্রহণ করে (সেগুলি অবশ্যই ম্যাট্রিক হবে), বাম আর্গুমেন্ট হিসাবে অক্ষর গ্রিড এবং ডট গ্রিডকে এটির ডান আর্গুমেন্ট হিসাবে। ডটসের ম্যাট্রিক্স অক্ষরের ম্যাট্রিক্সের চেয়ে ছোট হতে পারে।

ব্যাখ্যা:

  • (,⍵='.')/,⍳⍴⍵: সারি-কলামের ক্রমে বিন্দুর অবস্থানগুলি পান
  • 1↓: প্রথমটি বাদ দিন (এটি এটি হিসাবে পরিচিত 1 1)
  • (⊂1 1){... }: থেকে শুরু1 1 , নিম্নলিখিত ফাংশনটি চালান, যা পথ অনুসরণ করে (এর বাম যুক্তিটি তার বর্তমান অবস্থান, এটির ডান আর্গুমেন্টটি অপ্রচলিত অবস্থান)। এটি প্রতিবার নিকটবর্তী অপরিশোধিত বিন্দু নির্বাচন করে কাজ করে। (যদি প্রশ্ন ধারনা থেকে অনুমান হয় তবে এটি সঠিক is
    • ×≢⍵:: যদি এখনও অপরিকল্পিত অবস্থানগুলি থাকে:
      • +/¨2*⍨⍺-⍵: প্রতিটি অবস্থান এবং বর্তমান অবস্থানের মধ্যে ম্যানহাটনের দূরত্ব সন্ধান করুন
      • V←(+=⌊/): প্রতিটি অবস্থানের জন্য, দেখুন এর দূরত্বটি সবচেয়ে ক্ষুদ্রতম দূরত্বের সমান কিনা এবং এটিকে সংরক্ষণ করে V
      • ⍵/⍨~: সমস্ত অবস্থান নির্বাচন করুন যার জন্য এটি নয়, এইগুলি পরের দর্শনীয় ক্ষেত্রগুলি
      • (V/⍵): যে অবস্থানের ক্ষেত্রে এটি রয়েছে তা সন্ধান করুন, এটি পরবর্তী ক্ষেত্র হবে
      • : এই নতুন যুক্তি দিয়ে আবার ফাংশন চালান
      • ⍺,: ফলাফলটি বর্তমান অবস্থান এবং তারপরে তালিকার বাকী অংশগুলির জন্য এটি করার ফলাফল
    • ⋄⍺: অন্যথায়, কেবলমাত্র বর্তমান অবস্থানটি ফিরে আসুন এবং বন্ধ করুন (এটি শেষ এক)
  • ⍺[... ]: প্রতিটি পদের জন্য, অক্ষর গ্রিডে সংশ্লিষ্ট উপাদানটি নির্বাচন করুন।

পরীক্ষার কেস:

      f←{⍺[(⊂1 1){×≢⍵:⍺,(V/⍵)∇⍵/⍨~V←(+=⌊/)+/¨2*⍨⍺-⍵⋄⍺}1↓(,⍵='.')/,⍳⍴⍵]}
      ⍝ example
      g0  ← 4 5⍴'ABCDEFGHIJKLMNOPQRST'
      d0  ← 4 5⍴'..  . . .. . .  ... '
      ⍝ test case 1
      g1  ← 6 7⍴'ABCACBWDEFGHUQXLUSDQZASUKWXIWUKOAIMAIAIOUP'
      d1a ← 6 7⍴'..      ...      .   ....   .      .      '
      d1b ← 6 7⍴'.......      ....   .. ..  ..     ........'
      ⍝ test case 2
      g2  ← 2 2⍴'ABCD'
      d2a ← 1 1⍴'.'
      d2b ← 1 2⍴'..'
      d2c ← 2 2⍴'. ..'
      ⍝ test case 3
      g3  ← 1 1⍴'A'
      d3  ← 1 1⍴'.'

      g0 f d0
ABGLQRSNIJE
      (⊂g1) f¨ d1a d1b
┌────────────┬─────────────────────────┐
│ABEFGSKUSAWA│ABCACBWQZIMPUOIAIAWAXLUUK│
└────────────┴─────────────────────────┘
      (⊂g2) f¨ d2a d2b d2c
┌─┬──┬───┐
│A│AB│ACD│
└─┴──┴───┘
      g3 f d3
A

3

জাভাস্ক্রিপ্ট (ES6), 122 বাইট

c=>g=>c[l=~c.search`
`,i=p=0]+[...g].map(_=>i|!p?c[i=(d=n=>g[i-n-p?i-n:c]>" "&&(p=i)-n)(1)||d(-1)||d(l)||d(-l)]:"").join``

ব্যাখ্যা

গ্রিডগুলি মাল্টলাইন স্ট্রিং হিসাবে নেয়।

শালীন প্রচেষ্টার মতো মনে হয় তবে গল্ফ করার সময় আমি খুব বেশি সময় পেলাম যাতে এটি সম্ভবত উন্নতি করা যায়।

var solution =

c=>g=>
  c[                            // add the starting letter to the output
    l=~c.search`
`,                              // l = line length
    i=p=0                       // i = current index, p = previous index
  ]+
  [...g].map(_=>                // loop
    i|!p?                       // if we have not finished yet
      c[i=                      // find the next index and return it's letter
        (d=n=>                  // d = function to check for a dot at offset n
          g[
            i-n-p?i-n           // if i - n != p, get the character at index i - n
            :c                  // else get index "c" (will return undefined, not a dot)
          ]>" "                 // if the character is a dot
          &&(p=i)-n             // set p to i and return i - n
        )
        (1)||d(-1)||d(l)||d(-l) // search for the next adjacent dot
      ]
    :""                         // if we have finished, return no letter
  )
  .join``                       // output all the returned letters
<textarea id="Characters" rows="6" cols="30">ABCABCW
DEFGHUQ
XLUSDQZ
ASUKWXI
WUKOAIM
AIAIOUP</textarea>
<textarea id="Grid" rows="6" cols="30">.......
      .
...   .
. ..  .
.     .
.......</textarea><br />
<button onclick="result.textContent=solution(Characters.value)(Grid.value)">Go</button>
<pre id="result"></pre>


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.