সিমমে-ট্রাই করুন এই ত্রিভুজ ট্রায়াল


17

একটি স্ট্রিং যার দৈর্ঘ্য একটি ধনাত্মক ত্রিভুজাকার সংখ্যা (1, 3, 6, 10, 15 ...) কিছু স্থান এবং নিউলাইন যুক্ত করে (এবং এটি একই পাঠের ক্রমে রেখে) একটি "সমবাহু পাঠের ত্রিভুজ" হিসাবে সাজানো যেতে পারে।

উদাহরণস্বরূপ, দৈর্ঘ্য 10 স্ট্রিং ABCDEFGHIJহয়ে যায়:

   A
  B C
 D E F
G H I J

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা এই জাতীয় স্ট্রিং গ্রহণ করে, কেবলমাত্র এতে অক্ষর থাকবে 0এবং 1। (আপনি ইনপুটটি বৈধ বলে ধরে নিতে পারেন))

ফলাফল "সমতুল্য পাঠ্য ত্রিভুজ" এর জন্য, চারটি সংখ্যার একটির আউটপুট (মুদ্রণ বা প্রত্যাবর্তন) যা প্রদর্শিত প্রতিসাম্যের ধরণকে বোঝায়:

  • 2ত্রিভুজের দ্বিপক্ষীয় প্রতিসাম্য থাকলে আউটপুট । অর্থাত্ এর কোনও এক কোণ থেকে বিপরীত দিকের মিডপয়েন্টে প্রতিসাম্যের একটি লাইন রয়েছে।

    উদাহরণ:

     0
    1 1
    
     1
    0 1
    
      0
     0 1
    0 1 0
    
       1
      1 1
     1 0 1 
    0 1 1 1
    
  • 3যদি ত্রিভুজের ঘূর্ণিত প্রতিসাম্য থাকে তবে আউটপুট । অর্থাৎ এটি কোনও ভিজ্যুয়াল পরিবর্তন ছাড়াই 120 ated ঘোরানো যেতে পারে।

    উদাহরণ:

       0
      1 0
     0 1 1
    0 1 0 0
    
       0
      0 1
     1 0 0
    0 0 1 0
    
        1
       0 1
      1 1 1
     1 1 1 0
    1 0 1 1 1
    
         1
        0 1
       0 0 1
      1 0 0 0
     1 0 0 0 0
    1 0 0 1 1 1
    
  • 6ত্রিভুজটির দ্বিপাক্ষিক এবং ঘূর্ণমান উভয় প্রতিসাম্য থাকলে আউটপুট । অর্থাত এটি উভয় outputting জন্য শর্ত মিলে যায় 2এবং 3

    উদাহরণ:

    0
    
    1
    
     0
    0 0
    
      1
     0 0
    1 0 1
    
       0
      0 0
     0 1 0
    0 0 0 0
    
  • আউটপুট 1যদি ত্রিভুজের দ্বিপক্ষীয় বা ঘূর্ণমান প্রতিসাম্য না থাকে।

    উদাহরণ:

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

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। টাইব্রেকার এর আগের উত্তর।

Anচ্ছিক ট্রেলিং নতুনলাইনটি বাদ দিয়ে ইনপুট স্ট্রিংয়ে স্থান / নিউলাইন প্যাডিং বা কাঠামো নাও থাকতে পারে - এটি সাধারণ 0এবং এর আকারের হওয়া উচিত 1

ইচ্ছা যদি আপনি কোন দুটি স্বতন্ত্র ব্যবহার করতে পারেন মুদ্রণযোগ্য হওয়া ASCII স্থানে অক্ষর 0এবং 1

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

উদাহরণ থেকে সরাসরি নেওয়া।

011 -> 2
101 -> 2
001010 -> 2
1111010111 -> 2
0100110100 -> 3
0011000010 -> 3
101111111010111 -> 3
101001100010000100111 -> 3
0 -> 6
1 -> 6
000 -> 6
100101 -> 6
0000100000 -> 6
110000 -> 1
001101 -> 1
1101111111 -> 1
111111000111111 -> 1

120 ° দ্বারা কোনও ইনপুট "ঘোরানো" অবশ্যই একই আউটপুটটির ফলস্বরূপ।


এই শিরোনামটি কেবল বেদনাদায়ক ......
Rɪᴋᴇʀ

9
@ EᴀsᴛᴇʀʟʏIʀᴋ এটিকে এড়াতে কেবল ত্রি।
ক্যালভিনের শখ 15

@ হেলকাহোম্বা কেন ... কেন ...
ক্লিমেজিক

উত্তর:


9

সিজেম, 37 29 28 27 বাইট

3 বাইট সংরক্ষণের জন্য Sp3000 ধন্যবাদ।

q{T):T/(\s}h]{z_Wf%_}3*])e=

পরীক্ষা স্যুট.

এটি এই চ্যালেঞ্জ থেকে কিছু ত্রিভুজ ঘূর্ণন কৌশল পুনরায় ব্যবহার করে

এটি একই বাইট গণনার জন্যও কাজ করে:

q{T):T/(\s}h]3{;z_Wf%_}%)e=

ব্যাখ্যা

প্রথমত, উপরে বর্ণিত ত্রিভুজ পোস্টটি থেকে একটি দ্রুত পুনরুদ্ধার। আমরা একটি 2 ডি (র‌্যাগড) তালিকা হিসাবে ত্রিভুজটি উপস্থাপন করি, যেমন

[[0 1 1]
 [0 0]
 [0]]

ত্রিভুজটির প্রতিসম গ্রুপে 6 টি উপাদান রয়েছে। ত্রিভুজটি ঘোরার মাধ্যমে 3 দৈর্ঘ্যের চক্র এবং কিছু অক্ষ বরাবর মিরর দিয়ে 2 এর চক্র রয়েছে। সুবিধার্থে, ঘূর্ণন দুটি পৃথক প্রতিবিম্ব সঞ্চালনের অনুরূপ। এটি করার জন্য আমরা নিম্নলিখিত প্রতিচ্ছবিগুলি ব্যবহার করব:

  1. তালিকাটি স্থানান্তরিত করার অর্থ এটি মূল তির্যক বরাবর প্রতিফলিত হয়, তাই আমরা পেয়ে যাব:

    [[0 0 0]
     [1 0]
     [1]]
    
  2. প্রতিটি সারি বিপরীত করা একটি প্রতিচ্ছবি প্রতিনিধিত্ব করে যা উপরের দুটি কোণকে অদলবদল করে। আমরা যে স্থানান্তর পেয়েছি তার ফলস্বরূপ এটি প্রয়োগ করা:

    [[0 0 0]
     [0 1]
     [1]]
    

এই দুটি রূপান্তর ব্যবহার করে এবং মধ্যবর্তী ফলাফল রেখে আমরা ইনপুটটির সমস্ত ছয়টি প্রতিসাম্য তৈরি করতে পারি।

নোটের আরও একটি বিষয় হ'ল এই তালিকার প্রতিস্থাপনের আচরণ:

[[0]
 [1 0]
 [1 0 0]
 []]

কারণ ইনপুট বিভক্ত করার পরে আমরা এটি শেষ করব। সুবিধামতভাবে, স্থানান্তরিত হওয়ার পরে, সিজেম সমস্ত লাইনগুলি বাম দিকে ফ্লাশ করে, যার অর্থ এটি আসলে বহিরাগত থেকে মুক্তি পায় []এবং এটিকে এমন একটি রূপে নিয়ে আসে যা উপরের দুটি রূপান্তরের জন্য দরকারী (প্রতিচ্ছবি প্রতিসাম্যের বাইরে ত্রিভুজের আসল বিন্যাস পরিবর্তন না করে):

[[0 1 1]
 [0 0]
 [0]]

উপায় ছাড়াই, এখানে কোড:

q       e# Read input.
{       e# While the input string isn't empty yet...
  T):T  e#   Increment T (initially 0) and store it back in T.
  /     e#   Split input into chunks of that size.
  (     e#   Pull off the first chunk.
  \s    e#   Swap with remaining chunks and join them back together
        e#   into a single string.
}h
]       e# The stack now has chunks of increasing length and an empty string
        e# as I mentioned above. Wrap all of that in an array.
{       e# Execute this block 3 times...
  z_    e#   Transpose and duplicate. Remember that on the first iteration
        e#   this gets us a triangle of the desired form and on subsequent
        e#   iterations it adds one additional symmetry to the stack.
  Wf%_  e#   Reverse each row and duplicate.
}3*
        e# The stack now has all 6 symmetries as well as a copy of the
        e# last symmetry.
]       e# Wrap all of them in a list.
)       e# Pull off the copy of the last symmetry.
e=      e# Count how often it appears in the list of symmetries.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.