মুর Iteration


9

তথ্য

প্রতিটি 1 থেকে 9 নম্বরগুলি মুরের নিকটবর্তী অঞ্চলে একটি ঘরের প্রতিনিধিত্ব করে , যেখানে 5 টি কেন্দ্রীয় ঘর হয়। তাই:

123
456
789

1={-1,-1} 2={-1, 0} 3={-1, 1}
4={ 0,-1} 5={ 0, 0} 6={ 0, 1} 
7={ 1,-1} 8={ 1, 0} 9={ 1, 1}

চ্যালেঞ্জ

আপনি STDIN, ARGV বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিতে পারেন এবং হয় ফলাফলটি ফেরত দিতে পারেন বা এটি STDOUT এ মুদ্রণ করতে পারেন। ইনপুটটি একটি এন এক্স এন গ্রিড (টরাস টপোলজি, যার অর্থ যদি x বা y <1 হয় তবে x বা y = N, এবং যদি x বা y> N হয় তবে x বা y = 1), এবং আপনার প্রোগ্রামটিকে অবশ্যই এর একটি ইন্টারঅ্যাকশন আউটপুট করতে হবে প্রতিটি কক্ষকে তার মুরের প্রতিবেশী কক্ষে মান দিয়ে প্রতিস্থাপন করে গ্রিড করুন।

উদাহরণ ইনপুট গ্রিড (2 x 2):

13
79

আউটপুট:

97
31

ব্যাখ্যা:

1,1 অবস্থান থেকে শুরু করে আমাদের মান 1 রয়েছে, যেহেতু মান 1 = {- 1, -1} আমাদের 1 + (- 1), 1 + (- 1) = 0,0 পেতে হবে। এবং এটি টরাস 0,0 এর কারণে আমরা এন এর চারপাশে গুটিয়ে রাখি So সুতরাং আমরা সেল মানটি ২,২ (৯) এ অবস্থিত সেল মান সহ 1,1 (1) পজিশনে পুনরুদ্ধার করি।

পরবর্তী কক্ষ 1,2 এর জন্য আমাদের মান 3 (= -1, 1) তাই 1 + (- 1), 2 + (1) = 0,3 রয়েছে। প্রায় 2,1 এর কাছে মোড়ানো যা মান 7।

2,1 এ পরবর্তী কক্ষের মান 7 (= 1, -1) তাই 2+ (1), 1 + (- 1) = 3,0। প্রায় 1,2 এর কাছে মোড়ানো যা মান 3।

2,2 এ পরবর্তী কক্ষের মান 9 (= 1, 1) তাই 2+ (1), 2 + (1) = 3,3। প্রায় 1,1 এর কাছে মোড়ানো যা মান 1।

আরও উদাহরণ

ইনপুট গ্রিড (3 x 3):

123
456
789

প্রত্যাশিত আউটপুট:

987
654
321

ইনপুট গ্রিড (5 x 5):

77497
81982
32236
96336
67811

প্রত্যাশিত আউটপুট:

28728
37337
11923
73369
77433

চূড়ান্ত নোটস

আপনার যদি কোনও প্রশ্ন থাকে তবে মন্তব্য করতে দ্বিধা করবেন না। এটি একটি কোড গল্ফ চ্যালেঞ্জ, সংক্ষিপ্ততম কোড জয়!


আপনি কীভাবে কোনও উপাদানটির অবস্থান নির্ধারণ করেন? আমি বুঝতে পারি না কীভাবে সেলগুলির ইনপুট সেটটি ইনডেক্স করা হয়।
রেইনবোল্ট 21

@ রেনবোল্ট ইনপুটটি সারিগুলির পরে কলামগুলি অনুসারে সূচিত করা হয়। সুতরাং শেষ উদাহরণে (ইনপুট) সেল মানটি 2,3 এ 9. সারি 2 = 81982, এবং এর তৃতীয় কলামটি 9
AndoDaan


4
"মুর উদাহরণ" পড়লেও সাহায্য করতে পারেনি।
tomsmeding

উত্তর:


9

এপিএল (33)

এপিএল এর জন্য তৈরি করা হয়েছিল । এটি এমন একটি ফাংশন যা ইনপুট গ্রিডটিকে এন-বাই-এন ম্যাট্রিক্স হিসাবে গ্রহণ করে এবং আউটপুট গ্রিডকে এন-বাই-এন ম্যাট্রিক্স হিসাবে ফিরিয়ে দেয়।

{(⍳⍴⍵)⌷¨(,∆∘.⊖(∆←2-⌽⍳3)∘.⌽⊂⍵)[⍵]}

টেস্ট:

      ⍝ define input matrices
      ∆1 ← ↑(1 3)(7 9)
      ∆2 ← ↑(1 2 3)(4 5 6)(7 8 9)
      ∆3 ← ↑(7 7 4 9 7)(8 1 9 8 2)(3 2 2 3 6)(9 6 3 3 6)(6 7 8 1 1)
      ⍝ show input matrices
      ∆1 ∆2 ∆3
 1 3  1 2 3  7 7 4 9 7 
 7 9  4 5 6  8 1 9 8 2 
      7 8 9  3 2 2 3 6 
             9 6 3 3 6 
             6 7 8 1 1 
      ⍝ apply function to input matrices giving output matrices
      {(⍳⍴⍵)⌷¨(,∆∘.⊖(∆←2-⌽⍳3)∘.⌽⊂⍵)[⍵]} ¨ ∆1 ∆2 ∆3
 9 7  9 8 7  2 8 7 2 8 
 3 1  6 5 4  3 7 3 3 7 
      3 2 1  1 1 9 2 3 
             7 3 3 6 9 
             7 7 4 3 3 

5

পাইথন, 174

def t(b):b=b.split("\n");E=enumerate;C=[-1]*3+[0]*3+[1]*3+[-1,0,1]*3;print"\n".join("".join(b[(i+C[int(x)-1])%len(b)][(j+C[int(x)+8])%len(y)]for j,x in E(y))for i,y in E(b))

পাইথন এর জন্য তৈরি করা হয়নি ... এপিএল ছিল!


3

পাইথন, 105

তালিকার একটি তালিকা গ্রহণ করে এবং প্রদান করে:

def f(a):e=enumerate;n=len(a);return[[a[(y+(v-1)/3-1)%n][(x+(v-1)%3-1)%n]for x,v in e(u)]for y,u in e(a)]

একটি স্ট্রিং নেয় এবং ফেরত দেয় (148 টি অক্ষর):

def f(s):
 a=[map(int,l)for l in s.split()];n=len(a);e=enumerate
 for y,u in e(a):print''.join(`a[(y+(v-1)/3-1)%n][(x+(v-1)%3-1)%n]`for x,v in e(u))

2

ম্যাটল্যাব - 121 বাইট

function O=X(I),m=size(I,1);n=3*m;o=-1:1;c=o<2;M=c'*o+n*o'*c;D=repmat(I,3);C=D;C(:)=1:n*n;t=m+(1:m);O=C+M(D);O=D(O(t,t));

ম্যাটল্যাব এপিএলের তুলনায় এর জন্য কিছুটা কম তৈরি হয়েছিল, তবে পাইথনের চেয়ে কিছুটা বেশি তৈরি হয়েছিল। ;)

পরীক্ষা আউটপুট

X( [1 2 3; 4 5 6; 7 8 9] )

ans =

     9     8     7
     6     5     4
     3     2     1

X( [7 7 4 9 7; 8 1 9 8 2; 3 2 2 3 6; 9 6 3 3 6; 6 7 8 1 1] )

ans =

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