Pascal's triangle: Difference between revisions
Content added Content deleted
(Added DWScript) |
(CoffeeScript) |
||
Line 322: | Line 322: | ||
[1])) |
[1])) |
||
</lang> |
</lang> |
||
=={{header|CoffeeScript}}== |
|||
This version assumes n is an integer and n >= 1. It efficiently computes binomial coefficients. |
|||
<lang coffeescript> |
|||
pascal = (n) -> |
|||
width = 6 |
|||
for r in [1..n] |
|||
s = ws (width/2) * (n-r) # center row |
|||
output = (n) -> s += pad width, n |
|||
cell = 1 |
|||
output cell |
|||
# Compute binomial coefficients as you go |
|||
# across the row. |
|||
for c in [1...r] |
|||
cell *= (r-c) / c |
|||
output cell |
|||
console.log s |
|||
ws = (n) -> |
|||
s = '' |
|||
s += ' ' for i in [0...n] |
|||
s |
|||
pad = (cnt, n) -> |
|||
s = n.toString() |
|||
# There is probably a better way to do this. |
|||
cnt -= s.length |
|||
right = Math.floor(cnt / 2) |
|||
left = cnt - right |
|||
ws(left) + s + ws(right) |
|||
pascal(7) |
|||
</lang> |
|||
output |
|||
<pre> |
|||
> coffee pascal.coffee |
|||
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 |
|||
</pre> |
|||
=={{header|Common Lisp}}== |
=={{header|Common Lisp}}== |