Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #42041 > unrolled thread

Re: Pascal's Triangle

Started by"WJ" <w_a_x_man@yahoo.com>
First post2015-09-17 03:08 +0000
Last post2015-09-17 04:01 +0000
Articles 2 — 2 participants

Back to article view | Back to comp.lang.forth

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Pascal's Triangle "WJ" <w_a_x_man@yahoo.com> - 2015-09-17 03:08 +0000
    Re: Pascal's Triangle dunno <dunno@dunno.dunno> - 2015-09-17 04:01 +0000

#42041 — Re: Pascal's Triangle

From"WJ" <w_a_x_man@yahoo.com>
Date2015-09-17 03:08 +0000
SubjectRe: Pascal's Triangle
Message-ID<mtdarh$8pr$1@dont-email.me>
WJ wrote:

> WJ wrote:
> 
> > Print the first 16 rows of Pascal's Triangle.
> > 
> > Gauche Scheme:
> > 
> > (let1 row '(1)
> >   (dotimes (16)
> >     (print ((#/.(.*)./ (x->string row)) 1))
> >     (set! row (map + (cons 0 row) `(,@row 0)))))
> > 
> > 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
> > 1 10 45 120 210 252 210 120 45 10 1
> > 1 11 55 165 330 462 462 330 165 55 11 1
> > 1 12 66 220 495 792 924 792 495 220 66 12 1
> > 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
> > 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
> > 1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1
> 
> Oforth:
> 
> func: pt(i, row) {
>   i ==0 ifTrue: [ return ]
>   row println
>   [0] row +  row [0] +  zipWith(#+)  pt( i -- )}
> 
> pt(16, [1])
> 
> [1]
> [1, 1]
> [1, 2, 1]

: pt(i, row) {
  row println
  i 1 ==  ifTrue: [ return ]
  [0] row +  row [0] +  zipWith(#+)  i 1 -  pt }

pt(12, [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]
[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]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
[1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1]

[toc] | [next] | [standalone]


#42042

Fromdunno <dunno@dunno.dunno>
Date2015-09-17 04:01 +0000
Message-ID<mtddu5$n90$1@news.mixmin.net>
In reply to#42041
"WJ" <w_a_x_man@yahoo.com> wrote:
> WJ wrote:
> 
>> WJ wrote:
>> 
>>> Print the first 16 rows of Pascal's Triangle.
>>> 
>>> Gauche Scheme:
>>> 
>>> (let1 row '(1)
>>>   (dotimes (16)
>>>     (print ((#/.(.*)./ (x->string row)) 1))
>>>     (set! row (map + (cons 0 row) `(,@row 0)))))
>>> 
>>> 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
>>> 1 10 45 120 210 252 210 120 45 10 1
>>> 1 11 55 165 330 462 462 330 165 55 11 1
>>> 1 12 66 220 495 792 924 792 495 220 66 12 1
>>> 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
>>> 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
>>> 1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1
>> 
>> Oforth:
>> 
>> func: pt(i, row) {
>>   i ==0 ifTrue: [ return ]
>>   row println
>>   [0] row +  row [0] +  zipWith(#+)  pt( i -- )}
>> 
>> pt(16, [1])
>> 
>> [1]
>> [1, 1]
>> [1, 2, 1]
> 
>> pt(i, row) {
>   row println
>   i 1 ==  ifTrue: [ return ]
>   [0] row +  row [0] +  zipWith(#+)  i 1 -  pt }
> 
> pt(12, [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]
> [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]
> [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
> [1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1]

Had no chance to meet Oforth yet, but I wonder where the "ifTrue" stuff is
coming from. Isn't it sound a little bit strange from the point of view of
the Forth programmer?

-- 
dunno

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.forth


csiph-web