ক্লার্কের ত্রিভুজ


10

ঠিক আছে আমি সম্প্রতি একটি ত্রিভুজ কিক কিছুটা ছিল তাই এখানে অন্য এক।

ক্লার্কের ত্রিভুজ একটি ত্রিভুজ যেখানে প্রতিটি সারির বামতম প্রবেশদ্বারটি 1 এবং ডানদিকের প্রবেশগুলি 6 এর গুণক দ্বারা গঠিত যা সারি সংখ্যা বাড়ার সাথে সাথে বৃদ্ধি পায়। এখানে একটি দৃশ্যায়ন

     1 6
    1 . 12
   1 . . 18
  1 . . . 24
 1 . . . . 30
1 . . . . . 36

পাস্কেলের ত্রিভুজের মতো অন্য সমস্ত এন্ট্রিগুলি তাদের ডান এবং উপরের বামে সংখ্যার যোগফল।

এখানে প্রথম কয়েকটি সারি পূরণ করা হয়েছে

          1   6
        1   7  12
      1   8  19  18
    1   9  27  37  24
  1  10  36  64  61  30
1  11  46  100 125 91  36

কার্য

একটি সারি নম্বর দেওয়া হয়েছে (উপরে থেকে শুরু করে) এবং একটি কলাম নম্বর (সেই সারিটির প্রথম অ-শূন্য আইটেম থেকে শুরু করে) সেই নির্দিষ্ট কক্ষের মান আউটপুট দেয়। উভয় ইনপুট 1 বা 0 সূচকযুক্ত হতে পারে (আপনি যদি চান তবে আপনি মিশ্রিত এবং মেলাতে পারেন)। ত্রিভুজের সীমানার বাইরে অপরিজ্ঞাপিত এবং এই মানগুলির জন্য জিজ্ঞাসা করা হলে আপনি যা ইচ্ছা তা করতে পারেন।

এটি , লক্ষ্যটি হ'ল আপনার সমাধানে বাইটের সংখ্যা হ্রাস করা।

OEIS A046902


1
আমরা কি প্রথম সারিতে শূন্য দিয়ে একটি সমাধান তৈরি করতে পারি?
ওএআইএস

1
@ জার্গহেলসারম্যান যেহেতু এখানে সংজ্ঞায়িত ত্রিভুজটির সীমার বাইরে নয় আপনি যা চান তা করতে পারেন।
অ্যাডহক গার্ফ হান্টার

উত্তর:


7

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

[lBB]i:"TTY+]i)

প্রথম ইনপুটটি 0-ভিত্তিক সারি; দ্বিতীয়টি 1-ভিত্তিক কলাম।

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

ব্যাখ্যা

[lBB]   % Push [1 6 6]
i       % Input: row number (0-based)
:"      % Repeat that many times
  TT    %   Push [1 1]
  Y+    %   Convolution, increasing size. This computes the sum of overlapping
        %   pairs, including the endpoints. So for example [1 6 6] becomes
        %   [1 7 12 6], which will later become [1 8 19 18 6], ...
]       % End
i       % Input: column number (1-based)
)       % Use as index. Implicit display


5

সিজেম , 22 18 বাইট

-4 বাইটস মার্টিন ইন্ডারকে ধন্যবাদ

X6_]ri{0X$+.+}*ri=

ইনপুট হয় (0-based row) (0-based column)

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

ব্যাখ্যা

X6_]  e# Push the list [1 6 6]. This is the first row, but each row will have an extra 6 at
      e# the end, which is out of bounds.
ri    e# Push the first input as an integer.
{     e# The following block calculates the next row given a row on top of the stack:
 0X$+ e#  Copy the top list on the stack and prepend 0.
 .+   e#  Element-wise addition with the list before prepending 0. This adds each element of
      e#  with the one to its left, except the initial 1 gets added to 0 and the final number
      e#  gets added to the out-of-bounds 6. The out-of-bounds 6 is unchanged since one list
      e#  is longer.
}*    e# Run this block (row index) times.
ri=   e# Get the (column index)th item of the final list.

পেয়ারওয়াই অঙ্কগুলি পাওয়ার জন্য একটি আলাদা কৌশল হ'ল একটি অনুলিপি বামে স্থানান্তর করা এবং ব্যবহার .+। সাধারণত এটির সমস্যাটি এটি সংক্ষিপ্তকরণ ব্যতীত পিছনের উপাদানটি ধরে রাখে (যা অপসারণ করতে বাইট ব্যয় হয়), তবে এই ক্ষেত্রে আসলে বাইটগুলি সংরক্ষণ করে কারণ তখন আপনাকে 6প্রতিটি পুনরাবৃত্তিতে কোনও যোগ করার দরকার নেই । আপনি আরও বেশি বাইট সংরক্ষণ করতে পারেন কারণ আপনি কেবলমাত্র 0একটি অনুলিপিটি প্রিনড করলে বাম দিকে সরিয়ে ফেলা বিনামূল্যে :X6_]ri{0X$+.+}*ri=
মার্টিন ইন্ডার

_0\+পরিবর্তে 0X$+একই বাইট গণনা যদি আপনি চান।
মার্টিন ইন্ডার

@ মার্টিনএন্ডার ওহ আমি দেখছি, প্রতিটি সারিটির শেষে আপনি অতিরিক্ত 6 পেয়ে যা সীমা ছাড়িয়ে গেছে সুতরাং এটি কোনও ব্যাপার নয়। চতুর, ধন্যবাদ।
বিড়াল বিড়াল



3

পাইথন 3 , 64 60 52 বাইট

f=lambda r,c:c<2or c>r and r*6or f(r-1,c-1)+f(r-1,c)

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

1-ইনডেক্সিং ব্যবহার করে পুনরাবৃত্ত সমাধান। গল্ফের খাতিরে আউটপুটগুলি 1 এর পরিবর্তে "সত্য" হয়।


ধন্যবাদ:

  • 4 টি বাইট সংরক্ষণের জন্য @totallyhuman!
  • 8 বাইট সংরক্ষণের জন্য রড!


2
52 বাইটগুলি যদি / অন্যটি বুলিয়ান অপারেটরগুলির সাথে এবং আরও নমনীয় আউটপুট সহ প্রতিস্থাপন করে
রড

@ রড, এটি একটি উজ্জ্বল সমাধান। আমি এখনও মাথাটি কেন এটি কাজ করে তার চারপাশে মোড়ানোর চেষ্টা করছি। আমি এখনও এখানে মোটামুটি নতুন (এটি সাইটে কেবল আমার দ্বিতীয় উত্তর), সুতরাং আমি প্রোটোকলের বিষয়ে অনিশ্চিত: আপনি কি পাইথন 3 থেকে 2 স্যুইচ করা সত্ত্বেও আমার উত্তরটিতে আপনার পুনর্বিবেচনাটি অন্তর্ভুক্ত করা উচিত?
চেজ ভোগেলি

3
@ আইকোসাহেড্রন সেই ক্ষেত্রে অজগর সংস্করণটি অপ্রাসঙ্গিক, সুতরাং আপনার এটি মনে করার দরকার নেই। সাধারণত, বৈশিষ্ট্যগুলি কাজে লাগাতে পাইথন সংস্করণগুলির মধ্যে স্যুইচিংকে ঠিক মনে করা হয়।
ইউরিয়েল

@ ইউরিয়েল স্পষ্টতার জন্য আপনাকে ধন্যবাদ।
চেজ ভোগেলি


1

গণিত, 32 বাইট

b=Binomial;b[#,#2-1]6+b[#-1,#2]&

ইনপুট

[সারি, কলাম]
[1-ইনডেক্সড, 0-সূচী]


1

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

f=(r,c)=>c?r>c?f(--r,c)+f(r,--c):r*6:1

নেতিবাচক কলামগুলির জন্য ক্র্যাশ, এবং নেতিবাচক সারি বা ওভারলারেজ কলামগুলির জন্য ছয়টির বহুগুণ প্রদান করে।


1

সি # (.নেট কোর) , 44 বাইট

f=(c,r)=>c<=1?1:c>r?6*r:f(c-1,r-1)+f(c,r-1);

কলাম তারপর সারি লাগে, উভয় 1-ইনডেক্স করা। ইনপুট সোয়াপিং দ্বারা সারি তারপর কলাম নিতে পারেন: (r,c)row * 6ডানদিকে (যেমন column > row + 1) 1গণ্ডির বাইরে স্থানাঙ্কের জন্য এবং বাম দিকের সীমানার বাইরে স্থানাঙ্কের জন্য ফিরে আসবে (যেমন )column < 1 ) ।


1

পিএইচপি , 64 বাইট

পুনরাবৃত্তি ফাংশন

সারিগুলি 1-ইনডেক্সিং কলাম 0-ইনডেক্সিং

সারি = 0 এবং কলাম = 0 এর আউটপুট OEIS ক্রম 0 এর মতো

function f($r,$c){return$c-$r?$c?f($r-=1,$c-1)+f($r,$c):1:$r*6;}

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

পিএইচপি , 126 বাইট

সারিগুলি 1-ইনডেক্সিং কলাম 0-ইনডেক্সিং

সারি = 0 এবং কলাম = 0 এর আউটপুট OEIS ক্রম 0 এর মতো

for(;$r<=$argv[1];$r++)for($z++,$c=~0;++$c<$z;)$t[+$r][$c]=$c<$r?$c?$t[$r-1][$c-1]+$t[$r-1][$c]:1:$r*6;echo$t[$r-1][$argv[2]];

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


0

আর , 77 বাইট

Reduce(function(x,y)zoo::rollsum(c(0,x,6),2),double(scan()-1),c(1,6))[scan()]

zooগ্রন্থাগার প্রয়োজন ; স্টিডিন থেকে পড়ে (ইনপুটগুলি দুটি নিউলাইন দ্বারা আলাদা করা হয়) এবং NAসীমা ছাড়াই সিলেকশন সহ মান প্রদান করে।

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


0

জেলি , 13 বাইট

,"’U0¦c/x6,1S

একটি মান্ডিক লিঙ্ক [row, entry](এন্ট্রিগুলির জন্য 0-সূচক, সারিগুলির জন্য 1-সূচক) একটি তালিকা নিয়েছে, মানটি ফিরিয়ে দিচ্ছে।

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

কিভাবে?

,"’U0¦c/x6,1S - Link: list of numbers, [row, entry]
  ’           - decrement     -> [row-1, entry-1]
 "            - zip with:
,             -   pair        -> [[row, row-1], [entry, entry-1]]
     ¦        - sparse application of:
   U          -   upend
    0         - for indexes: 0 -> [[row, row-1], [entry-1, entry]]
       /      - reduce by:
      c       -   choose       -> [(row choose entry-1), (row-1 choose entry)]
         6,1  - 6 paired with 1 = [6,1]
        x     - times        i.e. [a, a, a, a, a, a, a, b]
            S - sum            -> 6*(row choose entry-1) + (row-1 choose entry)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.