বন পথ Path


9

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

বনটিকে ( ) nদ্বারা অক্ষরের বর্গ হিসাবে বর্ণনা করা যায় , যা কেবল ছোট হাতের অক্ষর দ্বারা গঠিত । বন উদাহরণ:nn > 5a-z

anehcienwlndm
baneiryeivown
bnabncmxlriru
anhahirrnrauc
riwuafuvocvnc
riwnbaueibnxz
hyirorairener
ruwiiwuauawoe
qnnvcizdaiehr
iefyioeorauvi
quoeuroenraib
cuivoaisdfuae
efoiebnxmcsua

আপনি লক্ষ করেছেন যে এই বনে, aউপরের বাম কোণ থেকে নীচে ডান কোণে অক্ষরগুলির একটি তির্যক রেখা রয়েছে । এটি বনের মধ্য দিয়ে একটি "পথ" যা আপনি যদি এটি অনুসরণ করেন তবে আপনাকে কোথাও নিয়ে যাবে। আপনার কাজটি এমন একটি প্রোগ্রাম লেখা যা একক পথ খুঁজে পাবে। এই চ্যালেঞ্জের মধ্যে একটি "পথ" কে কী বোঝায় তা আমি এখন আরও স্পষ্টভাবে বর্ণনা করব।

এই চ্যালেঞ্জের একটি "পাথ", একটি ব্রেসেনহ্যাম অ্যালগরিদম দিয়ে তৈরি করা হতে পারে এমনটির সাথে পরিচিত একটি লাইন হিসাবে সংজ্ঞায়িত করা হয়েছে , তবে অতিরিক্ত প্রয়োজনীয়তার সাথে যা:

  • লাইনটি সর্বনিম্ন 6 টি অক্ষরের দীর্ঘ হওয়া আবশ্যক
  • লাইনের প্রতিটি কল্লাইনার (সম্পূর্ণ সংলগ্ন) বর্ণের গ্রুপের দৈর্ঘ্য একই দৈর্ঘ্য হতে হবে
  • এটি বনের এক প্রান্ত থেকে শুরু হয়ে বিপরীত প্রান্তে শেষ হবে ( সম্প্রসারণের জন্য আমার মন্তব্য এখানে দেখুন )

দ্বিতীয় প্রয়োজনীয়তা আরও পরিষ্কারভাবে ব্যাখ্যা করতে, নিম্নলিখিত লাইনটি বিবেচনা করুন:

aaa
   aaa
      aaa
         aaa
            aaa

এই লাইনটি অক্ষরগুলির কোলাইনারি "বিভাগগুলি" নিয়ে গঠিত, যার প্রতিটিই তিনটি অক্ষরের দীর্ঘ characters এটি একটি পথ হিসাবে যোগ্যতা অর্জন করে। এখন এই লাইনটি বিবেচনা করুন:

a
 aa
   a
    aa
      a
       aa

এই লাইনটি কোলাইনারি "বিভাগগুলি" নিয়ে গঠিত যা হুবহু অক্ষরের একই দৈর্ঘ্য নয় (এদের মধ্যে কিছুটি 1 অক্ষর দীর্ঘ এবং এর মধ্যে কয়েকটি 2)। সুতরাং, এই এক পথ হিসাবে যোগ্য নয়।

আপনার প্রোগ্রাম, বনের একটি মানচিত্র দেওয়া, পথে ব্যবহৃত অক্ষর সনাক্ত করুন। সুবিধাজনক যাই হোক না কেন ইনপুট হ'ল (উদাঃ কমান্ড লাইন আর্গুমেন্ট, এসটিডিএন prompt(), ইত্যাদি), এটি ভেরিয়েবলের আগে আরম্ভ করা যায় না। ইনপুটটির প্রথম অংশটি হল একক পূর্ণসংখ্যা nযা বনের আকারের প্রতিনিধিত্ব করে (বন সর্বদা একটি বর্গক্ষেত্র)। এর পরে একটি স্থান এবং তারপরে একক স্ট্রিং হিসাবে পুরো বন forest উদাহরণস্বরূপ, উদাহরণস্বরূপ বনটি একটি ইনপুট হিসাবে, এর মতো উপস্থাপিত হবে:

13  anehcienwlndmbaneiryeivownbnabncmxlriruanhahirrnraucriwuafuvocvncriwnbaueibnxzhyirorairenerruwiiwuauawoeqnnvcizdaiehriefyioeorauviquoeuroenraibcuivoaisdfuaeefoiebnxmcsua

এর জন্য আউটপুট হবে:

a

কারণ চিঠিটি ব্যবহার করেই পথটি তৈরি হয় a। বনের মধ্যে কেবল একটি পথ থাকবে। এটি কোড গল্ফ, তাই স্বল্প সংখ্যক অক্ষর জয় করে। আপনার যদি প্রশ্ন থাকে তবে মন্তব্যে জিজ্ঞাসা করুন।


একাধিক পথ থাকলে কী হবে?
এরিক ট্রেসারার

@ এরিকট্রেসলার যে কোনও বনাঞ্চলে কেবল একটি পথ থাকবে। আমি প্রতিফলিত করতে স্পেসিফিকেশন সম্পাদনা করব।
অ্যাবসনেথ

পাথ চিঠিটি অন্য কোথাও ব্যবহার করা যেতে পারে যেখানে এটি পথের সাথে সম্পর্কিত নয়?
মার্টিন এন্ডার

উদাহরণ বনের মধ্যে তাই সম্ভবত আছে। উদাহরণস্বরূপ বনভূমিতে এই লাইনটিতে প্রথম একটি আনহির্রনরুক পথের অংশ নয়
স্পেড

@ মার্টিনব্যাটনার হ্যাঁ তবে এগুলি কোনও অক্ষরে একই চিঠি থেকে তৈরি দুটি পথ হবে না।
অ্যাবসনেথ

উত্তর:


3

এপিএল (ডায়ালগ 14) (70)

⎕ML←3⋄Z/⍨1=≢¨Z←∪¨(↓⍉F),(↓F),{(⍳≢⍵)⌷¨↓⍵}¨(⊂F),⊂⌽F←⊃{⍵⍴⍨2/⍎⍺}/I⊂⍨' '≠I←⍞

ব্যাখ্যা:

  • ⎕ML←3: সেট MLকরা 3, অর্থটির এপিএল 2 অর্থ রয়েছে।
  • I←⍞: কীবোর্ড থেকে একটি লাইন পড়ুন এবং এটি সঞ্চয় করুন I
  • I⊂⍨' '≠I: Iস্পেসে বিভক্ত
  • {... }/: দুটি ফলিত স্ট্রিংয়ে এই ফাংশনটি প্রয়োগ করুন:
    • 2/⍎⍺: বাম যুক্তিটি মূল্যায়ন করুন এবং ম্যাট্রিক্সের আকার প্রদান করে এটি দুবার প্রতিলিপি করুন
    • ⍵⍴⍨: সেই আকারটি ব্যবহার করে সঠিক যুক্তি বিন্যাস করুন
  • F←⊃: এটি আনবক্স করুন এবং এটি সঞ্চয় করুন F
  • {(⍳≢⍵)⌷¨↓⍵}¨(⊂F),⊂⌽F: ত্রিভুজগুলি পান: উভয় ক্ষেত্রে প্রতিটি সারি থেকে Fএবং ⌽F(উল্লম্বভাবে মিরর করা F), X কলামে মানটি পান যেখানে X এর সারি সংখ্যা
  • (↓⍉F),(↓F),: এর সারি এবং কলাম পান F
  • Z←∪¨: প্রতিটি সারি, কলাম এবং তিরোন বর্ণের অনন্য মানগুলি সন্ধান করুন এবং সেগুলিতে সংরক্ষণ করুন Z

যেহেতু 'বন' আয়তক্ষেত্রাকার, কোনও বৈধ পথ থাকলে এর অর্থ এইগুলির মধ্যে একটিতে কেবলমাত্র একটি অক্ষর থাকবে, যা পথের চরিত্র, তাই:

  • Z/⍨1=≢¨Z: সেগুলি থেকে Zকেবলমাত্র একটি উপাদান রয়েছে sub

এটি সমস্ত বৈধ পাথের জন্য অক্ষরগুলি প্রদর্শন করবে, তবে যেহেতু কেবলমাত্র একটিই গুরুত্বপূর্ণ যে বিষয়টি বিবেচনা করে না।


4

লুয়া - 506 380 - বাইট

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

a=io.read"*l"n=a:match("%d+")+0 m=a:match"[a-z]+"o=""for i=1,n do for k=1,n^2,n do o=o..m:sub(i+k-1,i+k-1)end end q={m,o}for g=1,n^2 do for u=1,2 do l=q[u]:sub(g,g)for r=1,n do i=1 t=0 e=0 while i do s,e=q[u]:find(l:rep(r),e+1)if s then x=s-(e-s)-i-1 print(s,i,r,n,r)if x==n or x==n-2 or t==0 then t=t+1 i=s end else i=nil end end if t*r==n then print(l)os.exit()end end end end

এটি দিয়ে পরীক্ষা করা যেতে পারে:

lua divisorPath.lua "input"

যদি কোনও বন্য চ্যালেঞ্জার উপস্থিত হয়, আমি আমার কোডটি এর মূল্য হিসাবে গল্ফের দিকে তাকাব।

আপডেট : যারা আমাদের উপরে উঠবে তাদের সম্মানে গল্ফড। আমি যখন ছিলাম তখন আমাকে ডান থেকে বামে যাওয়ার স্বীকৃত পথে আমার কোডটি ঠিক করতে হয়েছিল। উফ।


3

ম্যাটল্যাব - 270 টি অক্ষর

নিম্নলিখিতটি এমন একটি ফাংশন সংজ্ঞায়িত করে xযা একটি ফরেস্টের স্ট্রিংটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং প্রদত্ত বিধিগুলির অধীন বনের মধ্য দিয়ে বৈধ "পথ" উপস্থাপন করে চরিত্রটি প্রদান করে।

function F=x(s),A=sscanf(s,'%d%s');n=A(1);A=reshape(A(2:end),n,n);for c=A(:)',B=A==c;for i=1:n,if~mod(n,i),C=[kron(eye(i),ones(n/i,1)),zeros(n,n-i)];for j=0:n-i,f=@(B)sum(sum(B&circshift(C,[0,j]))==n;D=fliplr(B);if f(B)|f(B')|f(D)|f(D'),F=char(c);end;end;end;end;end;end

নন-মিনিফাইড সংস্করণটি

function F = x(s)
    A = sscanf( s, '%d %s' );
    n = A(1);
    A = reshape( A(2:end), n,n );
    for c = A(:)'
        B = A==c;
        for i = 1:n
            if ~mod( n, i )
                C = [kron( eye(i), ones( n/i,1 ) ), zeros( n,n-i )];
                for j = 0:n-i
                    f = @(B) sum(sum( B & circshift( C, [0 j] ))) == n;
                    D = fliplr(B);
                    if f(B) | f(B') | f(D) | f(D')
                        F = char(c);
                    end
                end
            end
        end
    end
end

মূল ভিত্তিটি হ'ল প্রতিটি সম্ভাব্য বৈধ পাথের জন্য একটি বুলিয়ান মাস্ক তৈরি করা এবং ম্যাট্রিক্সের ইনডেক্স ফাংশন যে কোনও মাস্কটি coversেকে দেয় এমন কোনও চরিত্রকে ফিরিয়ে দেওয়া। এটি সম্পাদন করার জন্য, কেবল উল্লম্ব বা উপরে থেকে নীচে ব্যাকস্ল্যাশ-আকৃতির মুখোশ তৈরি করা হয় তবে বন ম্যাট্রিক্সকে চারটি প্রাচ্যের সাথে তুলনা করা হয়: পরিচয়, উল্টানো, ঘোরানো 90 °, উল্টানো 90 ° উল্টানো °

ফাংশন যে কোনও জন্য চলে n। কমান্ডলাইনে এটির একটি উদাহরণ হ'ল

x('13 anehcienwlndmbaneiryeivownbnabncmxlriruanhahirrnraucriwuafuvocvncriwnbaueibnxzhyirorairenerruwiiwuauawoeqnnvcizdaiehriefyioeorauviquoeuroenraibcuivoaisdfuaeefoiebnxmcsua')

ans =

    a

3

পাইথন - 384 325 275

এই অ্যালগরিদম মূলত ম্যাট্রিক্সের প্রথম এবং শেষ সারিটি অক্ষরের সাথে মিলে যায় এবং তারপরে প্রতিটি লাইন বিভাগের দৈর্ঘ্য গণনা করে

012345
------
aaVaaa|0
aaVaaa|1
aaaVaa|2
aaaVaa|3
aaaaVa|4
aaaaVa|5

উপরের উদাহরণে:
প্রথম সারির ভিটি সূচক 2 এ, সূচক 4 এর শেষ সারিতে ভি,
সুতরাং প্রতিটি লাইন বিভাগের দৈর্ঘ্য n = 6 সহ n / (4-2) +1 = 2 হবে ।

এটি লাইনটি বৈধ কিনা তা পরীক্ষা করে।

বাম থেকে ডানে কোনও পথ সন্ধান করার জন্য, এটি কলামগুলির সাথে সারিগুলি অদলবদল করে এবং আবার একই জিনিসটি করে।

সম্পাদনা করুন: বেশিরভাগ 270 এ পাওয়া যায় না (ধিক্কারজনকভাবে পাইথন এবং আপনার জঘন্য ইন্ডেন্টেশন !!)

n,m=raw_input().split()
n,r=int(n),range
t=r(n)
a=[m[i:i+n]for i in r(0,n*n,n)]
for v in a,["".join([a[i][j]for i in t])for j in t]:
 for i in t:
  for j in t:
   p=1-2*(j-i<0);d,c=p*(j-i)+1,v[0][i]
   if 6<=sum([v[z][i+(z/(n/d))*p*(n%d==0)]==c for z in t])==n:print c;exit()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.