পাহাড়ের কি আছে?


14

চ্যালেঞ্জ

ইতিবাচক পূর্ণসংখ্যার একটি ম্যাট্রিক্স দেওয়া, পর্বতের কোনও "রিং" আছে কিনা তা নির্ধারণ করুন। এই চ্যালেঞ্জটির আনুষ্ঠানিক সংজ্ঞাটি হ'ল: ধনাত্মক পূর্ণসংখ্যার একটি ম্যাট্রিক্স দেওয়া হয়েছে, এমন কোনও ধনাত্মক পূর্ণসংখ্যা রয়েছে nযার জন্য ম্যাট্রিক্সের কোষগুলির একটি বদ্ধ রিং রয়েছে যা রিংয়ের সাথে nআবদ্ধ সমস্ত কোষের চেয়ে কম বা সমান প্রতিn

আসুন একটি সত্য উদাহরণ গ্রহণ করুন:

3 4 5 3
3 1 2 3
4 2 1 3
4 3 6 5

যদি আমরা সেট nকরি 2:

1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1

যেমন আমরা স্পষ্ট দেখতে পাচ্ছি, 1 প্রান্ত বরাবর গুলি একটি রিং তৈরি করে।

আমরা একটি রিংটি সেলগুলির অর্ডারকৃত সংগ্রহ হিসাবে সংজ্ঞায়িত করি যেখানে সংগ্রহে সংলগ্ন ঘরগুলি গ্রিডেও সংলগ্ন (প্রান্ত বা কোণ) রয়েছে। অতিরিক্তভাবে, রিংটির অন্তত অন্তত 1 টি কক্ষ থাকতে হবে; অর্থাত্, সংগ্রহের ঘরগুলি বাদ দিয়ে পুরো ম্যাট্রিক্সকে কেবলমাত্র বিএফএস-প্লাবন পূরণের চেষ্টা করা এবং সংগ্রহের কোনও ঘরকে কখনই অতিক্রম না করা অবশ্যই কমপক্ষে একটি কক্ষ মিস করবে।

সত্যবাদী পরীক্ষার কেস

4 7 6 5 8 -> 1 1 1 1 1
6 2 3 1 5 -> 1 0 0 0 1 (n = 3)
6 3 2 1 5 -> 1 0 0 0 1
7 5 7 8 6 -> 1 1 1 1 1

1 3 2 3 2
1 6 5 7 2
1 7 3 7 4
1 6 8 4 6

1 3 1
3 1 3
1 3 1

7 5 8 7 5 7 8 -> if you have n = 4, you get an interesting ridge shape around the top and right of the grid
8 4 4 2 4 2 7
6 1 8 8 7 2 7
5 4 7 2 5 3 5
5 6 5 1 6 4 5
3 2 3 2 7 4 8
4 4 6 7 7 2 5
3 2 8 2 2 2 8
2 4 8 8 6 8 8

5 7 6 8 6 8 7 -> there is an island in the outer ring (n = 4), but the island is a ring
5 3 2 4 2 4 7
6 3 7 8 5 1 5
8 2 5 2 8 2 7
8 3 8 8 8 4 7
6 1 4 1 1 2 8
5 5 5 5 7 8 7

150 170 150
170 160 170
150 170 150

মিথ্যা টেস্ট মামলা

1 2 3 2 1 -> this is just a single mountain if you picture it graphcially
2 3 4 3 2
3 4 5 4 3
2 3 4 3 2
1 2 3 2 1

4 5 4 3 2 -> this is an off-centered mountain
5 6 5 4 3
4 5 4 3 2
3 4 3 2 1

1 1 1 1 1 -> this is four mountains, but they don't join together to form a ring
1 2 1 2 1
1 1 1 1 1
1 2 1 2 1
1 1 1 1 1

3 3 3 3 3 -> there is a ring formed by the `3`s, but the `4` in the middle is taller so it doesn't qualify as a mountain ring
3 1 1 1 3
3 1 4 1 3
3 1 1 1 3
3 3 3 3 3

3 4 4 4 3
4 4 3 4 4
3 3 3 3 4
4 4 3 4 4
3 4 4 4 3

1  2  3  4  5
6  7  8  9  10
11 12 13 14 15
16 17 18 19 20
22 23 24 25 26

বিধি

  • স্ট্যান্ডার্ড লুফোলস প্রয়োগ করুন
  • এটি , সুতরাং প্রতিটি ভাষার বাইটের সংক্ষিপ্ত উত্তরটিকে তার ভাষার বিজয়ী হিসাবে ঘোষণা করা হয়। কোন উত্তর গৃহীত হবে না।
  • ইনপুটটি ইতিবাচক পূর্ণসংখ্যার ম্যাট্রিক্সের জন্য কোনও যুক্তিসঙ্গত ফর্ম হিসাবে নেওয়া যেতে পারে
  • আউটপুটটিকে [সত্য] বা [মিথ্যা] ইঙ্গিত করে যে কোনও দুটি যুক্তিসঙ্গত, ধারাবাহিক, স্বতন্ত্র মান হিসাবে দেওয়া যেতে পারে।

কি জন্য nতৃতীয় "truthy" পরীক্ষা ক্ষেত্রে আসলে truthy হয়? [1,2] ?
এরিক দ্য আউটগল্ফার

@ এরিকথ আউটগলফার 3 এস এর রিংটি কোণে সংলগ্ন। তাই হ্যাঁ.
ব্যবহারকারী 202729

উত্তর:


3

জেলি , 38 বাইট

Ẇ€Z$⁺Ẏµ,ZẈ>2ẠµƇµḊṖZƊ⁺FṀ<,Z.ịḊṖ$€Ɗ€ƊȦ)Ṁ

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

আউটপুটস 1 যদি ম্যাট্রিক্সে পর্বতমালা থাকে, 0 অন্যথায় ।

এটি কীভাবে কাজ করে (সামান্য পুরানো)

আমি কোডটি কিছুটা ছোট করতে সক্ষম হতে পারি, সুতরাং এই বিভাগটি সম্ভবত ভারী সম্পাদনা করবে।

সহায়ক লিঙ্ক

,Z.ịḊṖ$€Ɗ€ – Helper link. Let S be the input matrix.
,Z         – Pair S with its transpose.
        Ɗ€ – For each matrix (S and Sᵀ), Apply the previous 3 links as a monad.
  .ị       – Element at index 0.5; In Jelly, the ị atom returns the elements at
             indices floor(x) and ceil(x) for non-integer x, and therefore this
             returns the 0th and 1st elements. As Jelly is 1-indexed, this is the
             same as retrieving the first and last elements in a list.
    ḊṖ$€   – And for each list, remove the first and last elements.

উদাহরণস্বরূপ, ফর্মটিতে একটি ম্যাট্রিক্স দেওয়া হয়েছে:

A(1,1) A(1,2) A(1,3) ... A(1,n)
A(2,1) A(2,2) A(2,3) ... A(2,n)
A(3,1) A(3,2) A(3,3) ... A(3,n)
...
A(m,1) A(m,2) A(m,3) ... A(m,n)

এটি অ্যারেগুলি ফেরত দেয় (অর্ডারটি কোনও ব্যাপার নয়):

A(1,2), A(1,3), ..., A(1,n-1)
A(m,2), A(m,3), ..., A(m,n-1)
A(2,1), A(3,1), ..., A(m-1,1)
A(2,n), A(3,n), ..., A(m-1,n)

দীর্ঘ গল্প সংক্ষিপ্ত, এটি কোণার অপসারণ করে সবচেয়ে বাহ্যিক সারি এবং কলাম তৈরি করে।

মূল লিঙ্ক

Ẇ€Z$⁺Ẏµ,ZẈ>2ẠµƇµḊṖZƊ⁺FṀ<ÇȦ)Ṁ – Main link. Let M be the input matrix.
Ẇ€                           – For each row of M, get all its sublists.
  Z$                         – Transpose and group into a single link with the above.
    ⁺                        – Do twice. So far, we have all contiguous sub-matrices.
     Ẏ                       – Flatten by 1 level.
      µ      µƇ              – Filter-keep those that are at least 3 by 3:
       ,Z                      – Pair each sub-matrix S with Sᵀ.
         Ẉ                     – Get the length of each (no. rows, no. columns).
          >2                   – Element-wise, check if it's greater than 2.
            Ạ                  – All.
               µ          )  – Map over each sub-matrix S that's at least 3 by 3
                ḊṖ           – Remove the first and last elements.
                  ZƊ         – Zip and group the last 3 atoms as a single monad.
                    ⁺        – Do twice (generates the inner cells).
                     FṀ      – Flatten, and get the maximum.
                       <Ç    – Element-wise, check if the results of the helper
                               link are greater than those in this list.
                         Ȧ   – Any and all. 0 if it is empty, or contains a falsey
                               value when flattened, else 1.
                           Ṁ – Maximum.

2

পরিষ্কার , 224 ... 161 বাইট

import StdEnv,StdLib
p=prod
~ =map
^ =reverse o$
@ =transpose o~(^o^)
$l=:[h:t]|h>1=l=[1: $t]
$e=e
?m=p[p(~p(limit(iterate(@o@)(~(~(\a|a>b=2=0))m))))\\n<-m,b<-n]

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

ফাংশন নির্ধারণ ? :: [[Int]] -> Int, ফিরে 0যদি একটি রিং, এবং 1অন্যথায়।

ম্যাট্রিক্সকে 2পর্বত এবং 0উপত্যকার জন্য s তে পরিণত করে কাজ করে , এরপরে 1ফল পরিবর্তন বন্ধ না হওয়া পর্যন্ত তার সাথে বন্যা বয়ে যায়। যে 0কোনও পর্বত উচ্চতার জন্য এখনও বিদ্যমান থাকলে পণ্যটি হবে 0


1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 302 বাইট

a=>a.some((b,i)=>b.some((n,j)=>(Q=(W=(i,j,f)=>[a.map((b,I)=>b.map((t,J)=>I==i&J==j)),...a+0].reduce(A=>A.map((b,I)=>b.map((t,J)=>f(I)(J)&&(A[I-1]||b)[J]|(A[I+1]||b)[J]|b[J-1]|b[J+1]|t))))(i,j,I=>J=>a[I][J]<=n)).some((b,i)=>b.some((d,j)=>d&&!i|!j|!Q[i+1]|b[j+1]==b.b))<!/0/.test(W(0,0,I=>J=>!Q[I][J]))))

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

বিন্দু থেকে প্রবাহিত হচ্ছে কিনা তা পরীক্ষা করে সীমান্তে পৌঁছতে পারে না, যখন বর্ডারটি প্রতিটি পয়েন্টে যেতে পারে

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