From c28abc8804a8aed3ebe9d8e820d292170bd0d84e Mon Sep 17 00:00:00 2001 From: Christoph Hochreiner Date: Mon, 16 Jul 2012 23:55:51 +0200 Subject: [PATCH] added doc --- demo/kitchen-sink/demo.js | 1 + demo/kitchen-sink/docs/tcl.tcl | 40 ++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 demo/kitchen-sink/docs/tcl.tcl diff --git a/demo/kitchen-sink/demo.js b/demo/kitchen-sink/demo.js index 72d88d8f..52eb6d74 100644 --- a/demo/kitchen-sink/demo.js +++ b/demo/kitchen-sink/demo.js @@ -180,6 +180,7 @@ var docs = { "docs/less.less": "LESS", "docs/html.html": "HTML", "docs/xml.xml": "XML", + "docs/tcl.tcl": "Tcl", "docs/yaml.yaml": "YAML", "docs/svg.svg": "SVG", "docs/php.php": "PHP", diff --git a/demo/kitchen-sink/docs/tcl.tcl b/demo/kitchen-sink/docs/tcl.tcl new file mode 100644 index 00000000..5c53b971 --- /dev/null +++ b/demo/kitchen-sink/docs/tcl.tcl @@ -0,0 +1,40 @@ + +proc dijkstra {graph origin} { + # Initialize + dict for {vertex distmap} $graph { + dict set dist $vertex Inf + dict set path $vertex {} + } + dict set dist $origin 0 + dict set path $origin [list $origin] + + while {[dict size $graph]} { + # Find unhandled node with least weight + set d Inf + dict for {uu -} $graph { + if {$d > [set dd [dict get $dist $uu]]} { + set u $uu + set d $dd + } + } + + # No such node; graph must be disconnected + if {$d == Inf} break + + # Update the weights for nodes\ + lead to by the node we've picked + dict for {v dd} [dict get $graph $u] { + if {[dict exists $graph $v]} { + set alt [expr {$d + $dd}] + if {$alt < [dict get $dist $v]} { + dict set dist $v $alt + dict set path $v [list {*}[dict get $path $u] $v] + } + } + } + + # Remove chosen node from graph still to be handled + dict unset graph $u + } + return [list $dist $path] +} \ No newline at end of file