আমার বাচ্চাদের বর্ণমালা মাদুরটি কি রঙের দ্বারা সঠিকভাবে ভাগ করা যায়?


14

আমার বাচ্চাদের সাথে খেলতে বর্ণমালা মাদুর রয়েছে, এরকম কিছু:

বর্ণমালা মাদুর

কয়েক মাস পরে মাদুর টাইলগুলি এলোমেলোভাবে স্থাপন করা হয়েছিল, আমি ক্লান্ত হয়ে পড়েছিলাম এবং মাদুর সমস্ত টাইলগুলি তাদের পটভূমির রঙ অনুসারে বিভাগ দ্বারা বিভক্ত রেখেছি। সুতরাং, যদি অক্ষরগুলি পটভূমির রঙ উপস্থাপন করে তবে আমি এই জাতীয় একটি মাদুর পেয়েছি:

AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC

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

AA
A
A
AA
AAAA
AAAAAA

  BB
 BB
 B

    C
   CCC
  CCCC
  CCC
    CCCC
      CCC

     DDD
      D
      DD
     DD

        E
       EE
        E
       EE
        E

এছাড়াও, প্রতিটি রঙের জন্য একটি করে গ্রুপ রয়েছে, সুতরাং এটি বৈধ হবে না:

ABA
ABA

কারণ রঙ একটি টাইল কেবল একটি গ্রুপে গোষ্ঠীযুক্ত নয়। এটি বৈধ হবে না কারণ টাইলগুলি অনুভূমিকভাবে বা উল্লম্বভাবে সংযুক্ত হয় না:

AB
BA

চ্যালেঞ্জ

মুদ্রণযোগ্য এএসসিআইআই পরিসরে অক্ষরের একটি 2-মাত্রিক অ্যারে দেওয়া (উভয় মাত্রার আকার 1 এর সমান বা তার বেশি হওয়া পর্যন্ত বর্গ এক হতে হবে না), অ্যারেগুলি বর্ণের দ্বারা সঠিকভাবে গ্রুপযুক্ত একটি মাদুরের প্রতিনিধিত্ব করে কিনা তা পরীক্ষা করুন (অ্যারের প্রতিটি পৃথক অক্ষর ভিন্ন বর্ণের প্রতিনিধিত্ব করে)। ইনপুট যতক্ষণ না এটি দ্বি-মাত্রিক অক্ষরের (2D চর অ্যারে, একই দৈর্ঘ্যের স্ট্রিংগুলির অ্যারে এবং অন্যান্য) প্রতিনিধিত্ব করে ততক্ষণ কোনও যুক্তিসঙ্গত ফর্ম্যাটে থাকতে পারে এবং আউটপুট অবশ্যই সত্যবাদী এবং মিথ্যা মানগুলির একটি জোড়া হতে পারে (0 / 1, 'টি' / 'এফ', সত্য / মিথ্যা, যতক্ষণ না কিছু ফিরে আসবে এবং ফেরতের মানগুলি ইনপুটগুলিতে সামঞ্জস্যপূর্ণ)।

এটি কোড-গল্ফ, তাই প্রতিটি ভাষার জন্য সংক্ষিপ্ততম প্রোগ্রাম / ফাংশন / পদ্ধতি / ল্যাম্বদা জয়লাভ করতে পারে!

উদাহরণ

A    truthy

AB
AB   truthy

AB
BA   falsey

ABCDE    truthy

ABCDC    falsey

**::dd22
***:d222
*:::::22    truthy

$$$%%%&&
$$%%&&&&
&&$$$%&&    falsey

AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC   truthy

AABB
ABBA
AAAA    truthy

AAAB
AAAA
AAAA    truthy

আমার মাদুরটি রং দ্বারা সঠিকভাবে গোষ্ঠীযুক্ত

আমার মাদুরটি রং দ্বারা সঠিকভাবে গোষ্ঠীযুক্ত

(আমাকে এখনও এই সীমানাগুলি ঠিক করতে হবে ...)


1
কৌতূহলবশত, আপনি কেন অক্ষরানুক্রমিকভাবে মাদুরের ব্যবস্থা করবেন না? অবশ্যই চ্যালেঞ্জটির সাথে কিছুই করার নেই, কেবল অবাক হয়ে ভাবছেন
এয়ারড কোইনারিংহিংহিং

4
@Cairdcoinheringaahing কারন তখন আমার বিশেষ ওসিডি সন্তুষ্ট হবে না। :-)
চার্লি

3
আপনার বাচ্চারা কোড গল্ফ চ্যালেঞ্জগুলির জন্য অনুপ্রেরণার উত্স হিসাবে অবিরত রয়েছে :-)
লুইস মেন্ডো

2
রঙগুলি কেন কিছু অন্যান্য ইনপুট (যেমন পূর্ণসংখ্যা বা এমনকি পিক্সেল যেমন) এর চেয়ে অক্ষর দ্বারা প্রতিনিধিত্ব করতে হবে?
জোনাথন অ্যালান

2
অক্টোবরের কথা বলতে গেলে, এই চ্যালেঞ্জটি সঠিকভাবে গ্রুপযুক্ত মাদুরের ছবি ছাড়া সম্পূর্ণ হবে না
জোনাহ

উত্তর:


6

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

1e"G@=4&1ZI1>vzg

ইনপুট একটি 2 ডি চর অ্যারে (সারিগুলি পৃথক করে পৃথক করে ;)। 0যদি ইনপুট যোগ্যতা অর্জন করে তবে 1অন্যথায় আউটপুট হয় ।

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

ব্যাখ্যা

কোডটি প্রয়োজনীয়টি চেক করে যে ইনপুটটির প্রতিটি চরের 4-সংযোগ বিবেচনা করে (এটি কোনও ত্রিভঙ্গ নয়) কেবল একটি সংযুক্ত উপাদান রয়েছে কিনা।

বারবার চরগুলি বারবার প্রক্রিয়া করা হয় (যা হ'ল প্রতিলিপি চেয়ে গল্ফিয়র)।

1e       % Implicit input. Reshape into a row vector of chars
"        % For each char
  G      %   Push input again
  @      %   Push current char
  =      %   Equal (element-wise)? Gives a matrix of zeros and ones, where one
         %   represents the presence of the current char
  4      %   Push 4. This will indicate 4-connectivity
  &1ZI   %   Matrix with labels of connected componnents. Inputs are a number (4)
         %   to indicate connectivity, and a binary matrix. The output is a matrix
         %   the same size as the input where each connected componnent of ones
         %   in the input is replaced by a different integer starting at 1
  1>     %   Greater than 1 (element-wise)? The result is a matrix. If the result 
         %   is true for some entry the input doesn't qualify
  v      %   Concatenate vertically with results from previous iterations
  z      %   Number of nonzero/true values
  g      %   Logical. Converts nonzero to true
         % Implicit end. Implicit display. False / true are displayed as 0 / 1

3

বেফুঞ্জ -৩৩, ৩১7 বাইট

সম্পাদনা করুন: সঠিক বাইট-কাউন্টের জন্য স্থির। আরও গল্ফ করা যেতে পারে

93+:10pv  +93p01+1g01_  v@.1<
gp00g1+>00p~1+:93+`!#^_1-00g10
50p93+:vv_v#!:gg03:p02:<>40p#
!`g01: <>\ 1+:vvp05:+<@^p03_^#
v93$_v# !- g00<4v04g<^1<vp06:<
>+\!\>\ 3v> 40v0>g-v^<.g>:70vp
07_v#:<^ >#+0# g#\<  10\v4gg<^
!#v _$^  g03p <\ v1_#:^5>0g  -
   <    ^ g02p1< >-:#^_^#:g05
-1<   ^p\g06\0\+1:\g06\-1:\g06:\+1g06:g07

1 টি সত্যবাদী হিসাবে, 0 টি ভুয়া হিসাবে মুদ্রণ করে

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

এখানে পয়েন্টারটি যে পথটি নেয় সেটির একটি দৃশ্যায়ন

অভিনব রঙ!

দ্রষ্টব্য: এটি পুরানো সংস্করণের জন্য


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

এখানে কিছু দ্রুত এবং নোংরা সিউডোকোড

a = 2Darray() # from 12,12 down and to the right
arrayLocation = 12
x = arrayLocation #stored at 0,0
y = arrayLocation #stored at 1,0
i = input()       #stored in the stack
while (i != 0):
    if (i == 10):
        y++
        x = init
    else
        a[x][y] = i
        x++
    i = input

new.x = init    #stored at 2,0
new.y = init    #stored at 3,0

currentChar = 0    #stored at 4,0
chars = array()    #stored at 1,1 onwards
charnum = 0        #stored 5,0
ToCheck = array()  #stored in the stack

current.x = null   #stored at 6,0
current.y = null   #stored at 7,0

while (new.y < y):
    if (a[new] != 0)
        currentChar = a[new]
        toCheck[] = new
        while (toCheck)
            current = toCheck.pop()
            if (a[current] == currentChar)
                toCheck.append(adjacent(current))
                a[current] = 0
        foreach (chars as char)
            if (char == currentChar)
                return 0
        charNum++
        chars[charNum] = char
    new.x++
    if (new.x > x)
        new.x = init
        new.y++

return 1

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

বেফুঞ্জের সাথে পরিচিত ব্যক্তিদের জন্য, কোডটির একটি পৃথক সংস্করণ

96+:10p    v    +69p01+1g01_v
`+96:+1~p00<+1g00pg01g00-1_^#
v                           <
>40p50p96+:v                ^
v    @.1<  >
>:10g `#^_30p:20p:30gg:#v_$>1+:00g-!#v_0   >30g+
v                       <  ^         >$96+1^
>40p30gv                   ^
       >:!#v_70p:60p:70gg40 g-!#v_$>
           v               ^     > ^
1:\g06\+1:g 07\g07\-1:\g07\ +1: <^p\g06\0\-
v          <               ^
>50gv   >5\g1+:50p40g\1p20g^
    >:!#^_:1g40g-!#v_1-
                   >0.@

সত্যি কথা বলতে, আমি মনে করি আপনার এটি 337 বাইট হিসাবে গণনা করা উচিত। অন্যথায়, আপনি ফাইলের মধ্যেই কোডটির মাত্রা কীভাবে নির্দিষ্ট করবেন? নতুনলাইনগুলিও গণনা করা উচিত।
নিডজেজেকোব

@ নিডজেজেকোব হ্যাঁ, আমি তখন থেকেই পরিবর্তন করেছি যে কীভাবে আমি বাইটগুলি গণনা করি এবং টিআইও যা বলুক তা মেনে চলি। এছাড়াও আমার কি লাইন কাউন্ট ভুল ছিল? সম্ভবত আগামীকাল আমি এটিকে আরও খানিকটা ছোট করে দেখব
জো কিং

2

জে, 66 বাইট

c=.1=+/@,+.]-:]*[:*@+/((,|."1)0,.1 _1)&(|.!.0)
[:*/[:c"2[="_ 0~.@,

cএকটি ক্রিয়া সংজ্ঞায়িত করে যা আপনাকে বলে যে কোনটি এবং শূন্যগুলির একটি ম্যাট্রিক্স সি সংযুক্ত রয়েছে। এটি সিঙ্গেলটনকে সত্যের একটি বিশেষ কেস হিসাবে বিবেচনা করে। অন্যথায় এটি প্রতিটি ঘরের অরথোগোনাল প্রতিবেশী গণনা নেয়, তারপরে সেই গণনার সাইনাম, তারপরে মূল ম্যাট্রিক্সের সাথে বহুগুণ হয়: যদি সেই পণ্যটি মূল ম্যাট্রিক্সের সমান হয়, তবে এটি সংযুক্ত।

প্রতিবেশী গণনাটি চারটি দিকের দিকে সরে গিয়ে, পরে যোগফলগুলি অর্জন করে। xঘূর্ণন / শিফটের বৈশিষ্ট্যটি " -রগ ক্যান টেবিল টু " ব্যবহার করে 4 দিকের শিফট অর্জন করা হয়|.

শেষ অবধি, ইনপুটটির প্রতিটি অনন্য ~. উপাদানের জন্য একটি জিরো / জিরো ম্যাট্রিক্স তৈরি করে উত্তরটি নিজেই অর্জন করেছিল এবং তারপরে সেই ম্যাট্রিকগুলির সমস্ত সংযুক্ত রয়েছে কিনা তা নিশ্চিত করে। এটি দ্বিতীয় লাইনের ক্রিয়াটি।

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


2

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

স্ট্রিংগুলির অ্যারে হিসাবে ইনপুট নেয়। রিটার্ন 0বা 1

a=>(C={},F=x=>!C[c=a[y][x]]|(g=v=>(a[y+v]||[])[x]==c)(-1)|g(1)|g(0,x--)|g(0,x+=2)?a[y+=!c]?F(C[c]=c?x:0):1:0)(y=0)

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

ফর্ম্যাট এবং মন্তব্য

a => (                            // given an array of strings a
  C = {},                         // C = object holding encountered characters
  F = x =>                        // F = recursive function taking x:
    !C[c = a[y][x]]               //   c = current character; is it a new one?
    | (g = v =>                   //   g = helper function taking v
        (a[y + v] || [])[x] == c  //       and testing whether a[y + v][x] == c
      )(-1)                       //   test a[y - 1][x]
    | g(1)                        //   test a[y + 1][x]
    | g(0, x--)                   //   test a[y][x - 1]
    | g(0, x += 2) ?              //   test a[y][x + 1]; if at least one test passes:
      a[y += !c] ?                //     increment y if c is undefined; if a[y] exists:
        F(C[c] = c ? x : 0)       //       update C, update x and do a recursive call
      :                           //     else:
        1                         //       all characters have been processed -> success
    :                             //   else:
      0                           //     invalid character detected -> failure
)(y = 0)                          // initial call to F, starting with x = y = 0

1

ওল্ফ্রাম ভাষা (গণিত) , 96 বাইট

And@@(ConnectedGraphQ@Subgraph[GridGraph@Dimensions[t],Tr/@Position[c,#]]&/@(c=Join@@(t=#)))&

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

অক্ষরের 2D তালিকা হিসাবে ইনপুট নেয়: উদাহরণস্বরূপ {{"A","B"},{"C","D"}},।

চরিত্র \[Transpose]

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

প্রতিটি অক্ষরের জন্য cইনপুটে, লাগে Subgraphএর GridGraphএকই Dimensionsপ্রত্যেক ইনপুট হিসাবে যা অনুরূপ Positionযা cঘটে, এবং চেক যদি এটি একটি এর ConnectedGraphQ



1

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

(d,o={})=>{f=(i,j,c,l=d[i])=>{if(c&&l&&l[j]==c){l[j]='';f(i-1,j,c);f(i+1,j,c);f(i,j-1,c);f(i,j+1,c);o[c]=1}};d.map((e,i)=>e.map((c,j)=>o[c]||f(i,j,c)));return!d.some(e=>e.join(''))}

যখনই কোনও নতুন রঙের টাইল পাওয়া যায়, সংযুক্তগুলি খালি স্ট্রিং দিয়ে পূরণ করুন। মাদুরটি রং দ্বারা সঠিকভাবে গোষ্ঠীযুক্ত করা থাকলে, সমস্ত টাইলগুলি খালি স্ট্রিং দিয়ে ভরাট করা উচিত।

পরীক্ষার কোড


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