টার্নারি ট্রায়াঙ্গলস


22

এটির ধারণাটি মূলত BIO 2017 q1 থেকে । আমার বাইনারি সিকোয়েন্স চ্যালেঞ্জ থেকে এই চ্যালেঞ্জটি পোস্ট করার জন্য আমি ধারণা পেয়েছি , যেহেতু প্রচুর লোকেরা এটি পছন্দ করে বলে মনে হচ্ছে।

এছাড়াও, এই প্রথম চ্যালেঞ্জ আমি স্যান্ডবক্সে পোস্ট না করে পোস্ট করেছি। যদি কেউ এটি পছন্দ না করে তবে আমি এটি মুছে ফেলব।

বিধি

টেরিনারি (বেস 3) এর অঙ্কগুলির ক্রম নিন; এটি পূর্ববর্তী শূন্যগুলির সংখ্যার সাথে একটি স্ট্রিং, একটি অ্যারে বা সংখ্যাগত মান হিসাবে হতে পারে।

ত্রিভুজের প্রতিটি সারির জন্য, শেষ সারিতে কেবল একটি অঙ্ক না হওয়া পর্যন্ত নীচে একটি সারি তৈরি করা হয়। অন্য দুটি সংখ্যার নীচে একটি অঙ্ক সন্ধান করতে, উপরের এই দুটি অন্যান্য সংখ্যা সমান হলে অঙ্কটি তার উপরে দুটি হিসাবে সমান হবে। অন্যথায়, এটি এমন অঙ্ক হবে যা তাদের উভয়ের সমান নয়। এখানে একটি উদাহরণ:

0 0 1 2 0 1 2 2
 0 2 0 1 2 0 2
  1 1 2 0 1 1
   1 0 1 2 1
    2 2 0 0
     2 1 0
      0 2
       1

আপনি কেবল শেষ সারিটি প্রত্যাবর্তন করবেন বলে আশা করা হচ্ছে।

আপনার কোডটি ছোট করুন।

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

0 -> 0
11 -> 1
10 -> 2
000 -> 0
012 -> 1
21102 -> 2
201021 -> 1
111111 -> 1
1020202020 -> 2
0212121210 -> 0

উত্তর:


9

কাস্তে , 9 বাইট

%3←ΩεẊo_+

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

ব্যাখ্যা

মূল ধারণাটি হ'ল দুটি অঙ্কের ম্যাপিংকে এক হিসাবে f (a, b) = (-ab)% 3 হিসাবে গণনা করা । গল্ফিংয়ের উদ্দেশ্যে আমরা মডুলোটি খুব শেষ অবধি দেরি করতে পারি।

   Ωε       Apply the following function until the list is only one
            element in length.
     Ẋo       Apply the following function to pairs of adjacent values.
       _+       Add the two values and negate the result.
  ←         Take the first (and only) element of this list.
%3          Take it modulo 3.

নীতিগতভাবে, সংশ্লিষ্ট দ্বিপদী সহগের দ্বারা প্রতিটি উপাদানকে গুণিত করে এবং সম -দৈর্ঘ্যের তালিকাগুলির জন্য যোগফলকে -1 দ্বারা গুণ করে সরাসরি ফলাফলটি গণনা করাও সম্ভব , তবে কম বাইটে এটি করার উপায় আমি জানি না।


6

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

td"HYCEsI\

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

ব্যাখ্যা

প্রতিটি জোড় সংখ্যার জন্য, কোডটি রাশি মডুলোর 3 বার গণনা করে The প্রক্রিয়াটি ইনপুট বিয়োগ 1 এর দৈর্ঘ্যের হিসাবে বহুবার পুনরাবৃত্তি হয়।

t        % Implicit input: array of length n. Duplicate
d        % Consecutive differences. Gives an array of length n-1
"        % For each (that is, do n-1 times)
  HYC    %   2-column matrix where each column is a sliding block of length 2
  E      %   Times 2, element-wise
  s      %   Sum of each column
  I\     %   Modulo 3
         % Implicit end. Implicit display

3

পাইথন 2 , 48 বাইট

f=lambda a,*l:-(f(*l)+f(a,*l[:-1]))%3if l else a

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

যথাক্রমে প্রথম এবং শেষ উপাদানগুলি মুছে ফেলা সাবলিস্টগুলিতে পুনরাবৃত্তি করে।

পাইথন 3 এ এটি ক্লিনার হতে পারে যদি এটি আসলে প্যাক করতে পারে f=lambda a,*b,c:...


3

ইমোজিকোড , 242 বাইট

🐋🍨🍇🐖🔢➡️🚂🍇🔂i⏩➖🐔🐕1 0🍇🔂j⏩0i🍇🍊❎😛🍺🔲🐽🐕j🚂🍺🔲🐽🐕➕1j🚂🍇🐷🐕j➖➖3🍺🔲🐽🐕j🚂🍺🔲🐽🐕➕1j🚂🍉🍉🍉🍎🍺🔲🐽🐕0🚂🍉🍉

আমার সি উত্তরের মতো একই অ্যালগরিদম ব্যবহার করে এটি অনলাইন চেষ্টা করুন!



2

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

f[a]=a
f(h:t)=mod(-f t-f(h:init t))3

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

আরও প্রতিসাম্পের উপর 1 বাইট সংরক্ষণ করে:

f[a]=a
f l=mod(-f(tail l)-f(init l))3

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

ধারণাটি সহজ: যথাক্রমে প্রথম এবং শেষ উপাদানটি যথাক্রমে মুছে ফেলা সাবলিস্টগুলিতে ক্রিয়াকলাপ গণনা করুন এবং তাদের সাথে একত্র করুন \a b -> mod(-a-b)3। এটি zipWithএই ফাংশনটি আইংয়ের চেয়ে কম মনে হচ্ছে ।

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

f[a]=mod a 3
f l=f$zipWith((-).(0-))l$tail l

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



2

জে, 23 15 বাইট

3&(|2+/\-)~<:@#

মাইলকে ধন্যবাদ

পুরানো সমাধান:

3|2&(-@+/\)^:(#>1:)^:_]

মার্টিন এেন্ডারের সমাধান দ্বারা অনুপ্রাণিত:

ব্যাখ্যা

3|2&(-@+/\)^:(#>1:)^:_]    | Whole program
                      ]    | Seperates the argument from the _ (infinity)
           ^:(#>1:)^:_     | Do while the length is greater than one
  2&(-@+/\)                | Inverse of the sum of adjacent elements
3|                         | Modulo 3

2
15 বাইট সহ3&(|2+/\-)~<:@#
মাইল

@ মাইলস, হ্যাঁ, আমি কেবল 19 বাইটের জন্য এটি পোস্ট করতে যাচ্ছিলাম 3|((2<.#)-@+/\])^:_- আপনার সত্যই সুন্দর।
ইউনুস

0

ব্যাচ, 122 বাইট

@set/an=2,s=i=l=0
@for %%e in (%*)do @set/al+=1,n^^=3
@for %%e in (%*)do @set/as+=%%e*n,s%%=3,n*=l-=1,n/=i+=1
@echo %s%

দ্বিপদী সম্প্রসারণ ব্যবহার করে। @ মার্টিনএেন্ডার উল্লেখ করেছেন যে, সংখ্যার (প্রথম লুপে গণনা করা হয়) সংখ্যাটি সমান হলে, যোগটি অবহেলা করতে হবে (মডুলো 3), সুতরাং nহয় 1বা 2তদনুসারে সেট করা হয় । দ্বিতীয় লুপটি দ্বি-দ্বিফল সহগের মাধ্যমে যোগফলকে গণনা করে।


0

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

{3|3-2+/⍵}⍣{1=≢⍺}

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

কিভাবে?

2+/⍵ - প্রতিটি দুটি সংলগ্ন আইটেম যোগ করুন

3- - তিনটি থেকে ভেক্টরাইজড বিয়োগ

3| - তিনটি দ্বারা ভেক্টরাইজড মডুলো

- যতক্ষণ না পুনরাবৃত্তি ...

1=≢⍺ - কেবল একটি আইটেম বাকি আছে


0

এপিএল + উইন, 30 28 বাইট

ইউরিলে সৌজন্যে 2 বাইট সংরক্ষণ করা হয়েছে।

n←⎕⋄¯1↑∊⍎¨(⍴n)⍴⊂'n←3|3-2+/n'

ব্যাখ্যা:

n←⎕ Prompt for screen input of the form: 0 0 1 2 0 1 2 2

'n←3|3-2+/n' Successive rows are 3 mod 3 minus successive digit pairs.

(⍴n)⍴⊂ Create a nested vector of the row code, one element per row. 

¯1↑∊⍎¨ Execute each element of row code, flatten result and take final value.

এটি একটি লাইনে এপিএলে লুপিং কোড লেখার একটি উপায়।


আপনার সঠিকতম প্রয়োজন নেই3|
উরিল

@Uriel। ধন্যবাদ।
গ্রাহাম

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