Lah numbers: Difference between revisions

Content added Content deleted
m (→‎{{header|VBScript}}: Right trans tag)
Line 1,329: Line 1,329:
</pre>
</pre>


=={{header|Ruby}}==
Works with Ruby 3.0 (end-less method; end-less and begin-less range).
<lang ruby>def fact(n) = n.zero? ? 1 : 1.upto(n).inject(&:*)

def lah(n, k)
return 0 if n < 1
case k
when 1 then fact(n)
when n then 1
when (..1),(n..) then 0
else (fact(n)*fact(n-1)) / (fact(k)*fact(k-1)) / fact(n-k)
end
end
r = (0..12)
puts "Unsigned Lah numbers: L(n, k):"
puts "n/k #{r.map{|n| "%11d" % n}.join}"

r.each do |row|
print "%-4s" % row
puts "#{(0..row).map{|col| "%11d" % lah(row,col)}.join}"
end

puts "\nMaximum value from the L(100, *) row:";
puts (1..100).map{|a| lah(100,a)}.max
</lang>
{{out}}
<pre>Unsigned Lah numbers: L(n, k):
n/k 0 1 2 3 4 5 6 7 8 9 10 11 12
0 0
1 0 1
2 0 2 1
3 0 6 6 1
4 0 24 36 12 1
5 0 120 240 120 20 1
6 0 720 1800 1200 300 30 1
7 0 5040 15120 12600 4200 630 42 1
8 0 40320 141120 141120 58800 11760 1176 56 1
9 0 362880 1451520 1693440 846720 211680 28224 2016 72 1
10 0 3628800 16329600 21772800 12700800 3810240 635040 60480 3240 90 1
11 0 39916800 199584000 299376000 199584000 69854400 13970880 1663200 118800 4950 110 1
12 0 479001600 2634508800 4390848000 3293136000 1317254400 307359360 43908480 3920400 217800 7260 132 1

Maximum value from the L(100, *) row:
44519005448993144810881324947684737529186447692709328597242209638906324913313742508392928375354932241404408343800007105650554669129521241784320000000000000000000000
siep@siep-desktop:~$
</pre>
=={{header|Sidef}}==
=={{header|Sidef}}==
<lang ruby>func lah(n, k) {
<lang ruby>func lah(n, k) {