পাস্কেলের ত্রিভুজ তৈরি করুন


35

প্রথম সারিতে 1 দিয়ে শুরু করে প্যাসকের ত্রিভুজ তৈরি করা হয়। পরবর্তী সারিতে, সংখ্যাটি উপরে উপরে বাম এবং ডানদিকে দুটি সংখ্যার যোগফল দ্বারা নির্ধারিত হয়।

প্রদর্শনের জন্য, এখানে পাস্কালের ত্রিভুজটির প্রথম 5 টি সারি রয়েছে:

    1
   1 1
  1 2 1
 1 3 3 1
1 4 6 4 1

চ্যালেঞ্জ

একটি ইনপুট দেওয়া এন (তবে প্রদান করা আপনার নির্বাচিত ভাষায় সবচেয়ে সুবিধাজনক হয়), প্রথম উৎপন্ন এন প্যাসকেলের ত্রিভুজ সারি। আপনি ধরে নিতে পারেন যে n 1 এবং 25 এর মধ্যে সমষ্টিগত একটি পূর্ণসংখ্যা each প্রতিটি সারি এবং প্রতিটি সংখ্যার মধ্যে একটি ফাঁকা স্থান অবশ্যই থাকতে পারে, তবে সেগুলি বাদ দিয়ে আপনি এটি পছন্দ করতে পারেন তবে এটি বিন্যাস করতে পারেন।

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

উদাহরণ I / O

> 1
1
> 9
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1

এনবি এক অর্থে বল বিতরণের
পিটার টেলর

@ পিটার ওলসন: র‌্যাচেট ফ্রিকের "আপনার পছন্দমতো আপনি এটি পছন্দ করতে" তবে এটি ফর্ম্যাট করতে পারেন "এর ব্যাখ্যা সম্পর্কে আপনার মতামত কী? আমি যদি তার ব্যাখ্যা অনুসরণ করে থাকি তবে আমি 18 টি চরিত্রের শেভ করতে পারি।
স্টিভেন রাম্বালস্কি

পুনঃটুইট করেছেন প্রতিটি সারির মধ্যে একটি নতুন লাইন রয়েছে এবং প্রতিটি সংখ্যার মধ্যে একটি স্থান রয়েছে তাই এটি মানদণ্ডটি পূরণ করে।
পিটার ওলসন

@ পিটার ওলসন: স্পষ্টির জন্য ধন্যবাদ। টমাস টি এর অনুমান সম্পর্কে কী যে এন ইতিমধ্যে সংজ্ঞায়িত করা হয়েছে?
স্টিভেন রাম্বালস্কি

4
@ গাফি সম্ভবত না, কোনও উত্তর গ্রহণ করা আমার মনে হয় যে আমি প্রতিযোগিতাটি শেষ করছি এবং নতুন এবং সম্ভবত আরও ভাল উত্তরকে নিরুৎসাহিত করছি।
পিটার ওলসন

উত্তর:


30

জে , 12 টি অক্ষর

":@(!{:)\@i.

   i.5
0 1 2 3 4
   {: I.5
4
   (I.5) {: i.5
1 4 6 4 1
   (! {:) i.5
1 4 6 4 1
   ({:) \ I.5
1 0 0 0 0
1 1 0 0 0
1 2 1 0 0
1 3 3 1 0
1 4 6 4 1
   ": @ ({:) \ I.5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
   ( ": @ ({:।) \ @ ঝ) '' '
+ + ---------------------------------- + +
| - + + ------------------------------ + + |
|| @ | + + ------------------------- - + + ||
|| । || - + + --------------------- + + | আমি |||
|| ||| \ | + + ------------------- + + || |||
|| ||| || - + + --------------- + + ||| |||
|| ||| ||| @ | - + + ---------- + + |||| |||
|| ||| ||| || ": | + - + ------ + || কপি ||
|| ||| ||| || || 2 | - - + + |||||| |||
|| ||| ||| || || || | {: ||||||| |||
|| ||| ||| || || | - - + + |||||| |||
|| ||| ||| || | - + + ------ + + ||||| |||
|| ||| ||| | - + + ---------- + + |||| |||
|| ||| || - + + --------------- + + ||| |||
|| ||| | + + ------------------- + + || |||
|| || - + + --------------------- + + | |||
|| | + + ------------------------- - + + ||
| - + + ------------------------------ + + |
+ + ---------------------------------- + +

1
গল্ফস্ক্রিপ্ট মারছে জে? মজাদার. আপনার কাছে সময় থাকলে আমি এই কোডটির জন্য একটি ব্যাখ্যা দেখতে চাই।
মিঃ উইজার্ড

4
এটি ইতিমধ্যে বিভক্ত হয়ে গেছে, তবে আপনি অতিরিক্ত ইংরেজি চাইলে এখানে এক এক করে লাইন দেওয়া আছে। লাইন 1 i.5প্রথম পাঁচটি প্রাকৃতিক ফেরত দেয়। লাইন 2 {:"লেজ" যুক্ত করেছে (শেষ ফিরে) লাইন 3 তাদের !"আউট" (সংমিশ্রণের সংখ্যা) এর সাথে একত্রিত করে । লাইন 4 (!{:)i.5একই। হুক আউট ফ্যাক্টরিং সুতরাং (!:)একটি অপারেশন যে প্রথম রূপান্তরিত হয় এন প্যাসকেলের ত্রিভুজ n তম লাইনে স্বাভাবিকভাবে। লাইন 5 এটি 0..4 এর সমস্ত উপসর্গ (ব্যাকস্ল্যাশ) এ প্রয়োগ করে তবে জ 0 0 টি অব্যবহৃত দাগগুলিতে পূরণ করে, তাই @স্ট্রিং ফর্ম্যাটিং অপারেশনের সাথে অপারেশনটি সংযুক্ত করা হয় ( ) ":। খুব শীতল জে, upvated।
জেবি

@ জেবি নেই! মানে এখানে ফ্যাকটোরিয়াল? এছাড়াও আমরা ডানদিকে @ থেকে মুক্তি পেতে পারি।
ডিফল্ট

@ আর্টেমইস মোনাডিক !মানে ফ্যাকটোরিয়াল; ডায়াডিক !গণনা সংমিশ্রণ। চূড়ান্ত @মধ্যে ":@(!{:)\@i.এই একটি অনুষঙ্গহীন ক্রিয়া করতে আপনাকে মাত্র নেই।
মুহুর্তের

18

পাইথন, 56 বাইট

a=[1];exec"print a;a=map(sum,zip([0]+a,a+[0]));"*input()

নমুনা ব্যবহার:

echo 9 | python filename.py

উত্পাদন:

[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]

1
লুপ execএড়ানোর জন্য ব্যবহারের চতুর উপায় way for
স্টিভেন রাম্বালস্কি


14

গণিত: 36 (41?)


ম্যাথমেটিকার Binomialফাংশন রয়েছে তবে এটি মজাদার বিষয়টিকে বাইরে নিয়ে যায়। আমি উত্থাপন:

NestList[{0,##}+{##,0}&@@#&,{1},n-1]

উপরের লাইনটি একটি র‌্যাগড অ্যারে রেন্ডার করবে যেমন:

{{1}, {1, 1}, {1, 2, 1}, {1, 3, 3, 1}, {1, 4, 6, 4, 1},
 {1, 5, 10, 10, 5, 1}, {1, 6, 15, 20, 15, 6, 1}}

ম্যাথমেটিকায় এটি যেহেতু এটি একটি প্রাথমিক ফর্ম্যাট তাই আমি ভেবেছিলাম এটি গ্রহণযোগ্য হবে তবে আমি যখন আবার নিয়মগুলি পড়ি তখন আমার মনে হয় এটি নাও হতে পারে। যোগ Grid@করলে মোট 41 টি অক্ষরের জন্য দ্ব্যর্থহীনভাবে গ্রহণযোগ্য আউটপুট তৈরি হবে :

Grid@NestList[{0,##}+{##,0}&@@#&,{1},n-1]

n = 6:

1                       
1   1                   
1   2   1               
1   3   3   1           
1   4   6   4   1       
1   5   10  10  5   1   
1   6   15  20  15  6   1

14

সি, 522

একটি স্ব প্রদর্শনকারী সি উত্তর। পরিষ্কার হতে পারে না! অতিরিক্ত চরিত্র সন্ধানের জন্য বোনাস পয়েন্ট।

#define returns return 0
#define fr for
#define twentyonechexpressis0 0
                                                                                i
                                                                               , x
                                                                              [ 52 ]
                                                                            [ 52] ,j, y
                                                                       ; main (c){fr (;i< c
                                                                    ; i++){ x[i][i]=x[ i][0]= 1
                                                         ; }for(i =2;i<c;i++){for (j=1;j<i;j++){x [i][j] =
                                    1 +x[i][j ]+x[i-1][j-1]+x[i-1] [j]+1-1+1-1+1-1+1-1+1-1+111-11- twentyonechexpressis0 -100-1; }
} ;for(i=0 ;i<c;i++){for(j=0;j<=i;j++){ printf("%3d%c",x[i][j],(1+1+1+1)*(1+1+1+1+1+1+1+1)) ;}putchar(1+1+(1<<1+1)+1+1+1+1+1+111111-111111-1);} /*thiscomment_takes28chars*/ returns; }

4
আমি সাহায্য করতে পারছি না কিন্তু অনুভব করতে পারি না যে এটি কোড গল্ফের বিন্দুটিকে মিস করে। (অতিরিক্ত অক্ষরটি \ বিনোম {5} {4} পজিশনে রয়েছে তা নির্দেশ করেও আমি সাহায্য করতে পারি না)।
পিটার টেলর

2
মজা লাগছিল লিখতে। আমি সাধারণত কোডগল্ফের জন্যই আসি।
21

1
চতুর :) একটি upvote আছে। কোনও বিজয়ী প্রার্থী না হলেও সৃজনশীল!
অ্যাক্যাটিক

11

গল্ফস্ক্রিপ্ট (21 টি অক্ষর)

~]({0\{.@+\}/;1].p}*;

যেহেতু একটি ব্যাখ্যা অনুরোধ করা হয়েছিল:

# Stack contains 'n'
~](
# Stack: [] n
{
    # prev_row is [\binom{i,0} ... \binom{i,i}]
    # We loop to generate almost all of the next row as
    #     [(\binom{i,-1} + \binom{i,0}) ... (\binom{i,i-1} + \binom{i,i})]
    # \binom{i,-1} is, of course, 0
    # Stack: prev_row
    0\
    # Stack: 0 prev_row
    {
        # Stack: ... \binom{i,j-1} \binom{i,j}
        .@+\
        # Stack: ... (\binom{i,j-1} + \binom{i,j}) \binom{i,j}
    }/
    # Stack: \binom{i+1,0} ... \binom{i+1,i} \binom{i,i}
    # unless it's the first time round, when we still have 0
    # so we need to pop and then push a 1 for \binom{i+1,i+1}
    ;1]
    # next_row
    .p
}*
# final_row
;

আপনি চেষ্টা করতে পারেন golf.shinh.org/p.rb?pascal+ ত্রিভুজ
Nabb

আপনি কি কিছু ছদ্ম কোড বা ব্যাখ্যা প্রদান করতে পারেন? আমি যা করছি তা আমি বুঝতে পারি তবে আমি অদলবদল পুরোপুরি বুঝতে পারছি না।
রব

বিস্তারিত ব্যাখ্যা এবং দুর্দান্ত উত্তরের জন্য ধন্যবাদ (+1), তবে আমি এখন আরও বিভ্রান্ত হয়ে পড়েছি। যুক্তি (প্রক্রিয়া) ঠিক বসে নেই।
রব

@ মাইকডট্রিক, ব্যাখ্যাটিতে কিছুটা ত্রুটি ঘটেছে। এখানে একটি সূক্ষ্ম বিন্দুও রয়েছে যার ব্যাখ্যা করা দরকার, তবে যা আমি মিস করেছি কারণ কোডটি লেখার পরে এটি এত দীর্ঘ।
পিটার টেলর

ঠিক আছে, এটা বোঝার জন্য শুরু। আমার চূড়ান্ত প্রশ্নটি কী মুদ্রণ এবং সম্পাদন প্রক্রিয়াটি নীচের থেকে নীচে বা নীচের অংশের (1, 1 1, 1 2 1: উপরে ডাউন, 1 2 1, 1 1, 1: নীচে আপ) থেকে কাজ করে?
রব

7

হাস্কেল, 94 92

f=[1]:[zipWith(+)(0:x)x++[1]|x<-f]
main=readLn>>=mapM_(putStrLn.unwords.map show).(`take`f)

আউটপুট:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

একটি 71 অক্ষরের সংস্করণ যা প্রতিটি সংখ্যার মধ্যে কোনও স্থান মুদ্রণ করে না:

f=[1]:[zipWith(+)(0:x)x++[1]|x<-f]
main=readLn>>=mapM_ print.(`take`f)

আউটপুট:

[1]
[1,1]
[1,2,1]
[1,3,3,1]

mapMপরিবর্তে ব্যবহার করে আপনি একটি অক্ষর সংরক্ষণ করতে পারেন mapM_
dfeuer

7

স্কালা, 81 78 72 70 টি অক্ষর

81 টি অক্ষর: প্রথম প্রচেষ্টা, নির্লজ্জভাবে পাইথন সংস্করণ থেকে অনুলিপি করা হয়েছে :)

var x=Seq(1)
for(i<-1 to args(0).toInt){println(x)
x=(0+:x,x:+0).zipped.map(_+_)}

এটিকে স্ক্রিপ্ট হিসাবে চালান, বা সরাসরি আরপিএলে।

আশ্চর্যজনকভাবে পঠনযোগ্য এবং আইডিয়োমেটিক কিছু দিয়ে 70 টি চর কেটে দিন:

Seq.iterate(Seq(1),readInt)(a=>(0+:a,a:+0).zipped.map(_+_))map println

অথবা সম্পূর্ণ ভিন্ন পদ্ধতির সাথে 72 টি অক্ষর:

0 to(readInt-1)map(i=>println(0 to i map(1 to i combinations(_)size)))

নির্লজ্জ অনুলিপি করার জন্য + 1!
স্টিভেন রুমালস্কি 21

শেষ সংস্করণটি 50 এর মতো রিডইন্টের বিশাল মানগুলির জন্য সতর্কতার সাথে ব্যবহার করা উচিত;)
ব্যবহারকারী অজানা

@ ব্যবহারকারীকে অজানা সম্ভবত এই কারণেই প্রশ্নটি 25 এর উপরের সীমা নির্দিষ্ট করে ...
লুইজি প্লিঞ্জ

এটি সমালোচক হিসাবে বোঝানো হয়নি, ঠিক কৌতূহলীদের জন্য একটি সতর্কবার্তা হিসাবে।
ব্যবহারকারী অজানা

6

রুবি: 51 49 46 টি অক্ষর

(45 টি অক্ষর কোড + 1 অক্ষর কমান্ড লাইন বিকল্প)

p=[];$_.to_i.times{n=0;p p.map!{|i|n+n=i}<<1}

ধন্যবাদ:

  • মান স্যুইচিংয়ের জন্য বিকল্প প্রস্তাব করার জন্য jsvnm (২ টি অক্ষর)
  • পূর্ববর্তী উন্নতির পরে অব্যবহৃত একটি পরিবর্তনীয় চিহ্নিত করার জন্য জিবি (4 টি অক্ষর)

নমুনা রান:

bash-4.4$ ruby -ne 'p=[];$_.to_i.times{n=0;p p.map!{|i|n+n=i}<<1}' <<< 1
[1]

bash-4.4$ ruby -ne 'p=[];$_.to_i.times{n=0;p p.map!{|i|n+n=i}<<1}' <<< 9
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]

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


1
আপনি 2 অক্ষর সংরক্ষণ করতে পারবেনp.map!{|i|(v=n)+n=i}
jsvnm

দুর্দান্ত, @jsvnm! মানুষ, কতক্ষণ আমি একত্রিত হয়ে সেই অংশটি সংক্ষিপ্ত করলাম। ধন্যবাদ।
manatwork

1
হতে পারে একটু দেরি, তবে: কেন ভেরিয়েবল ব্যবহার করবেন v?
জিবি

ভাল ধরা, @ জিবি! এটি ১ ম সংশোধন থেকে পিছনে ফেলেছে, কোথায়… কোথায়… দোহ। যেখানে একরকম অকেজোও ছিল। আমার ধারণা এটি ব্যবহারের সময় পূর্ববর্তী প্রচেষ্টা থেকে আসে .map। ধন্যবাদ.
manatwork

5

জাভাস্ক্রিপ্ট ( 90 85 83 81)

for(n=prompt(o=i='');i++<n;o+='\n')for(s=j=1;j<=i;s=s*(i-j)/j++)o+=s+' ';alert(o)

ডেমো: http://jsfiddle.net/tcRCS/3/

দ্রষ্টব্য : প্রায় n> 30 এর জন্য অনুশীলনে ভাল কাজ করে না কারণ সংখ্যার ওভারফ্লো বিল্ট-ইন পূর্ণসংখ্যার ডেটা টাইপ করে এবং ভাসমান-পয়েন্ট সংখ্যা হয়ে যায়।


সম্পাদনা করুন 1 : রূপান্তর দ্বারা 5 অক্ষরের মুছে whileকরার forএবং বিবৃতি মিশ্রন

সম্পাদনা 2 : s=ভিতরে বিবৃতিটি সরান forএবং 2 টি অক্ষর সংরক্ষণ করুন

সম্পাদনা করুন 3 : মেশা s=1,j=1মধ্যে সূচনাকারী s=j=1এবং 2 অক্ষর সংরক্ষণ


নিস! আপনি "এস = এস * ..." "" এস * = ... "তে পরিবর্তন করে আরও একটি চরিত্র সংরক্ষণ করতে পারেন
ডেরেক কুর্থ

@DerekKurth: আমি চিন্তা ছিল যে, যখন আমি প্রথম অপ্টিমাইজেশন করছেন, কিন্তু যে যুক্তিবিজ্ঞান আপ হায় জগাখিচুড়ি কারণ এটি করা প্রয়োজন s*(i-j)/j, না s*((i-j)/j)
মেল্লামোকব

হুম, আমি এটিকে জ্যাসফিডেলে এস * = ... হিসাবে চেষ্টা করে দেখে মনে হয়েছিল এটি কাজ করে। যদিও আমি কিছু ভুল করেছি।
ডেরেক কুর্থ

1
@ ডেরেককুর্থ: প্রযুক্তিগতভাবে এটি একই রকম, তবে ধারণাটি হল যে আপনি যদি (i-j)ভাগ করে নেওয়ার আগে গুণ করে যান jতবে ভাসমান পয়েন্ট গণিতের প্রয়োজন নেই কারণ ফলাফলগুলি সর্বদা পূর্ণসংখ্যার হওয়া উচিত। আপনি যদি ((i-j)/j)প্রথমে এটি করেন তবে এর দশমিক মানগুলির ফলাফল হবে যা ত্রুটির উত্স হতে পারে এবং খুব কম সময়ে রাউন্ডিং / ট্রান্সকাটিংয়ের জন্য অতিরিক্ত কোডের প্রয়োজন হয়। আপনি এটি না পাওয়া পর্যন্ত আপনি এটি দেখতে শুরু করবেন না n>11এবং আপনি আউটপুটে দশমিক মানগুলি দেখতে পাবেন, যেমন1 11 55 165 330 461.99999999999994 461.99999999999994...
মেল্লামব্যাক

আহ্, তা বোঝা যায়!
ডেরেক কুর্থ

5

আর, 39 টি অক্ষর

আর এই টাস্কটির জন্য খুব সঠিক সরঞ্জাম বলে মনে হচ্ছে :-)

x=1;for(i in 1:n)x=c(print(x),0)+c(0,x)

3
আপনি প্রয়োজনীয়তাগুলির মধ্যে একটি অনুপস্থিত: "একটি ইনপুট দেওয়া (তবে আপনার নির্বাচিত ভাষায় সবচেয়ে সুবিধাজনক)"
স্টিভেন রাম্বালস্কি

@ স্টিভেন, "একটি ইনপুট দেওয়া হয়েছে" ... তাই আমি কি ধরে নিতে পারি যে nদেওয়া হয়েছে? আমি কোড সংশোধন করেছি। এখন কি ঠিক আছে?
টমাস

আমি পিটার ওলসনকে স্পষ্ট করতে বলেছি।
স্টিভেন রাম্বালস্কি

@ স্টেভেন রাম্বালস্কি ইনপুট না নিলে আমি এটি বৈধ মনে করি না। আমি আর জানি না, তাই সংকলকটি এটিকে এমনভাবে তৈরি করে যাতে অপরিজ্ঞাত ভেরিয়েবলগুলি একটি ইনপুট প্রম্পট করে, তাই এটি ঠিক হতে পারে, তবে যদি এটি অন্যান্য ভাষাগুলির মতো হয় তবে আমি এটি মনে করি না।
পিটার ওলসন

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

5

কিউ (25 সংক্ষিপ্ত সংস্করণ সহ 20 টি অক্ষর)

t:{(x-1) (p:{0+':x,0})\1}

অপেক্ষাকৃত ছোট

t:{(x-1){0+':x,0}\1}

নমুনা ব্যবহার:

q)t 4
1
1 1
1 2 1
1 3 3 1

অথবা বিকল্পভাবে, 20 টি অক্ষরt:{(x-1){0+':x,0}\1}
স্কিভি 8'12

দুর্দান্ত, এখন গল্ফস্ক্রিপ্ট সমাধানের চেয়ে কম।
সিএনডিএম

4

awk - 73 অক্ষর

মোটামুটি সরল বাস্তবায়ন:

{for(i=0;i<$1;++i)for(j=i;j>=0;)printf"%d%c",Y[j]+=i?Y[j-1]:1,j--?32:10}

নমুনা রান:

% awk -f pascal.awk <<<10
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1

4

পার্ল, 52 , 49 টি অক্ষর

সম্পাদনা করুন: এর sayপরিবর্তে ব্যবহার করাprint

map{@_=(1,map$_[$_-1]+$_[$_],1..@_);say"@_"}1..<>

4

পার্ল, 47 54 টি অক্ষর

$p=1;map{print"@{[split//,$p]}\n";$p*=11}1..<>

এটি কমান্ড লাইন থেকে একটি সংখ্যা নেয়, তবে কোনও ত্রুটি পরীক্ষা করে না।

ঠিক বুঝতে পেরেছি এটি কেবল এন = 4 পর্যন্ত কাজ করে। এটি আমার এইচডি তে কিছু পুরানো কোড ছিল।

এটি যদিও কাজ করে:

map{@a=(1,map$a[$_-1]+=$a[$_],1..@a);print"@a\n"}a..n

এন যদিও স্ক্রিপ্ট ইনপুট হতে হবে, অথবা এটি আরও একটি অক্ষর হবে।



3

পার্ল, 77 চার্স rs

$o[0]=1;for(1..<>){$"=" ";for(1..$_){$n[$_]=$o[$_]+$o[$_-1]}@o=@n;print"@o
"}

উদাহরণ ইনপুট

5

উদাহরণ আউটপুট

 1
 1 1
 1 2 1
 1 3 3 1
 1 4 6 4 1

3

সি, 132 127 টি অক্ষর

c[25][25],n,i,j;main(){for(scanf("%d",&n);i<n;i++)for(j=0;j<=i;j++)printf("%d%c",c[i][j]=j?c[i-1][j-1]+c[i-1][j]:1,i-j?32:10);}

3

পাস্কাল: 216 192 টি অক্ষর

(প্রকৃত প্রতিযোগী নয়, কেবল একটি সম্মানের উপস্থিতি))

var p:array[0..1,0..25]of LongInt;i,j,n,u:Word;begin
Read(n);u:=0;for i:=1to n do begin
p[1,1]:=1;for j:=1to i do begin
p[u,j]:=p[1-u,j-1]+p[1-u,j];Write(p[u,j],' ')end;u:=1-u;Writeln
end
end.

নমুনা রান:

bash-4.2$ fpc pascal.pas 
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?

bash-4.2$ ./pascal <<< 1
1 

bash-4.2$ ./pascal <<< 9
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 

3

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

এই চ্যালেঞ্জের পরে ভাষা তৈরি হয়েছে

1iq:"tTTY+

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

1       % Push a 1. This will be the first row
iq:     % Take input n. Generate range [1,2,...,n-1]
"       % For each (that is, repeat n-1 times)
  t     %   Duplicate latest row
  TT    %   Push [1 1]
  Y+    %   Convolve latest row with [1 1] to produce next row
        % Implicitly end for each
        % Implicitly display stack contents

অ-প্রতিদ্বন্দ্বিতাপূর্ণ তবে একটি পবিত্র বিপর্যয়, পূর্ববর্তী জমাগুলি থেকে কোনওটিই (জে জে) এটিকে কতটুকু কমিয়ে আনা সম্ভব হয়নি !!!
Abr001am

আমি যথেষ্ট নিশ্চিত যে জেলি বা 05 এএফ 1 ই কম হবে যদিও :-)
লুইস মেন্ডো

2

ডি 134 128 চরগুলি

import std.stdio;void main(){int n,m;int[]l,k=[0,1];readf("%d",&n);foreach(i;0..n){writeln(l=k~0);k=[];foreach(e;l)k~=m+(m=e);}}

9 জন্য আউটপুট হয়

>9
[0, 1, 0]
[0, 1, 1, 0]
[0, 1, 2, 1, 0]
[0, 1, 3, 3, 1, 0]
[0, 1, 4, 6, 4, 1, 0]
[0, 1, 5, 10, 10, 5, 1, 0]
[0, 1, 6, 15, 20, 15, 6, 1, 0]
[0, 1, 7, 21, 35, 35, 21, 7, 1, 0]
[0, 1, 8, 28, 56, 70, 56, 28, 8, 1, 0]

"আপনার পছন্দমতো আপনি এটি ফর্ম্যাট করতে পারেন" এর পুরো সুযোগ নিয়ে; প্রতিটি সংখ্যা এবং একটি লাইন ব্রেকের মধ্যে একটি স্থান রয়েছে

সম্পাদনা lকিছু অক্ষরের শেভ করার জন্য অ্যাসাইনমেন্টটি পুনরায় স্থাপন করে


2

স্কালা, 131 টি অক্ষর

object P extends App{var x=List(1)
while(x.size<=args(0).toInt){println(x.mkString(" "))
x=(0+:x:+0).sliding(2).map(_.sum).toList}}

কমান্ড লাইন থেকে ইনপুট নেয়।

এন = 10 এর আউটপুট:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1

এই সমস্ত 0এস এর সাথে কি :-)?
মেল্লামব্যাক

পুনরায় ব্যবস্থাপনার @ মেল্লামোকব বিট তাদের দূরে সরিয়ে দিয়ে কোডটি ছোট করে তুলেছে। :-)
গ্যারেথ

2

F♯ - 203 টি অক্ষর

কোড গল্ফের একটি রাউন্ডে আমার প্রথম প্রচেষ্টা এবং কার্যকরী প্রোগ্রামিংয়ের প্রথম প্রচেষ্টা। এটি সংক্ষিপ্ত করার সম্ভবত কিছু সুস্পষ্ট উপায় আছে যা আমি এখনও বের করতে পারি নি। এটি VS2010 এর F♯ সংকলক (যা পূর্ববর্তী সংস্করণগুলির তুলনায় ডিফল্টরূপে # লাইট চালানোর প্রভাব রাখে) মেনে চলে এবং F♯ ইন্টারপ্রিটারেও কাজ করে। স্টিডিনের মাধ্যমে ইনপুট গ্রহণ করে। আশা করি ইনপুট / আউটপুটটির জন্য আরও ভাল উপায় থাকলেও! প্রচুর চরিত্র!

open System
let rec C r m =if r=0||m<=0||m>=r then 1 else C(r-1)m+C(r-1)(m-1)
for j = 0 to Convert.ToInt32(Console.ReadLine ()) do (
 [0..j]|>List.map(C j)|>List.iter(fun k->printf "%i " k)
 printf "\n")

2

কেন এই প্রশ্নের কোনও গ্রহণযোগ্য উত্তর নেই?

ভিবিএ - 249 অক্ষর

Sub t(n)
ReDim a(1 To n,1 To n*2)
a(1,n)=1:y=vbCr:z=" ":d=z & 1 & z & y:For b=2 To n:For c=1 To n*2:x=a(b-1,c)
If c>1 Then a(b,c)=a(b-1,c-1)+x
If c<n*2 Then a(b,c)=a(b-1,c+1)+x
d=IIf(a(b,c)<>0,d & z & a(b,c) & z,d):Next:d=d & y:Next:MsgBox d
End Sub

2

পোস্টস্ক্রিপ্ট - 59 টি অক্ষর (63 যদি আপনি গণনা করেন) -dn= সারিগুলির সংখ্যা পেতে করেন)

[1]n{dup ==[0 3 2 roll{dup 3 2 roll add exch}forall]}repeat

সাথে চালানো

gs -q -dn=10 -dBATCH pascal.ps 

পেতে

[1]
[1 1]
[1 2 1]
[1 3 3 1]
[1 4 6 4 1]
[1 5 10 10 5 1]
[1 6 15 20 15 6 1]
[1 7 21 35 35 21 7 1]
[1 8 28 56 70 56 28 8 1]
[1 9 36 84 126 126 84 36 9 1]

2

গণিত 35 টি চর

পাস্কালের ত্রিভুজটি কাটানোর নিস্তেজ ও অলস উপায় এখানে:

Table[n~Binomial~k,{n,0,5},{k,0,n}]

(* out *)
{{1}, {1, 1}, {1, 2, 1}, {1, 3, 3, 1}, {1, 4, 6, 4, 1}, {1, 5, 10, 10,5, 1}}

2

এপিএল, ১৯ 15 টি অক্ষর

পার্টিতে কিছুটা দেরি হয়েছে, সম্ভবত?

{⍪{⍵!⍨⍳⍵+1}¨⍳⍵}

যদিও এটি জে প্রবেশে পরাজিত করে না।

এটি ধরে নিয়েছে যে সূচকের উত্স ( ⎕IO) সেট করা আছে 0। দুর্ভাগ্যক্রমে, একটি সূচক উত্স সহ 1, আমাদের 25 18 টি অক্ষর প্রয়োজন :

{⍪{⍵!⍨0,⍳⍵}¨1-⍨⍳⍵}

দুই আছে আমার হতাশা প্রকাশ করার কোডটিতে ।

ডেমো:

      {⍪{⍵!⍨⍳⍵+1}¨⍳⍵}5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

ব্যাখ্যা

সংক্ষিপ্ত সংস্করণ:

  • ⍳⍵(0 এর সূচক উত্স সহ) 0 থেকে ⍵-1সমেত পর্যন্ত সংখ্যার একটি অ্যারে তৈরি করে , যেখানে ফাংশনটির সঠিক যুক্তি।
  • ⍳⍵+1 0 থেকে সমস্ত সংখ্যা উত্পন্ন করে
  • {⍵!⍨⍳⍵+1}উত্পন্ন চয়ন kপ্রতিটি উপাদান জন্য kমধ্যে ⍳⍵+1। দ্য(যাতায়াতের) অপারেটর কাছাকাছি একটি ফাংশন আর্গুমেন্ট বিনিময়সমূহ, যেমন যে ডান হাত যুক্তি বিপরীতভাবে বাম, এবং ভাইস হয়ে যায়।
  • {⍵!⍨⍳⍵+1}¨⍳⍵(প্রতিটি) অপারেটর ⍳⍵ব্যবহার করে প্রতিটি উপাদানকে পাস করে ¨। ফলাফলটি হ'ল প্রথম দিকের এক মাত্রিক অ্যারে প্যাস্কেলের ত্রিভুজের সারি যুক্ত ।
  • এর একটি আর্গুমেন্ট ফর্মটি একটি মাত্রিক ভেক্টর নেয় এবং এটিকে একটি সারির পরিবর্তে কলাম তৈরি করে। ত্রিভুজের প্রতিটি সারি তার নিজস্ব লাইনে রাখা হয়।

দীর্ঘ উত্তর:

  • কার্যত অন্য সংস্করণ হিসাবে একই , 0 এর সূচক উত্স প্রতিলিপি করতে একটি 1-⍨আগে রাখা হয়
  • 0,⍳⍵1 এর ⍳⍵+1সূচক উত্স সহ 0 এর সূচক উত্সের সাথে প্রতিরূপ ।

2

ম্যাপেল, 46

seq(print(seq(binomial(i,k),k=0..i)),i=0..n-1)

ব্যবহার:

> f:=n->seq(print(seq(binomial(i,k),k=0..i)),i=0..n-1);
> f(3)
    1
   1 1
  1 2 1

2

ভিবিএ, 162 142 102 80 বাইট

টেলর স্কটকে ধন্যবাদ 22 টি বাইট সংরক্ষণ করা।

এটি এখন একটি পুরানো প্রশ্ন তবে আমি ভিবিএর জন্য একটি সংক্ষিপ্ত সমাধান দেখেছি।

[B2].Resize([A1],[A1])="=IF(COLUMN()>ROW(),"""",IF(ROW()=2,1,IFERROR(A1+B1,1)))"

এটি তাত্ক্ষণিক উইন্ডোতে চালানো বোঝানো হয়। A1সক্রিয় কার্যপত্রকের ঘরে ইনপুট রয়েছে । আউটপুট সক্রিয় ওয়ার্কশিটে শুরু হয় B2এবং ব্যবহার করা যায় তবে ইনপুটের ভিত্তিতে অনেকগুলি কক্ষের প্রয়োজন হয়। COLUMN()>ROW()চেক ত্রিভুজ ফাঁকা উপরের ডান রাখে। ROW()=2চেক প্রথম মান তোলে 1ত্রিভুজ শুরু করার। আমি আউটপুটটিকে নীচে নামিয়ে এই চেকটি নামিয়ে দিতে পারতাম, তবে এটি প্রকৃত ত্রিভুজটির আগে প্রচুর বহিরাগত আউটপুট প্রবর্তন করে এবং আমি অনুভব করি না যে এটি চ্যালেঞ্জের চেতনায় ছিল।

আমি মূলত আরও জটিল পদ্ধতি পোস্ট করেছি যা তার সারি এবং কলামের ভিত্তিতে প্রতিটি মান গণনা করে। এই সমস্ত পদ্ধতিটি ইন-সেল সূত্রগুলি ব্যবহার করা। আমি B2এখান থেকে শুরু করি যাতে আমি #REF!ত্রুটি ছাড়াই এর উপরে থাকা সারিটি উল্লেখ করতে পারি । তারপর, এটি কপি এবং pastes কোষের একটি ব্লক ওভার একই সূত্র এন চওড়া এবং এন লম্বা। এর n=25মতো দেখতে ইনপুট এবং আউটপুট :

আউটপুট


খুব দুর্দান্ত উত্তর, তবে আপনি এটি বেশ খানিকটা গল্ফ করতে পারেন। আপনার কোনও ফাংশন আউটপুট মান না থাকায় রূপান্তর Function p(r)করা Sub p(r), স্থানটি সরিয়ে debug.? c(n,k);এবং if-then-elseএকক লাইনে মাল্টলাইন স্টেটমেন্ট রূপান্তরিত করা ( If k Then c=c(n-1,k-1)*n/k Else c=1) বাইট- 130
টেলর স্কট

@ টেলরস্কট ধন্যবাদ! আমি গল্ফিংয়ে বেশ নতুন এবং সাধারণভাবে প্রোগ্রামিংয়ে কিছুটা কম নতুন। লাইন ব্রেক হওয়ার কারণে আমি 142 গণনা করেছি। থেকে আমি যা খুঁজে পাইনি , ঐ গণনা অনুমিত হয়।
ইঞ্জিনিয়ার টোস্ট

আহ, আপনি ঠিক আছে, আমি আমার নতুন লাইন গণনা করতে ভুলবেন হয় নি, এবং এটি সক্রিয় আউট, অন্তত এক অন্য golfing কৌতুক For n=0 To...করতে ঘনীভূত করা যাবে For n=0To...কোডের আমার সংস্করণ আনয়ন Sub p(r):For n=0To r-1:For k=0To n:Debug.?c(n,k);:Next:Debug.?:Next:End Sub Function c(n,k):If k Then c=1 Else c=c(n-1,k-1)*n/k[গৃহস্থালির কাজ (10)] End Functionএকটি বাইট গণনা সঙ্গে139
টেলর স্কট

এটির দ্বিতীয় পর্যালোচনা থেকে বোঝা যায় যে আপনি যদি কোনও সহায়ক ফাংশন সহ তাৎক্ষণিক উইন্ডো ফাংশনটি ভাঙেন তবে আপনি এটি 112 বাইটে নামিয়ে আনতে পারেন (তাত্ক্ষণিক উইন্ডো ফাংশন: For n=0To[A1-1]:For k=0To n:?c(n,k);:Next:?:Nextসহায়ক ফাংশন Function c(n,k) If k Then c=c(n-1,k-1)*n/k Else c=1 End Function:)
টেলর স্কট

1
@ টেলরস্কোট কেবলমাত্র তাদের পুরোপুরি ফেলে দেওয়ার বিষয়ে কী? সূত্রের পরিবর্তনের সাথে এটি ঠিকঠাক কাজ করে। আমি মনে করি যে B2পরিবর্তে শুরু হওয়া আউটপুট A1গ্রহণযোগ্য।
ইঞ্জিনিয়ার টোস্ট

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