Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #42041 > unrolled thread
| Started by | "WJ" <w_a_x_man@yahoo.com> |
|---|---|
| First post | 2015-09-17 03:08 +0000 |
| Last post | 2015-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.
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
| From | "WJ" <w_a_x_man@yahoo.com> |
|---|---|
| Date | 2015-09-17 03:08 +0000 |
| Subject | Re: 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]
| From | dunno <dunno@dunno.dunno> |
|---|---|
| Date | 2015-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