একটি 3x3 গ্রিডে প্রতিবেশী সূচকগুলি ফিরিয়ে দিন


11

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

আপনার কাছে 9 টি মানের মূল্য রয়েছে বলে ভান করুন। এখন একটি 3x3 গ্রিডে অ্যারেটি কল্পনা করুন।

অ্যারের সূচী হিসাবে সেই সংখ্যায় থাকা আপনার প্রতিবেশীদের ফিরিয়ে দিতে হবে।

0 | 1 | 2

3 | 4 | 5

6 | 7 | 8

নিয়মাবলী:

  • এটি কোড গল্ফ, তাই সংক্ষিপ্ত উত্তর জেতে।
  • প্রটেন্ড অ্যারের সূচকটি 0 বা 1 এ শুরু হতে পারে (সমস্ত উদাহরণ যদিও 0 ব্যবহার করে)
  • স্রেফ মান ফিরিয়ে দেওয়া মানগুলি (যেমন if 3: return 046)
  • জমা দেওয়া কেবল একটি প্রক্রিয়া / ফাংশন / পদ্ধতি হতে পারে তবে একটি উদাহরণ চমৎকার হবে
  • প্রত্যাবর্তিত মান যে কোনও ক্রমে হতে পারে (যেমন যদি ইনপুট 0 হয় তবে এটি 13 বা 31 হতে পারে)
  • আপনি যদি চান তবে আউটপুটটি সংখ্যার একটি তালিকা হতে পারে, [0,4,6]পরিবর্তে এর পরিবর্তে046
  • উদাহরণ হিসাবে দেখা হিসাবে, ত্রিভুজ গণনা করা হয় না।

উদাহরণ:

ইনপুট:

0

আউটপুট:

13

ইনপুট:

3

আউটপুট:

046

ইনপুট:

4

আউটপুট:

1357


4
দেখে মনে হচ্ছে এই চ্যালেঞ্জটি স্যান্ডবক্সের কিছু সময় থেকে উপকৃত হতে পারে । আপনি নিজের চ্যালেঞ্জটি সেখানে পোস্ট করতে পারেন যাতে অন্যরা এটি পর্যালোচনা করতে পারে এবং এটিতে মূল পোস্ট করার আগে আপনাকে এটিকে সহায়তা করতে পারে। আপনার উদাহরণগুলি থেকে আমি অনুমান করছি যে আপনি কর্ণগুলি গণনা করছেন না। আপনি নিজেরাই এটিকে প্রশ্নটিতে যুক্ত করতে চাইতে পারেন। আপনি প্রতিবেশী অ্যারের সূচিগুলি আউটপুট দেওয়ার প্রয়োজনীয়তার কথাও উল্লেখ করেন। আমি মনে করি এটি 3x3 গ্রিডের জন্য কেবল হার্ডকোড করা যেতে পারে। প্রতিবেশীদের নিজেরাই আউটপুট দেওয়া কি ভাল?
26:57

7
যাতে আপনি কি জানেন, নাটের গুরু উপর সত্যিই কিছু আমরা এখানে কাজ নয়; হার্ডকোডিং আউটপুট হয় অনুমোদিত বা এটি হয় না। যেহেতু এটি হার্ডকোডিং হিসাবে সঠিকভাবে গণনা করা যায় তা নির্ধারণ করা বেশ শক্ত, তাই আমি ব্যক্তিগতভাবে কেবল এটির অনুমতি দেব বা অতিরিক্ত ইনপুট হিসাবে গ্রিডের আকার দেব।
ডেনিস

1
আউটপুট সংখ্যাগুলির তালিকা হতে পারে, [0,4,6]পরিবর্তে 046?
লাইকনি ২

@ লাইকোনি হ্যাঁ, আপনি কিছুক্ষণ আগেই উত্তর দিয়ে দিয়েছেন বলে কিছুটা দেরী হয়েছে।
hcorion 26'17

@ ডেনিস হ্যাঁ, এটি কীভাবে রাখবেন তা সম্পর্কে আমি নিশ্চিত ছিলাম না। উভয় সরবরাহ করেই সি এবং পাইথন উত্তরগুলি এটি কীভাবে করেছিল তা আমি পছন্দ করি তবে চূড়ান্ত হিসাবে নন-হার্ড কোডিং উত্তর থাকা। আমি হার্ড-কোডিংয়ের চেয়ে অ্যালগরিদমগুলিকে উত্সাহিত করতে চেয়েছিলাম, তবে আমি নিশ্চিত ছিলাম না এটি এমনকি সম্ভব (অত্যধিক দীর্ঘ উত্তর ছাড়াই), এবং আমার প্রশ্নের কোনও উত্তর পেতে চাইনি।
hcorion

উত্তর:


2

জেলি , 16 13 বাইট

9Ḷ,d3ạ/S€=1T’

এটি অনলাইন চেষ্টা করুন!

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

9Ḷ,d3ạ/S€=1T’  Main link. Argument: n (0, ..., 8)

9              Set the return value to 9.
 Ḷ             Unlength; yield [0, ..., 8].
  ,            Pair; yield [[0, ..., 8], n].
   d3          Divmod 3; yield [[[0, 0], ..., [2, 2]], [n:3, n%3]]].
     ạ/        Reduce by absolute difference, yielding
               [[|0 - n:3|, |0 - n%3|], ..., [[|2 - n:3|, |2 - n%3|]].
       S€      Sum each, yielding
               [|0 - n:3| + |0 - n%3|, ..., [|2 - n:3| + |2 - n%3|].
         =1    Compare the sums with 1.
           T   Truth; yield all 1-based indices of 1.
            ’  Decrement to yield all 0-based indices of 1.

বিধিগুলিতে বলা হয়েছে: "প্রেজেন্ট অ্যারের সূচকটি 0 বা 1 এ শুরু হতে পারে" " - আপনি শেষে হ্রাস পেতে পারেন।
স্টেইনবার্গ 26'17

@ সেটেনবার্গ আমি ধরে নিয়েছি আমাকে তখনও 1-ভিত্তিক ইনপুট নিতে হবে, এটি সাশ্রয় করতে যতগুলি বাইট ব্যয় করে।
ডেনিস

9

এমএটিএল , 17 16 বাইট

9:qWIe1Y6Z+i)BPf

অ্যারেটি 1-ভিত্তিক, যা থেকে শুরু 1করে সংখ্যাগুলি থাকে 9

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

2উদাহরণ হিসাবে ইনপুট বিবেচনা করুন ।

9:q  % Push [0 1 2 ... 8]
     % STACK: [0 1 2 ... 8]
W    % Rise to 2, element-wise
     % STACK: [1 2 4 ... 256]
Ie   % Reshape as 3-row matrix (column-major order)
     % STACK: [1   8  64;
               2  16 128;
               4  32 256]
1Y6  % Push [0 1 0; 1 0 1; 0 1 0]
     % STACK: [1   8  64;
               2  16 128;
               4  32 256],
              [0   1   0;
               1   0   1;
               0   1   0]
Z+   % Convolution, maintaining size
     % STACK: [10  81 136;
               21 170 336;
               34 276 160]
i    % Take input, n
     % STACK: [10  81 136;
               21 170 336;
               34 276 160],
               2
 )   % Get n-th entry (1-based; column-major order)
     % STACK: 21
B    % Convert to binary
     % STACK: [1 0 1 0 1]
P    % Flip
     % STACK: [1 0 1 0 1]
f    % Find: gives indices of nonzeros. Implicitly display
     % STACK: [1 3 5]

1
ওয়াত? আপনি কিভাবে এটি নিয়ে এসেছেন?
রবার্ট ফ্রেজার

1
@ রবার্টফ্রেজার প্রতিবেশী সন্ধান সম্পর্কে এই চ্যালেঞ্জগুলি আমাকে সর্বদা একটি সমঝোতার পদ্ধতির পরামর্শ দেয়। তবে সমঝোতা অন্তর্নিহিতভাবে প্রতিবেশীদের মূল্যবোধ যুক্ত করে, তাই শেষ পর্যন্ত আমি তাদের আলাদা করতে সক্ষম হয়েছি --- এটিই দ্বিগুণ এবং বাইনারি সম্প্রসারণের অংশ
লুই মেন্ডো ২

5

গণিত, 32 বাইট

GridGraph@{3,3}~AdjacencyList~#&

একটি অ্যারের পরিবর্তে একটি গ্রাফ ব্যবহার করে। GridGraph@{3,3}নীচে দেখানো একটি 3x3 গ্রিড-আকারের গ্রাফ তৈরি করে, যা গণিতটি ডিফল্টরূপে অনুভূমিকগুলির জন্য 1-9 নম্বর সহ সহায়কভাবে লেবেল করে। তারপরে ~AdjacencyList~#&আপনাকে একটি শীর্ষবিন্দুর প্রতিবেশীদের জানায়।

3x3 গ্রিড গ্রাফ


এই বিল্টিনগুলিকে ভাল লাগবে ...
নীল

4

গণিত, 40 বাইট

{24,135,26,157,2468,359,48,579,68}[[#]]&

1-ইন্ডেক্স। শুধু উত্তর সন্ধান করুন। ম্যাথমেটিকায় কেউ কি আরও ভাল করতে পারবেন?


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

2
0-ইনডেক্সিং এবং ব্যবহার করে আপনি একটি বাইট সংরক্ষণ করতে পারেন 31[420,51,...,75][[#]]&
মার্টিন ইন্ডার

1
GridGraph@{3,3}~AdjacencyList~#&1-ইনডেক্সিং সহ আপনি 32 বাইট ব্যবহার করতে পারেন ।
একটি গাছ নয়

@ ল্যানলক ৪ দুর্দান্ত! দয়া করে এটি একটি উত্তর দিন যাতে আমি এটি upvote করতে পারি!
গ্রেগ মার্টিন

4

অক্টাভা, 42 40 39 বাইট

@(n,x=~e(3),y=x(n)=1)find(bwdist(x)==1)

1-ভিত্তিক সূচক।

সমস্ত পরীক্ষার কেস যাচাই করুন।

ব্যাখ্যা:

x=~e(3);         % create a 3*3 matrix of zeros
x(n)=1;          % set the element with index n to 1
d=bwdist(x);     % compute the distance transform of the matrix
find(d == 1)     % find where the distance is 1.

উদাহরণ: n = 2

x =

   0   0   0
   1   0   0
   0   0   0

(অক্টাভে ডেটা কলাম অনুসারে সংরক্ষণ করা হয়))

d =

   1.00000   1.41421   2.23607
   0.00000   1.00000   2.00000
   1.00000   1.41421   2.23607

লজিকাল সূচক যেখানে দূরত্ব 1:

d == 1

 1   0   0
 0   1   0
 1   0   0

find(d ==1)

 1
 3
 5

3

পাইথন 2, 71 বাইট

lambda n:filter(abs,[(n-3)*(n>3),(n+3)*(n<7),~-n*(n%3!=1),-~n*(n%3>0)])

1-ইনডেক্সেড
অনলাইনে চেষ্টা করুন!


ফলাফলের একটি পূর্বনির্ধারিত তালিকা থেকে ফলাফল প্রাপ্তি সংক্ষিপ্ত (46 বাইট):

[13,204,15,406,1357,248,37,468,57].__getitem__

0-সূচিযুক্ত
এটি অনলাইনে চেষ্টা করুন!


2

হাস্কেল , 74 71 68 বাইট

f n=[x|x<-[n-3,n-1..n+3],0<x,x<10,gcd 3x<2||n-1/=x,gcd 3n<2||n+1/=x]

এটি অনলাইন চেষ্টা করুন! 1-ইনডেক্সেড গ্রিড ব্যবহার করে। উদাহরণ ব্যবহার: f 3আয় [2,6]

সম্পাদনা করুন: janrjan জোহানসেনকে 3 6 বাইট সংরক্ষিত !


জন্য 77 75 বাইট, নিম্নলিখিত ফাংশন #একটি অবাধ গ্রিড আকার জন্য কাজ করে m:

n#m=[x|x<-[n-m,n-1,n+1,n+m],0<x,x<=m*m,gcd x m<m||n-1/=x,gcd n m<m||n+1/=x]

এটি অনলাইন চেষ্টা করুন! প্রত্যেকের nজন্য তালিকায় [n-m,n-1,n+1,n+m]চারটি প্রতিবেশী রয়েছে। xএই তালিকার প্রতিটি প্রবেশের জন্য আমরা পরীক্ষা করে নিই -1<xএবং x<m*mনিশ্চিত করে নিই xযে গ্রিডের উপরে বা নীচে নেই, mod n 3>0||n-1/=xবাম গ্রিড সীমানাটি প্রয়োগ করতে এবং mod(n+1)m>0||n+1/=xবাম সীমান্তের জন্য।


1
আপনি ব্যবহার করতে পারেন [n-3,n-1..n+3]এবং gcd 3n>1
janrjan জোহানসেন

উফফ, কোন gcdঅংশটি মনে করবেন না । এটা হওয়া উচিত ছিল <3, এবং তারপরে বিরতি n==0। আপনি পারে যে কৌতুক ব্যবহার করতে যদি আপনি সবকিছু পরিবর্তন পাবে 1-indexed।
janrjan জোহানসেন

ওহ, এবং n/=2&&n/=5প্রতিস্থাপন করা যেতে পারে mod x 3>0। (বা gcdপুনর্নির্মাণের সাথে সংস্করণ, যা এখন দু'বার ব্যবহার করা যেতে পারে
Ø

2

রুবি , 51 48 45 বাইট

->a{[a+3,a-3][a/6..a/3]+[a+1,a-1][a%-3..a%3]}

এটি অনলাইন চেষ্টা করুন!

উল্লম্ব এবং অনুভূমিক প্রতিবেশীদের সাথে ২ টি অ্যারে তৈরি করুন, তারপরে তাদের মধ্যে একটি বা আরও বেশি নির্বাচন করুন।

রুবি হার্ডকোড, 44 বাইট

->a{%w(13 024 15 046 1357 248 37 468 57)[a]}

... এর মূল্য নেই।


2

সি, 100 92 91 83 78 74 বাইট

p(n){putchar(n+48);}f(n){n>3&&p(n-3);n<7&&p(n+3);n%3&&p(n+1);--n%3&&p(n);}

1-ইন্ডেক্স। 4 নাইট সংরক্ষণ করার জন্য @ নীলকে ধন্যবাদ

এটি অনলাইন চেষ্টা করুন!

হার্ডকোড সংস্করণ, 56 বাইট

l[]={13,204,15,406,1357,248,37,468,57};
#define L(n)l[n]

0-ইন্ডেক্স


2
প্রথম সংস্করণে, আপনি n>3&&p(n-3)4 বাইট সংরক্ষণ করতে ইত্যাদি লিখতে পারবেন না ? দ্বিতীয় সংস্করণে, আপনি কি l[]=বাইট সংরক্ষণ করতে লিখতে পারবেন না ?
নীল

@ নীল হ্যাঁ আমি পারি ধন্যবাদ!
স্টেডিবক্স

আপনি কি নিশ্চিত যে আপনার কোডটি বর্তমানে সঠিক? যখন আমি পরীক্ষার কেসগুলি চেষ্টা করি তখন এটি তিনটিই ব্যর্থ হয়ে যায় ..: এস এটি এখানে চেষ্টা করুন। আপনি সম্ভবত একটি কাজ টিআইও-লিঙ্ক সরবরাহ করতে পারেন, সম্ভবত আমি কিছু ভুল করছি?
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন টিআইও লিঙ্ক যুক্ত হয়েছে এবং মনে হয়েছে যে আমি শেষ সম্পাদনায় আসল কোডটি সম্পাদনা করতে ভুলে গেছি ... ওহ, ভাল well আপনার লিঙ্কটিও সঠিকভাবে কাজ করছে, তবে লক্ষ্য করুন যে আমার উত্তরটি 1-ইনডেক্সেড রয়েছে যেখানে উদাহরণ পরীক্ষার কেসগুলি 0-সূচিবদ্ধ।
স্টেডিবক্স

@ স্টেডিবক্স আহ, আপনি সত্যিই ঠিক বলেছেন। আমি 1-সূচকযুক্ত অংশটি মিস করেছি, আমার খারাপ। টিআইও যোগ করার জন্য ধন্যবাদ। +1
কেভিন ক্রুজসসেন

1

পাইথন 2, 51 বাইট

lambda x:[x+3,x-3][x/6:x/3+1]+[x+1,x-1][x%-3:x%3+1]

আমার রুবির উত্তরের পূর্ববর্তী সংস্করণের উপর ভিত্তি করে , আমি এটি আকর্ষণীয় বলে মনে করেছি কারণ এটি বেশিরভাগই একই কোড ছিল, একটি ভিন্ন কৌশল ব্যবহার করে এবং একই ফলাফল তৈরি করে। এটিকে ডান পেয়ে আমাকে আরও কিছুটা উত্তর দিতে গল্ফ করতে সহায়তা করেছে।

মূলত, রুবি এর সংক্ষিপ্ত কারণ অ্যারে স্লাইস সূচকটি অন্তর্ভুক্ত, অজগরটির +1ক্ষতিপূরণ প্রয়োজন needs

ব্যাখ্যা

২ টি অ্যারে (উল্লম্ব এবং অনুভূমিক প্রতিবেশী) পান, তারপরে কয়েকটি গণনার উপর ভিত্তি করে একটি বা উভয়ই নির্বাচন করুন।


1

জাভা 7, 63 বাইট (হার্ডকোডযুক্ত)

int c(int i){return new int[]{31,420,51,640,7531,842,73,864,75}[i];}

0-ইনডেক্সড
(বিপরীত অর্ডার আউটপুট কারণ 024এবং 046বৈধ পূর্ণসংখ্যা নয়))
এখনও একটি হার্ড-কোডড সংস্করণে কাজ করা হচ্ছে, তবে আমি আপনাকে নিশ্চিত করতে পারি যে এটি কম হবে না ..

এখানে চেষ্টা করুন।


82 বাইট

String c(int n){return""+(n>3?n-3:"")+(n<7?n+3:"")+(n%3>0?n+1:"")+(--n%3>0?n:"");}

1-ইনডেক্সড @ স্টেডিবক্স 'সি উত্তরের
উপর ভিত্তি করে

এখানে চেষ্টা করুন।



0

ব্যাচ, 116 বাইট

@set c=cmd/cset/a%1
@set/ar=%1%%3
@if %1 gtr 2 %c%-3
@if %r% gtr 0 %c%-1
@if %r% lss 2 %c%+1
@if %1 lss 6 %c%+3

0-ইন্ডেক্স।

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