Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
18
Task/Pascals-triangle/Tcl/pascals-triangle-1.tcl
Normal file
18
Task/Pascals-triangle/Tcl/pascals-triangle-1.tcl
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
proc pascal_iterative n {
|
||||
if {$n < 1} {error "undefined behaviour for n < 1"}
|
||||
set row [list 1]
|
||||
lappend rows $row
|
||||
set i 1
|
||||
while {[incr i] <= $n} {
|
||||
set prev $row
|
||||
set row [list 1]
|
||||
for {set j 1} {$j < [llength $prev]} {incr j} {
|
||||
lappend row [expr {[lindex $prev [expr {$j - 1}]] + [lindex $prev $j]}]
|
||||
}
|
||||
lappend row 1
|
||||
lappend rows $row
|
||||
}
|
||||
return $rows
|
||||
}
|
||||
|
||||
puts [join [pascal_iterative 6] \n]
|
||||
15
Task/Pascals-triangle/Tcl/pascals-triangle-2.tcl
Normal file
15
Task/Pascals-triangle/Tcl/pascals-triangle-2.tcl
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
proc pascal_coefficients n {
|
||||
if {$n < 1} {error "undefined behaviour for n < 1"}
|
||||
for {set i 0} {$i < $n} {incr i} {
|
||||
set c 1
|
||||
set row [list $c]
|
||||
for {set j 0} {$j < $i} {incr j} {
|
||||
set c [expr {$c * ($i - $j) / ($j + 1)}]
|
||||
lappend row $c
|
||||
}
|
||||
lappend rows $row
|
||||
}
|
||||
return $rows
|
||||
}
|
||||
|
||||
puts [join [pascal_coefficients 6] \n]
|
||||
35
Task/Pascals-triangle/Tcl/pascals-triangle-3.tcl
Normal file
35
Task/Pascals-triangle/Tcl/pascals-triangle-3.tcl
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
package require Tcl 8.5
|
||||
|
||||
proc pascal_combinations n {
|
||||
if {$n < 1} {error "undefined behaviour for n < 1"}
|
||||
for {set i 0} {$i < $n} {incr i} {
|
||||
set row [list]
|
||||
for {set j 0} {$j <= $i} {incr j} {
|
||||
lappend row [C $i $j]
|
||||
}
|
||||
lappend rows $row
|
||||
}
|
||||
return $rows
|
||||
}
|
||||
|
||||
proc C {n k} {
|
||||
expr {[ifact $n] / ([ifact $k] * [ifact [expr {$n - $k}]])}
|
||||
}
|
||||
|
||||
set fact_cache {1 1}
|
||||
proc ifact n {
|
||||
global fact_cache
|
||||
if {$n < [llength $fact_cache]} {
|
||||
return [lindex $fact_cache $n]
|
||||
}
|
||||
set i [expr {[llength $fact_cache] - 1}]
|
||||
set sum [lindex $fact_cache $i]
|
||||
while {$i < $n} {
|
||||
incr i
|
||||
set sum [expr {$sum * $i}]
|
||||
lappend fact_cache $sum
|
||||
}
|
||||
return $sum
|
||||
}
|
||||
|
||||
puts [join [pascal_combinations 6] \n]
|
||||
5
Task/Pascals-triangle/Tcl/pascals-triangle-4.tcl
Normal file
5
Task/Pascals-triangle/Tcl/pascals-triangle-4.tcl
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
set n 100
|
||||
puts "calculate $n rows:"
|
||||
foreach proc {pascal_iterative pascal_coefficients pascal_combinations} {
|
||||
puts "$proc: [time [list $proc $n] 100]"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue