এটি কোন টেট্রোমিনো?


54

একটি স্বাক্ষরযুক্ত 16-বিট পূর্ণসংখ্যা এন দেওয়া , আপনার কাজটি 4x4 ম্যাট্রিক্সের অভ্যন্তরে এর বাইনারি উপস্থাপনাটি টেট্রোমিনো আকারের সাথে মিলছে কিনা তা নির্ধারণ করা এবং যদি তাই হয় তবে এটি কোন আকারের।

জরায়ু

বাম থেকে ডান এবং উপরে থেকে নীচে সবচেয়ে গুরুত্বপূর্ণ এক দিয়ে শুরু করে এন এর প্রতিটি বিট 4x4 ম্যাট্রিক্সের মধ্যে ম্যাপ করা হয়।

উদাহরণ :

N = 17600
binary representation: 0100010011000000
matrix: [ [ 0, 1, 0, 0 ],
          [ 0, 1, 0, 0 ],
          [ 1, 1, 0, 0 ],
          [ 0, 0, 0, 0 ] ]

টেট্রোমিনো আকার

বেস আকার

O , I , S , Z , L , J এবং T অক্ষর দ্বারা চিহ্নিত 7 টি টেট্রোমিনো আকার রয়েছে :

tetrominoes

আবর্তন এবং অনুবাদ

যদি কোনও আকারটি অনুবাদ করা হয় এবং / অথবা 4x4 ম্যাট্রিক্সের মধ্যে ঘোরানো হয় তবে এটি এখনও একই টেট্রোমিনোটির বৈধ প্রকরণ হিসাবে বিবেচিত হয়। উদাহরণস্বরূপ, 17600, 1136, 2272 এবং 1604 এটিকে জে টেট্রোমিনোস হিসাবে চিহ্নিত করা উচিত :

বৈধ জে উদাহরণ

মোড়ানো না!

তবে আকারগুলি চারপাশে মোড়ানো বা ম্যাট্রিক্সের কোনও সীমানা ছাড়িয়ে স্থানান্তরিত করা যায় না। উদাহরণস্বরূপ, তন্ন তন্ন 568 কিংবা 688 হিসেবে চিহ্নিত করা উচিত জে tetrominoes (একা থাকতে দাও অন্য কোন আকৃতি):

অবৈধ জে উদাহরণ

ব্যাখ্যা এবং বিধি

  • আপনি কোনও পূর্ণসংখ্যা হিসাবে ইনপুট নিতে পারেন বা কোনও যুক্তিসঙ্গত ফর্ম্যাটে সরাসরি 16 বাইনারি ডিজিটের মতো, যেমন 2D অ্যারে, ফ্ল্যাট অ্যারে বা সীমানাযুক্ত স্ট্রিং।
  • ইনপুটটি একটি স্বাক্ষরবিহীন 16-বিট পূর্ণসংখ্যা (বা এরে বা স্ট্রিং হিসাবে এর সমতুল্য উপস্থাপনা) হওয়ার নিশ্চয়তা রয়েছে।
  • যখন কোনও বৈধ আকৃতি চিহ্নিত করা হয়, আপনাকে অবশ্যই নিম্ন বা উচ্চতর ক্ষেত্রে আকারটি সনাক্তকারী চিঠিটি মুদ্রণ বা ফিরিয়ে দিতে হবে ।
  • যদি কোনও আকার চিহ্নিত না হয় তবে আপনাকে অবশ্যই এমন কোনও মান মুদ্রণ করতে হবে বা ফেরত পাঠাতে হবে যা কোনও টেট্রোমিনো বর্ণের সাথে মেলে না। আপনি কিছুতেই ফেরত দেওয়াও চয়ন করতে পারেন।
  • বৈধ হিসাবে বিবেচিত হওয়ার জন্য, ম্যাট্রিক্সে কোনও অতিরিক্ত কোষ ছাড়াই সঠিক টেট্রোমিনো আকার থাকতে হবে (পরীক্ষার ক্ষেত্রে 1911 এবং 34953 দেখুন)।
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!

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

পরীক্ষার কেসগুলি 2 ডি অ্যারে হিসাবে পেতে আপনি এই লিঙ্কটি অনুসরণ করতে পারেন ।

0      -> false
50     -> false
51     -> 'O'
1911   -> false
15     -> 'I'
34952  -> 'I'
34953  -> false
1122   -> 'S'
3168   -> 'Z'
785    -> 'L'
1136   -> 'J'
568    -> false
688    -> false
35968  -> 'T'
19520  -> 'T'

মজার বিষয় হচ্ছে, func1 . func2 . func3
জেএসে

আমি ইনপুট নিতে পারেন হিসাবে চার সারি সাথে যোগ 0, IE 1111011110111101111জন্য 65535?
ETH প্রোডাকশনগুলি

পছন্দ করুন আমি সামান্য শিথিল ইনপুট ফর্ম্যাট দিয়ে চ্যালেঞ্জটি সম্পাদনা করেছি।
আর্নৌল্ড

3
আমি: 15,240,3840,4369,8738,17476,34952,61440জে: 71,113,142,226,275,550,802,1100,1136,1604,1808,2272,3208,3616,4400,8800,12832,17600,18176,25664,28928,36352,51328,57856এল: 23,46,116,232,368,547,736,785,1094,1570,1856,2188,3140,3712,5888,8752,11776,12560,17504,25120,29696,35008,50240,59392ও: 51,102,204,816,1632,3264,13056,26112,52224এস: 54,108,561,864,1122,1728,2244,8976,13824,17952,27648,35904টি: 39,78,114,228,305,562,610,624,1124,1220,1248,1824,2248,3648,4880,8992,9760,9984,17984,19520,19968,29184,35968,58368জেড:99,198,306,612,1224,1584,3168,4896,9792,19584,25344,50688
ইঞ্জিনিয়ার টোস্ট

Yn লিনের পাইথন 3 উত্তর ব্যবহার করে উত্পন্ন হয়েছে কারণ এতে সুবিধাজনক ইনপুট / আউটপুট ফর্ম্যাট রয়েছে।
ইঞ্জিনিয়ার টোস্ট

উত্তর:


6

জেলি ,  54 43 42  41 বাইট

-1 বাইট ধন্যবাদ এরিক দি আউটগল্ফারকে (পুনরাবৃত্ত শৃঙ্খলে ভিতরে স্থানান্তরিত করুন)

T€FṀ⁸ṙ€Zµ⁺F
ZU$3СǀḄṂ“çc3Ð6'G‘i’ị“¥Çıƭ⁵»

একটি মোনাডিক লিঙ্কটি 2 ডি অ্যারের পূর্ণসংখ্যার ( 1গুলি এবং 0গুলি) গ্রহণ করে এবং oiszljtসম্পর্কিত টেট্রোমিনো বা wঅবৈধ হলে একটি ছোট হাতের অক্ষর ফেরত দেয় ।

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

আরো দেখুন এই প্রোগ্রাম যা তাদের আউটপুট, ঐ আউটপুট অনুসারে সাজানো সহ সেট ঠিক চার বিট সঙ্গে সব 1820 সম্ভব 2D বাইনারি অ্যারে তালিকাবদ্ধ করে।

কিভাবে?

এটি প্রথমে ইনপুটটির চারটি ঘূর্ণন নেয়। তারপরে এটি প্রতিটিের বিটগুলি যতদূর ডানদিকে এবং তারপরে নীচে যতদূর সম্ভব পরিবর্তন করে এবং ফলাফলগুলি বাইনারি সংখ্যায় রূপান্তর করে। এটি তখন প্রতিটি বৈধ টেট্রোমিনো এর ন্যূনতম উপস্থাপনার তালিকার সর্বনিম্ন ফলাফলের সন্ধান করে এবং হ্রাসপ্রাপ্ত ফলাফলকে দুটি শব্দযুক্ত শব্দ শব্দের সাথে সূচক করতে zoist+ ব্যবহার করে jowl, wযখন কোনও মিল খুঁজে পাওয়া যায় নি ing

T€FṀ⁸ṙ€Zµ⁺F - Link 1, shift set bits right & then down : list of lists of bits          
        µ⁺  - perform the following twice, 1st with x=input, then with x=result of that):
T€          -   truthy indexes of €ach
  F         -   flatten into a single list
   Ṁ        -   maximum (the index of the right-most bit)
    ⁸       -   chain's left argument, x
     ṙ€     -   rotate €ach left by that amount
       Z    -   transpose the result
          F - flatten (avoids an € in the main link moving this into here)

ZU$3СǀḄṂ“çc3Ð6'G‘i’ị“¥Çıƭ⁵» - Main link: list of lists of bits (the integers 0 or 1)
   3С                        - repeat this 3 times collecting the 4 results:
  $                           -   last two links as a monad:
Z                             -     transpose
 U                            -     upend (reverse each) -- net effect rotate 90° CW
      Ç€                      - call the last link as a monad for €ach
        Ḅ                     - convert from binary (vectorises)
         Ṃ                    - minimum (of the four results)
          “çc3Ð6'G‘           - code-page indexes = [23,99,51,15,54,39,71]
                              -   ...the minimal such results for l,z,o,i,s,t,j shapes
                   i          - 1-based index of minimum in there or 0 if not found
                    ’         - decrement
                      “¥Çıƭ⁵» - compressed words: "zoist"+"jowl" = "zoistjowl"
                     ị        - index into (1 indexed & modular, so -1 yields 'w',
                              -             0 yields 'l', 1 yields 'z', ...)

পূর্ববর্তী পদ্ধতি (54 বাইট)

Fœr0Ḅ“çc3Ðñ'G‘i
;Z$Ḅ©f“¦µ½¿Æ‘ȯ®¬S>2ȧZU$3СǀṀ’ị“¥Çıƭ⁵»

একটি মোনাডিক লিঙ্কটি 2 ডি অ্যারের পূর্ণসংখ্যার ( 1গুলি এবং 0গুলি) গ্রহণ করে এবং oiszljtসম্পর্কিত টেট্রোমিনো বা wঅবৈধ হলে একটি ছোট হাতের অক্ষর ফেরত দেয় ।

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

এই চেকগুলিতে কমপক্ষে তিনটি ফাঁকা লাইন (সারি + কলাম) রয়েছে এবং বিটগুলির নির্দিষ্ট নিদর্শনগুলি কোনও লাইনে উপস্থিত নেই (বিশেষত সংখ্যা 5,9,10,11 এবং 13), এগুলি একসাথে পরবর্তী পদক্ষেপের নিশ্চয়তা দেয় মিথ্যা ইতিবাচক. এরপরে এটি চারটি ঘূর্ণনের প্রতিটি বাইনারি নম্বরকে (রূপান্তর করার আগে ট্রেলিং জিরো স্ট্রাইপ করে) ফ্লোর-এ ফ্ল্যাট করে এবং সংক্ষিপ্ত ফলাফলকে দুটি সংক্ষেপিত অভিধানের শব্দের সাথে সূচকে সংক্ষিপ্ত ফলাফলটি দেখায় numbers zoist+ jowl, wযখন কোনও মিল খুঁজে পাওয়া যায় নি yield


এবং আমি জানতাম হার্ডকোডিংয়ের চেয়ে আরও ভাল উপায় ছিল ...
এরিক দি আউটগলফার

বিটিডব্লু আমি মনে করি এই কোডটি একটি কাকতালীয় উপর নির্ভর করে (কারণ, ভাল, zoistjowlঅন্যথায় সাধারণত স্ট্রিংয়ের জন্য উপযুক্ত হয় না: পি)
এরিক দ্য আউটগোল্ফ

"একটি কাকতালীয় উপর নির্ভর করে" এর অর্থ কী? (অভিধানের অনুসন্ধানটি ...Ṁị“LZOISTJWযাইহোক যাইহোক কেবল একটি বাইট সংরক্ষণ করে )
জোনাথন অ্যালান

হুম ... হ্যাঁ আমি জানতাম এটি বেশি দিন স্থায়ী হবে না ... ZU$3С
বিটিডব্লু

আমি আগেরটি জমা দেওয়ার পরে গতকাল একই পদ্ধতি করার চেষ্টা করছিলাম তবে মনে হয় আমি কিছুটা ক্লান্ত হয়ে পড়েছিলাম।
জোনাথন অ্যালান

28

পাইথন 3 , 124 বাইট

def f(n):
 while n&4369<n/n:n>>=1
 while n&15<1:n>>=4
 return'TJLZSIO'["rēȣc63ıGtIJȱᄑ@'̢̑@@@@Ȳq".index(chr(n))%7]

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

4 b 4 বাইনারি ম্যাট্রিক্স উপস্থাপন করে এমন একটি পূর্ণসংখ্যা n আশা করে । কোনও টেট্রোমিনো পাওয়া না গেলে ছুড়ে দেয়।

লাইন 2 আকৃতিটি ডানদিকে স্লাইড করে যতক্ষণ না 1 1 ডানদিকের কলামে না থাকে। (4369 0001 0001 0001 0001বাইনারি হয়)) লাইন 3 আকৃতিটি কমিয়ে দেয় যতক্ষণ না 1 টি নীচের সারিতে থাকে। একসাথে এই বাঁক যেমন:

    0 1 0 0        0 0 0 0
    1 1 1 0  into  0 0 0 0
    0 0 0 0        0 0 1 0
    0 0 0 0        0 1 1 1

তারপরে আমরা nএই তালিকার সূচকের সন্ধান করব :

 [114  275  547   99   54   15   51
  305   71  116  306  561 4369   64
   39  802  785   64   64   64   64
  562  113   23]
#   T    J    L    Z    S    I    O

সূচকের সমতুল্য মডুলোর 7 এর প্রতিটি কলাম একটি টেট্রোমিনো আকারের সাথে মিলে। In৪ ( @) nকোডটি এই মুহুর্তে be৪ হতে পারে না এমন একটি প্যাডিং মান হিসাবে ব্যবহৃত হয় ।

বিশেষ দ্রষ্টব্য। পরিবর্তে 0কম্পিউটিং দ্বারা ইনপুট জন্য একটি ব্যতিক্রম নিক্ষেপ n/nকরা হয় 1


আপনার বাইনারি স্ট্রিং কেন কাজ করে? পাইথন 3-এ আমার এতে সমস্যা ছিল, মন্তব্য কোডগল্ফ.স্ট্যাককেক্সচেঞ্জ.com
কার্ল ন্যাপফ

পাইথন উত্স কোড এবং পাঠ্য আউটপুটের জন্য ডিফল্ট এনকোডিং হিসাবে ইউটিএফ -8 ব্যবহার করে। তবে পিপিএম ফাইলগুলি ইউটিএফ -8 এ পড়েনি । আপনি যখন চালান print("ÿ"), তখন বাইটগুলি যে লিখিত হয় সেগুলি হয় c3 bf 0a, না ff 0aএবং পিপিএম চিত্রটি আবর্জনায় পরিণত হয়।
লিন

8

এপিএল (ডায়ালগ) , 95 94 93 89 87 বাইট

-২ জাকারাকে ধন্যবাদ ý

প্রয়োজন ⎕IO←0অনেক সিস্টেমে পূর্বনির্ধারিত। বুলিয়ান ম্যাট্রিক্সকে (যে কোনও আকারের!) যুক্তি হিসাবে গ্রহণ করে। প্রদত্ত বিটের সংখ্যা চারটি না হলে কিছুই দেয় না, এবং প্রদত্ত চারটি বিট যদি টেট্রোমিনো গঠন না করে তবে একটি ফাঁকা লাইন।

{4=+/,⍵:'OIZSJLT'/⍨∨/1∊¨(((2 2)4⍴¨1),(0 1⌽¨⊂K2J),(⍳3)⊖¨⊂J1,⍪K31)∘.⍷⍵∘{⌽∘⍉⍣⍵⊢⍺}¨⍳4}

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

ইনপুটটির চারটি ঘূর্ণন তৈরি করে এবং তারপরে প্রতিটি ঘোরার মধ্যে প্রতিটি টেট্রোমিনো সন্ধান করে কাজ করে।

{... } বেনামে ফাংশন যেখানে যুক্তি দ্বারা প্রতিনিধিত্ব করা হয় :

,⍵ ravel (সমতল) আর্গুমেন্ট

+/ যোগফল

4= চারটি কি তার সমান?

: যদি তা হয়, তবে (অন্যথায় কিছুই ফিরিয়ে দেবেন না):

  ⍳4 প্রথম চার d n ডিভাইস; [0,1,2,3]

  ⍵∘{ নির্দিষ্ট বাম আর্গুমেন্ট হিসাবে ইনপুট ব্যবহার করে, প্রতিটি উপর নিম্নলিখিত ফাংশন প্রয়োগ করুন

    বাম আর্গুমেন্ট অর্থাত্ ইনপুট

   ⊢⍺ ফলন যে ( থেকে পৃথক )

   ⌽∘⍉⍣⍵ আয়না ও জায়গা বদল করুন (অর্থাত ঘোরাতে 90 °) বার

  ()∘.⍷ বাহ্যিক "পণ্য", তবে নীচের তালিকার এবং ঘূর্ণনগুলির ফাইন্ড * ব্যবহার করুন:

   3↑1 এক থেকে তিনটি উপাদান নিন, জিরো সহ প্যাডিং; [1,0,0]

   K← যে হিসাবে সংরক্ষণ করুন K

    টেবিল (কলাম ভেক্টর মধ্যে তৈরি); [[1],[0],[0]]

   1, এক প্রিপেন্ড; [[1,1],[1,0],[1,0]]( "জে")

   J← হিসাবে সঞ্চয় J

   ()⊖¨⊂ পুরো জেটি উল্লম্বভাবে ঘোরান, নীচের প্রতিটি পদক্ষেপের:

    ⍳3 প্রথম তিন ɩ ntegers;[0,1,2]

   আমাদের [[[1,1],[1,0],[1,0]],[[1,0],[1,0],[1,1]],[[1,0],[1,1],[1,0]]]("জে", "এল," টি ") রয়েছে

   (), নীচের তালিকাটি আবার চাপ দিন:

    2⊖JJদুটি পদক্ষেপ উল্লম্বভাবে  ঘোরান ; [[1,0],[1,1],[1,0]]( "টি")

    K⌽ এর সারিগুলি যথাক্রমে 1, 0 এবং 0 টি ধাপে ঘোরান; [[0,1],[1,1],[1,0]]( "জেড")

    0 1⌽¨⊂ পুরো অ্যারেটি উল্লম্বভাবে ঘোরান, একবার এবং একবার নয়; [[[0,1],[1,1],[1,0]],[[1,0],[1,1],[0,1]]] ("জেড", "এস")

    (), নীচের তালিকাটি আবার চাপ দিন:

     (2 2)4⍴¨1 2 × 2 ম্যাট্রিক্স এবং 4-উপাদান তালিকার প্রত্যেকটিতে একটিকে পুনরায় আকার দিন; [[[1,1],[1,1]],[1,1,1,1]]("ও", "আমি")

  1∊¨ প্রত্যেকের জন্য কি একজন সদস্য?

  ∨/ অনুভূমিক বা হ্রাস (অর্থাত্ আবর্তন জুড়ে; প্রতিটি আকারের জন্য একটি বুলিয়ান)

  'OIZSLJT'/⍨ স্ট্রিং ফিল্টার করতে ব্যবহার করুন

* তার ডান আর্গুমেন্ট হিসাবে একই আকারের বুলিয়ান অ্যারের রিটার্ন পান, বাম আর্গুমেন্টের সাথে মিলিয়ে সমস্ত সাববারির শীর্ষ বাম কোণটি চিহ্নিত করে with


এই কাজ করবে? {4=+/,⍵:'OIZSJLT'/⍨∨/1∊¨(((2 2)4⍴¨1),(0 1⌽¨⊂K⌽2⊖J),(⍳3)⊖¨⊂J←1,⍪K←3↑1)∘.⍷⍵∘{⌽∘⍉⍣⍵⊢⍺}¨⍳4}
জাকারি

@ জ্যাচারý হ্যাঁ, ধন্যবাদ, সম্পন্ন হয়েছে।
অ্যাডম

7

জাভাস্ক্রিপ্ট (ES6), 242 212 172 164 বাইট

x=>[...'OISZLJT'].filter((z,y)=>x.match(`^0*(${'99,33825|15,51|2145,195|561,2115|57,1059|135,71|1073'.split`,`[y].replace(/\d+/g,C=x=>x?x%2+C(x>>1)+x%2:'|')})0*$`))

কেবল বলটি ঘূর্ণায়মান হওয়ার জন্যই অনুমিত ছিল, তবে আমি late \ _ (ツ) _ / for এর জন্য কিছুটা দেরি করেছি

বিগুলির একটি স্ট্রিং নেয়, সারিগুলির দ্বারা 0s দ্বারা '0001000110001000000'প্রতিনিধিত্ব করে ( উপস্থাপন করা 0001 0011 0010 0000) এবং টেট্রোমিনো উপস্থাপন করে এমন অক্ষর বা কোনও কিছুই নেই এমন অ্যারে প্রদান করে।

এটি যে কোনও বিন্দুতে ইনপুটটিতে টেট্রোমিনো রয়েছে কিনা তা পুরোপুরি উভয় পাশের জিরো দ্বারা বেষ্টিত রয়েছে কিনা তা পরীক্ষা করে এটি কাজ করে et প্রতিটি টেট্রোমিনো এক বা একাধিক বাইনারি সংখ্যার দ্বারা প্রতিনিধিত্ব করে:

0 0 0 0   -> 0000 0110 1100 0000
0 1 1 0   -> 0000001100110000000
1 1 0 0   -> 110011
0 0 0 0   -> 51

0 1 0 0   -> 0100 0110 0010 0000
0 1 1 0   -> 0100001100001000000
0 0 1 0   -> 100001100001
0 0 0 0   -> 2145

তাই আপনি যদি ইনপুট একটি S tetromino রয়েছে চেক করতে, কেবলমাত্র আমরা কিনা তা পরীক্ষা করুন এটা হয় বাইনারি উপস্থাপনা রয়েছে 51বা 2145শুধুমাত্র সঙ্গে, 0উভয় পাশে গুলি।

কয়েকটি কয়েকটি টেট্রোমিনোয় 4 টি অভিমুখ রয়েছে। আপনি যদি এর বাইনারি উপস্থাপনাগুলি দেখেন তবে প্রতিটিটির 2 টি উপস্থাপনা রয়েছে যা কেবলমাত্র অন্য দুটিটির আয়না। স্থান বাঁচানোর জন্য, বাইনারি উপস্থাপনাটি পুনরাবৃত্ত Cফাংশনটির সাথে একই সাথে সামনে এবং পিছনে তৈরি করা হয়, যা কেবলমাত্র দুটি অভিমুখকে রাখার অনুমতি দেয় এবং অন্য দুটি প্রকট থাকে।


চারকোড সহ বিকল্প পদ্ধতি:

x=>[...'OISZLJT'].filter((z,y)=>x.match(`^0*(${[...'÷,êÿ,óî,ûÝ,ëúüÏ,çöïþ,ßýíÞ'.split`,`[y]].map(c=>(C=n=>n?'1e'+(n%4+2)%5-0+C(n>>2):'')(c.charCodeAt())).join`|`})0*$`))

3

রেটিনা , 125 বাইট

s`(.*1){5}.*

{s`.*1111.*
I
s`.*111(.{2,4})1.*
$.1
T`234`\LTJ
s`.*11(.{2,4})11.*
$.1
T`2-90`S\OZ4-9
s`.*4.*

O#$`.
$.%`
O#$^`

এটি অনলাইন চেষ্টা করুন! লিঙ্কটিতে পরীক্ষার ক্ষেত্রে প্লাস থেকে একটি 4 × 4 ম্যাট্রিক্সে রূপান্তর করতে একটি শিরোনাম অন্তর্ভুক্ত থাকে। ব্যাখ্যা:

s`(.*1){5}.*

এতে ইনপুটটি মুছুন যদি এতে 5 1টি থাকে।

{s`.*1111.*
I

ইনপুটটির সমস্ত ঘূর্ণন পরীক্ষা করুন (নীচে দেখুন)। যদি ইনপুটটিতে 1টানা চারটি গুলি থাকে তবে এটি একটি I

s`.*111(.{2,4})1.*
$.1
T`234`\LTJ

এতে যদি তিনটির মধ্যে একটির নীচে পরের লাইনে পরপর তিনটি 1প্লাস একটি 1থাকে তবে উপযুক্ত ফলাফলের অক্ষরে মধ্যবর্তী অক্ষরের সংখ্যাটি ম্যাপ করুন।

s`.*11(.{2,4})11.*
$.1

একইভাবে পরের লাইনে দুটি সংলগ্ন 1গুলি সংলগ্ন দুটি সংলগ্ন 1s এর জন্য।

T`2-90`S\OZ4-9

তবে অন্যথায় অব্যবহৃত 0গুলি ব্যবহার করে আবর্তনের সংখ্যাও গণনা করুন ।

s`.*4.*

এবং যদি খুব বেশি ঘূর্ণন সম্পাদন করা হয় তবে ছেড়ে দিন।

O#$`.
$.%`
O#$^`

অ্যারে স্থানান্তর এবং বিপরীত, এভাবে এটি ঘোরানো।


3

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

Itt6tIl7tl7H15vHe"4:"G@X!HYa]4$v@BIthYaEqY+4=aa]v'OSZLJTI'w)

ইনপুটটি বাইনারি 4 × 4 অ্যারে (ম্যাট্রিক্স), ;সারি বিভাজক হিসাবে ব্যবহার করে । ওউপুট একটি চিঠি বা কোনও টেট্রোমিনো খালি নয়।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন (ফাঁকা ফলাফল শনাক্ত করার জন্য আউটপুটটিতে একটি বিন্দুর সংযোজন রয়েছে)।

ব্যাখ্যা

কোড 90 ডিগ্রির ধাপে 4 × 4 অ্যারের ইনপুটটির 4 টি ঘূর্ণন তৈরি করে। প্রতিটি ঘোরানো অ্যারে উপরে এবং নীচে 2 টি জিরো দিয়ে প্যাড করা হয় যা এটি 8 × 4 অ্যারে রূপান্তর করে। 4 টি অ্যারে উল্লম্বভাবে একটি 32 × 4 অ্যারেতে সংযুক্ত করা হয়। এই সংক্ষিপ্ত অ্যারেতে চারটি আবর্তিত অ্যারেগুলি "বিচ্ছিন্ন" শূন্য-প্যাডিংয়ের জন্য ধন্যবাদ।

সম্ভাব্য patterns টি ধাঁচের প্রতিটি এটি 32 × 4 অ্যারেতে উপস্থিত কিনা তা পরীক্ষা করে দেখানো হয়। এর জন্য একটি লুপ ব্যবহৃত হয়। প্রতিটি প্যাটার্ন দুটি সংখ্যার দ্বারা সংজ্ঞায়িত করা হয়, যা বাইনারিতে প্রকাশ করা হয় যথাযথ 0/1 মাস্ক দেয়। উদাহরণস্বরূপ, সংখ্যা 3, 6"এস" আকারটি সংজ্ঞায়িত করুন।

2 সংখ্যার 7 টি সেট একটি 2 × 7 ম্যাট্রিক্সে সাজানো হয়েছে, যেখান থেকে লুপ প্রতিটি কলামটি ক্রমানুসারে চয়ন করবে। ম্যাট্রিক্সকে সংখ্যার স্ট্যাকের দিকে ঠেলা দিয়ে, একটি ভেক্টরকে প্রতিরোধ করে এবং ২-সারির ম্যাট্রিক্সে পুনরায় আকার দিয়ে সংজ্ঞায়িত করা হয়। যেহেতু "আমি" আকারটি 15 সংখ্যার পরে 0 দ্বারা সংজ্ঞায়িত করা হয়েছে, এটিকে শেষে রেখে 0 টি পুনর্নির্বাচিত ফাংশনটি দ্বারা স্পষ্টভাবে পূরণ করা যায়।

তারপরে মাস্কটি চার দিকের 3 টি জিরো দিয়ে প্যাড করা হয়। ইনপুটটিতে অযাচিত মানগুলি সনাক্ত করতে এটি প্রয়োজনীয়।

32 × 4 অ্যারেতে মাস্ক উপস্থিত রয়েছে কিনা তা দেখতে, পরবর্তীটি বাইপোলার আকারে রূপান্তরিত হয় (অর্থাৎ 0/1 এর পরিবর্তে −1/1) এবং মাস্কের সাথে মিলিত হয়। যেহেতু মুখোশটির 4 টি রয়েছে তাই মিলন ঘটলে কনভোলজ রেজাল্টে কিছু প্রবেশ 4 টির সমান হয়।

লুপের শেষে, 7 টি মিথ্যা / সত্য ফলাফল প্রাপ্ত হয়েছে, যার বেশিরভাগের মধ্যেই সত্য। এটি সম্ভাব্য আউটপুট বর্ণগুলি যুক্ত স্ট্রিংয়ের সাথে সূচীকরণের জন্য ব্যবহৃত হয় is


3

জেলি , 53 বাইট

ZL0ẋW⁸tZµ⁺ZU$3С“©©“œ“Ç¿“¦©¦“ƽ‘;Uḃ2$’¤iЀṀị“÷¶Ė¡µỵỤ»

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

পুরো প্রোগ্রাম। 4x4 নেয়। ছাপে mযদি না একটি tetromino, অন্যথায় ছোট হাতের ছাপে।


... কি বিটের অ্যারেগুলিকে বৈধতা দিচ্ছেন? এটি আমাকে 40 বাইটের মতো সাশ্রয় করবে
ETH প্রোডাকশনগুলি

@ ইথ প্রডাকশন আপনি ইনপুটটি পূর্ণসংখ্যারূপে বা সরাসরি 4x4 বাইনারি অঙ্কের 2D অ্যারে বা 16 বাইনারি অঙ্কের সমতল অ্যারে হিসাবে নিতে পারেন।
এরিক দি আউটগল্ফার

হু, প্রশ্নের উপর
ঝাঁপিয়ে

1

পার্ল 5 , 197 + 1 (-পি) = 198 বাইট

s/(0000)*$//;1while s/(...)0(...)0(...)0(...)0/0${1}0${2}0${3}0${4}/;$_={51,O,15,I,4369,I,54,S,561,S,99,Z,306,Z,547,L,23,L,785,L,116,L,275,J,113,J,802,J,71,J,114,T,562,T,39,T,609,T}->{oct("0b".$_)}

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

ইনপুট হিসাবে 16 বিট স্ট্রিং নেয়। ইনপুট একক টেট্রোমিনো না হলে আউটপুট কিছুই না।

কিভাবে?

দুটি বিকল্পগুলি ইনপুট আকারটি নীচের ডানদিকে "সরান"। ফলস্বরূপ বিট স্ট্রিংটি একটি পূর্ণসংখ্যায় রূপান্তরিত হয়, তারপরে বৈধ পূর্ণসংখ্যার একটি হ্যাশের জন্য পরীক্ষা করা হয়।


1

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

{'TIOJSLZ-'[(¯51 144 64,,∘+⍨12J96 ¯48J64)⍳×/(+/-4×⊢)⍵/,0j1⊥¨⍳4 4]}

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

আরগটি হ'ল বুলিয়ান ভেক্টর।

জটিল মাধ্যম হিসাবে তাদের মাধ্যাকর্ষণ কেন্দ্রে বিন্দুর স্বাক্ষরিত দূরত্বগুলি গণনা করে (বাস্তব এবং কল্পিত অংশটি ∆x, ∆y হয়) এবং জটিল সংখ্যাগুলি একসাথে বহুগুণ করে। এটি টিট্রোমিনোসের মধ্যে পার্থক্য করার জন্য যথেষ্ট ভাল আক্রমণকারী হিসাবে পরিণত হয়েছে।


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