wisp
 
(drak)
2014-05-05: Diffuse slowly.

Diffuse slowly.

diff --git a/examples/d20world.w b/examples/d20world.w
--- a/examples/d20world.w
+++ b/examples/d20world.w
@@ -82,10 +82,10 @@ define : d20-value-ascii-color-string le
          . "Create an ascii color string for d20."
          let 
            : csi "["
-             color : inexact->exact : floor : * 12 value
+             color : inexact->exact : max 0 : min 255 : floor : * 12 value
            format #f "~A38;5;~dm~A~Am" csi color letter csi
 
-define : d20-as-text world-vector
+define : d20-as-text-base world-vector function
          . "show the given d20 world as text"
          let 
            : template "
@@ -102,7 +102,12 @@ define : d20-as-text world-vector
   ~A    ~A
 "
              indexes ' : 7 8 3 4 1 6 2 9 5 10 14 13 18 17 20 15 19 12 16 11
-           apply format : append (list #f template) : map d20-value-ascii-color-string indexes : map (lambda (x) (vector-ref world (1- x))) indexes
+           apply format : append (list #f template) : map function indexes : map (lambda (x) (vector-ref world (1- x))) indexes
+
+define : d20-as-text world-vector
+         . "show the given d20 world as text"
+         d20-as-text-base world-vector d20-value-ascii-color-string
+
 
 define : d20-diffuse world neighbors D
          . "Diffuse the values on the d20 using the diffusion constant D. Step 1: Simply iterative (=wrong)."
@@ -145,24 +150,12 @@ newline
 d20-diffuse world neighbors 0.01
 display : d20-as-text world
 newline
-d20-diffuse world neighbors 0.1
+let loop : : steps 1000
+    cond
+      : = 0 steps
+        . world
+      else
+        d20-diffuse world neighbors 0.01
+        loop : 1- steps
 display : d20-as-text world
 newline
-d20-diffuse world neighbors 0.5
-display : d20-as-text world
-newline
-d20-diffuse world neighbors 0.5
-display : d20-as-text world
-newline
-d20-diffuse world neighbors 0.5
-display : d20-as-text world
-newline
-d20-diffuse world neighbors 0.5
-display : d20-as-text world
-newline
-d20-diffuse world neighbors 0.5
-display : d20-as-text world
-newline
-d20-diffuse world neighbors 0.5
-display : d20-as-text world
-newline