প্রতিবেশীরা কার প্রতিকূল?


10

ভূমিকা

এই চ্যালেঞ্জের উদ্দেশ্যে, আমরা সংজ্ঞায়িত করতে হবে প্রতিবেশীদের একটি উপাদান এর E একটি বর্গাকার ম্যাট্রিক্সের মধ্যে A (যেমন যে E=Ai,j ) সমস্ত হিসেবে এন্ট্রি A যে অবিলম্বে সন্নিহিত তির্যকভাবে করা, অনুভূমিকভাবে বা উল্লম্বভাবে E (অর্থাত তারা "পারিপার্শ্বিক" E , মোড়ানো প্রায় ছাড়াই)।

পেডেন্টদের জন্য, আই এর প্রতিবেশীদের একটি আনুষ্ঠানিক সংজ্ঞা ,Ai,j জন্য একটিn×nম্যাটিক্সA(0-সূচক):

Ni,j={Aa,b(a,b)Ei,j([0,n)Z)2}
যেখানে
Ei,j={i1,i,i+1}×{j1,j,j+1} \ {i,j}

ধরা যাক সূচক i তে উপাদানটি ,i,jgcd(Ai,j,n)=1এনএনআমি,

কার্য

পর্যাপ্ত গল্প: ধনাত্মক পূর্ণসংখ্যার একটি বর্গক্ষেত্র মেট্রিক্স দেওয়া, নিম্নলিখিতগুলির মধ্যে একটি আউটপুট:এম

  • উপাদানের একটি ফ্ল্যাট তালিকা (deduplicated বা না হোক) সমস্ত এন্ট্রি যে কিছু সূচকের ব্যাপৃত ইঙ্গিত আমি, মধ্যে এম প্রতিবেশীদের যেমন যে এনআমি, প্রতিকূল হয়।
  • প্রতিবেশীরা বৈরী এবং অন্যথায় এমন অবস্থানগুলিতে এস সহ একটি বুলিয়ান ম্যাট্রিক্স (আপনি এবং স্থানে অন্য কোনও সামঞ্জস্যপূর্ণ মান চয়ন করতে পারেন )।0 0 11001
  • সূচকগুলির জোড়গুলির তালিকা যা প্রতিকূল প্রতিবেশীদের প্রতিনিধিত্ব করে।আমি,

ফিজিকার রেফারেন্স বাস্তবায়ন - পাইথন সিনট্যাক্সকে I / O এর জন্যও সমর্থন করে । এই লুপোলগুলি ডিফল্টরূপে নিষিদ্ধ রয়েছে তা নোট গ্রহণের সময় আপনি কোনও মানক পদ্ধতি এবং কোনও যুক্তিসঙ্গত ফর্ম্যাটের মাধ্যমে ইনপুট নিতে এবং আউটপুট সরবরাহ করতে পারেন । এটি কোড-গল্ফ, তাই বাইটের (প্রতিটি ভাষায়) সংক্ষিপ্ততম কোডটি জয়ী!

তদুপরি, আপনি ম্যাট্রিক্স আকারটিকে ইনপুট হিসাবেও নিতে পারেন এবং ম্যাট্রিক্সকে ফ্ল্যাট তালিকা হিসাবে নিতে পারেন কারণ এটি সর্বদা বর্গক্ষেত্র হবে।

উদাহরণ

নিম্নলিখিত ম্যাট্রিক্স বিবেচনা করুন:

(641014272232535836)

প্রতিটি উপাদান সম্পর্কিত প্রতিবেশী হয়:

i j – E  -> Neighbours                          | All coprime to E?
                                                |
0 0 – 64 -> {10; 27; 22}                        | False
0 1 – 10 -> {64; 14; 27; 22; 32}                | False
0 2 – 14 -> {10; 22; 32}                        | False
1 0 – 27 -> {64; 10; 22; 53; 58}                | True
1 1 – 22 -> {64; 10; 14; 27; 32; 53; 58; 36}    | False
1 2 – 32 -> {10; 14; 22; 58; 36}                | False
2 0 – 53 -> {27; 22; 58}                        | True
2 1 – 58 -> {27; 22; 32; 53; 36}                | False
2 2 – 36 -> {22; 32; 58}                        | False

এবং এইভাবে আউটপুট অবশ্যই নিম্নলিখিতগুলির মধ্যে একটি হতে হবে:

  • {27; 53}
  • {{0; 0; 0}; {1; 0; 0}; {1; 0; 0}}
  • {(1; 0); (2; 0)}

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

Input –> Version 1 | Version 2 | Version 3

[[36, 94], [24, 69]] ->
    []
    [[0, 0], [0, 0]]
    []
[[38, 77, 11], [17, 51, 32], [66, 78, 19]] –>
    [38, 19]
    [[1, 0, 0], [0, 0, 0], [0, 0, 1]]
    [(0, 0), (2, 2)]
[[64, 10, 14], [27, 22, 32], [53, 58, 36]] ->
    [27, 53]
    [[0, 0, 0], [1, 0, 0], [1, 0, 0]]
    [(1, 0), (2, 0)]
[[9, 9, 9], [9, 3, 9], [9, 9, 9]] ->
    []
    [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
    []
[[1, 1, 1], [1, 1, 1], [1, 1, 1]] ->
    [1, 1, 1, 1, 1, 1, 1, 1, 1] or [1]
    [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
    [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
[[35, 85, 30, 71], [10, 54, 55, 73], [80, 78, 47, 2], [33, 68, 62, 29]] ->
    [71, 73, 47, 29]
    [[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]
    [(0, 3), (1, 3), (2, 2), (3, 3)]

প্রতিকূল প্রতিবেশীদের কাছ থেকে জিনিস ধার করা? কোনও কারণে, এটি আমাকে জেফ মিন্টারের গেম হোভার বোভের স্মরণ করিয়ে দেয় ...
আর্নাউল্ড

আমরা কি ইনপুট হিসাবে ম্যাট্রিক্স আকার নিতে পারি?
ডেল্ডাড0

@ ডেল্ডাড 0 আর আমি এটি উল্লেখ করতে সর্বদা ভুলে যাই। হ্যাঁ, আপনি ইনপুট হিসাবে ম্যাট্রিক্স আকার নিতে পারেন।
মিঃ এক্সকডার

উত্তর:


3

এপিএল (ডায়ালগ) , 17 বাইট

1=⊢∨(×/∘,↓)⌺3 3÷⊢

এটি অনলাইন চেষ্টা করুন! (পরীক্ষার কেসগুলি এপিএলে অনুবাদ করার জন্য ক্রেডিটগুলি)

সংক্ষিপ্ত বর্ণনা

(×/∘,↓)⌺3 3 প্রতিবেশীর সাথে প্রতিটি উপাদানের পণ্য পায়।

তারপরে আমি যুক্তি দিয়ে বিভক্ত করি ÷⊢, যাতে ম্যাট্রিক্সের প্রতিটি প্রবেশ তার প্রতিবেশীদের পণ্যটিতে ম্যাপ করা হয়।

অবশেষে আমি এই ম্যাট্রিক্স দিয়ে আর্গুমেন্টের জিসিডি নিয়েছি ⊢∨এবং 1 এর সাথে সমতার জন্য যাচাই করছি1=

দ্রষ্টব্য, এনএনজি-র উত্তর হিসাবে, দোভাষীতে বাগ দেওয়ার কারণে কিছু ইনপুট ব্যর্থ হয়।


2

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

বুলিয়ান মানগুলির একটি ম্যাট্রিক্স প্রদান করে, যেখানে মিথ্যা মানে প্রতিকূল।

m=>m.map((r,y)=>r.map((v,x)=>[...'12221000'].some((k,j,a)=>(g=(a,b)=>b?g(b,a%b):a>1)(v,(m[y+~-k]||0)[x+~-a[j+2&7]]||1))))

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

কিভাবে?

প্রতি ঘরের ৮ টি প্রতিবেশীকে আলাদা করতে যে পদ্ধতিটি ব্যবহৃত হয়েছিল তা আমি এখানে বর্ণিত পদ্ধতির অনুরূপ ।

মন্তব্য

m =>                            // m[] = input matrix
  m.map((r, y) =>               // for each row r[] at position y in m[]:
    r.map((v, x) =>             //   for each value v at position x in r[]:
      [...'12221000']           //     we consider all 8 neighbors
      .some((k, j, a) =>        //     for each k at position j in this array a[]:
        ( g = (a, b) =>         //       g is a function which takes 2 integers a and b
            b ?                 //       and recursively determines whether they are
              g(b, a % b)       //       coprime to each other
            :                   //       (returns false if they are, true if they're not)
              a > 1             //
        )(                      //       initial call to g() with:
          v,                    //         the value of the current cell
          (m[y + ~-k] || 0)     //         and the value of the current neighbor
          [x + ~-a[j + 2 & 7]]  //
          || 1                  //         or 1 if this neighbor is undefined
  ))))                          //         (to make sure it's coprime with v)

2

এমএটিএল , 22 বাইট

tTT1&Ya3thYC5&Y)Zd1=A)

ইনপুট একটি ম্যাট্রিক্স। প্রতিকূল প্রতিবেশীদের সাথে আউটপুট সমস্ত নম্বর।

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

কাজের উদাহরণ সহ ব্যাখ্যা

[38, 77, 11; 17, 51, 32; 66, 78, 19]উদাহরণ হিসাবে ইনপুট বিবেচনা করুন । স্ট্যাকের সামগ্রীগুলি নীচে থেকে উপরে দেখানো হয়েছে।

t         % Implicit input. Duplicate
          % STACK: [38, 77, 11;
                    17, 51, 32;
                    66, 78, 19]
                   [38, 77, 11;
                    17, 51, 32;
                    66, 78, 19]
TT1&Ya    % Pad in the two dimensions with value 1 and width 1
          % STACK: [38, 77, 11;
                    17, 51, 32;
                    66, 78, 19]
                   [1,  1,  1,  1,  1;
                    1,  38, 77, 11, 1;
                    1,  17, 51, 32, 1;
                    1,  66, 78, 19, 1
                    1,  1,  1,  1,  1]
3thYC     % Convert each sliding 3×3 block into a column (in column-major order)
          % STACK: [38, 77, 11;
                    17, 51, 32;
                    66, 78, 19]
                   [ 1,  1,  1,  1, 38, 17,  1, 77, 51;
                     1,  1,  1, 38, 17, 66, 77, 51, 78;
                     1,  1,  1, 17, 66,  1, 51, 78,  1;
                     1, 38, 17,  1, 77, 51,  1, 11, 32;
                    38, 17, 66, 77, 51, 78, 11, 32, 19;
                    17, 66,  1, 51, 78,  1, 32, 19,  1;
                     1, 77, 51,  1, 11, 32,  1,  1,  1;
                    77, 51, 78, 11, 32, 19,  1,  1,  1;
                    51, 78,  1, 32, 19,  1,  1,  1,  1]
5&Y)      % Push 5th row (centers of the 3×3 blocks) and then the rest of the matrix
          % STACK: [38, 77, 11;
                    17, 51, 32;
                    66, 78, 19]
                   [38, 17, 66, 77, 51, 78, 11, 32, 19]
                   [ 1,  1,  1,  1, 38, 17,  1, 77, 51;
                     1,  1,  1, 38, 17, 66, 77, 51, 78;
                     1,  1,  1, 17, 66,  1, 51, 78,  1;
                     1, 38, 17,  1, 77, 51,  1, 11, 32;
                    17, 66,  1, 51, 78,  1, 32, 19,  1;
                     1, 77, 51,  1, 11, 32,  1,  1,  1;
                    77, 51, 78, 11, 32, 19,  1,  1,  1;
                    51, 78,  1, 32, 19,  1,  1,  1,  1]
Zd        % Greatest common divisor, element-wise with broadcast
          % STACK: [38, 77, 11;
                    17, 51, 32;
                    66, 78, 19]
                   [1,  1,  1,  1,  1,  1,  1,  1,  1;
                    1,  1,  1,  1, 17,  6, 11,  1,  1;
                    1,  1,  1,  1,  3,  1,  1,  2,  1;
                    1,  1,  1,  1,  1,  3,  1,  1,  1;
                    1,  1,  1,  1,  3,  1,  1,  1,  1;
                    1,  1,  3,  1,  1,  2,  1,  1,  1;
                    1, 17,  6, 11,  1,  1,  1,  1,  1;
                    1,  1,  1,  1,  1,  1,  1,  1,  1]
1=        % Compare with 1, element-wise. Gives true (1) or false (0)
          % STACK: [38, 77, 11;
                    17, 51, 32;
                    66, 78, 19]
                   [1, 1, 1, 1, 1, 1, 1, 1, 1;
                    1, 1, 1, 1, 0, 0, 0, 1, 1;
                    1, 1, 1, 1, 0, 1, 1, 0, 1;
                    1, 1, 1, 1, 1, 0, 1, 1, 1;
                    1, 1, 1, 1, 0, 1, 1, 1, 1;
                    1, 1, 0, 1, 1, 0, 1, 1, 1;
                    1, 0, 0, 0, 1, 1, 1, 1, 1;
                    1, 1, 1, 1, 1, 1, 1, 1, 1]
A         % All: true (1) for columns that do not contain 0
          % STACK: [38, 77, 11;
                    17, 51, 32;
                    66, 78, 19]
                   [1, 0, 0, 0, 0, 0, 0, 0, 1]
)         % Index (the matrix is read in column-major order). Implicit display
          % [38, 19]

ম্যাট্রিক্স 3x3 এর চেয়ে বড় হলে এই কাজ করবে?
রবার্ট ফ্রেজার

@ রবার্টফ্রেজার হ্যাঁ, পদ্ধতিটি ম্যাট্রিক্স আকারের উপর নির্ভর করে না। উদাহরণস্বরূপ শেষ পরীক্ষার
কেসটি দেখুন

1

এপিএল (ডায়ালগ ক্লাসিক) , 23 22 বাইট

-1 বাইট @ H.PWiz ধন্যবাদ

{∧/1=1↓∨∘⊃⍨14⌽,⍵}⌺3 3

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

দোভাষীর বাগের কারণে 3x3 এর চেয়ে কম ম্যাট্রিকগুলি সমর্থন করে না


@ এইচপিউইজ এটি খুব স্মার্ট, আপনি কি এটি নিজের মতো পোস্ট করতে চান?
ngn

অবশ্যই, আপনি ব্যবহার করতে পারেন (⊃∨⊢)-> ∨∘⊂⍨আমি মনে করি
এইচপিউইজ

1

জেলি , 24 বাইট

হুম, লম্বা মনে হচ্ছে।

ỊẠ€T
ŒJ_€`Ç€ḟ"J$ịFg"FÇịF

একটি মোনাডিক লিঙ্ক ইতিবাচক পূর্ণসংখ্যার তালিকার একটি তালিকা গ্রহণ করে যা প্রতিকূল প্রতিবেশী প্রতিটি মানের একটি তালিকা ফেরত দেয় (সংস্করণ 1 এর কোনও নন-অনুলিপি সহ)।

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা-স্যুট দেখুন

কিভাবে?

ỊẠ€T - Link 1: indices of items which only contain "insignificant" values: list of lists
Ị    - insignificant (vectorises) -- 1 if (-1<=value<=1) else 0 
  €  - for €ach:
 Ạ   -   all?
   T - truthy indices

ŒJ_€`Ç€ḟ"J$ịFg"FÇịF - Main Link: list of lists of positive integers, M
ŒJ                  - multi-dimensional indices
    `               - use as right argument as well as left...
   €                -   for €ach:
  _                 -     subtract (vectorises)
      €             - for €ach:
     Ç              -   call last Link (1) as a monad
          $         - last two links as a monad:
         J          -   range of length -> [1,2,3,...,n(elements)]
        "           -   zip with:
       ḟ            -     filter discard (remove the index of the item itself)
            F       - flatten M
           ị        - index into (vectorises) -- getting a list of lists of neighbours
               F    - flatten M
              "     - zip with:
             g      -   greatest common divisor
                Ç   - call last Link (1) as a monad
                  F - flatten M
                 ị  - index into


1

হাস্কেল , 95 বাইট

m?n|l<-[0..n-1]=[a|i<-l,j<-l,a<-[m!!i!!j],2>sum[1|u<-l,v<-l,(i-u)^2+(j-v)^2<4,gcd(m!!u!!v)a>1]]

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

ফাংশনটি ?ম্যাট্রিক্সকে mতালিকাগুলির তালিকা এবং ম্যাট্রিক্সের আকার হিসাবে গ্রহণ করে n; এটি শত্রুতা মধ্যে এন্ট্রি তালিকা প্রদান করে ।

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