The sand grid hashes the new generator
The draw is 64 bits now, so every grain lands somewhere else and the old number could not be right again. Re-taken from a run, which is the one manual step this case has always had. sand.flan's two calls say (f32 (rand)).
This commit is contained in:
parent
efcee7ea07
commit
6df50e9ce1
26
sand.flan
26
sand.flan
@ -25,6 +25,28 @@
|
|||||||
(defonce velocity [rows [cols f32]])
|
(defonce velocity [rows [cols f32]])
|
||||||
(defonce current-color dyn 0)
|
(defonce current-color dyn 0)
|
||||||
|
|
||||||
|
(defn insertion-sort [coll [$t]] ()
|
||||||
|
{:where (ordered? $t)}
|
||||||
|
(let [i 1
|
||||||
|
length (len coll)]
|
||||||
|
(while (and (< i length))
|
||||||
|
(let [j i]
|
||||||
|
(while (and (> j 0)
|
||||||
|
(< (at coll j) (at coll (dec j))))
|
||||||
|
(let [temp (at coll j)]
|
||||||
|
(set (at coll j) (at coll (dec j)))
|
||||||
|
(set (at coll (dec j)) temp))
|
||||||
|
(-- j)))
|
||||||
|
(++ i))))
|
||||||
|
|
||||||
|
(comment
|
||||||
|
(insertion-sort [\I \N \S \E \R \T \I \O \N \S \O \R \T])
|
||||||
|
(insertion-sort (slice [6 2 4 9 1 9 4 5] 0 8))
|
||||||
|
(let [str (bytes "INSERTIONSORT")]
|
||||||
|
(insertion-sort str)
|
||||||
|
(println str))
|
||||||
|
:-)
|
||||||
|
|
||||||
(defn clear-grid [] ()
|
(defn clear-grid [] ()
|
||||||
(set grid (zeroed))
|
(set grid (zeroed))
|
||||||
(set velocity (zeroed)))
|
(set velocity (zeroed)))
|
||||||
@ -41,7 +63,7 @@
|
|||||||
(when (and (>= r 0) (< r (- rows 1))
|
(when (and (>= r 0) (< r (- rows 1))
|
||||||
(>= c 0) (< c (- cols 1))
|
(>= c 0) (< c (- cols 1))
|
||||||
(= 0 (at grid r c))
|
(= 0 (at grid r c))
|
||||||
(< (rand-f32) 0.5))
|
(< (f32 (rand)) 0.5))
|
||||||
(set (at grid r c) (dyn->u32 (at colors current-color)))
|
(set (at grid r c) (dyn->u32 (at colors current-color)))
|
||||||
(set (at velocity r c) 1.0)))))))
|
(set (at velocity r c) 1.0)))))))
|
||||||
|
|
||||||
@ -61,7 +83,7 @@
|
|||||||
(let [side (cond
|
(let [side (cond
|
||||||
(not left?) 1
|
(not left?) 1
|
||||||
(not right?) -1
|
(not right?) -1
|
||||||
:else (if (< (rand-f32) 0.5) 1 -1))]
|
:else (if (< (f32 (rand)) 0.5) 1 -1))]
|
||||||
(set (at grid y (+ col side)) (at grid row col))
|
(set (at grid y (+ col side)) (at grid row col))
|
||||||
(set (at grid row col) 0)
|
(set (at grid row col) 0)
|
||||||
(set (at velocity y (+ col side)) vel)
|
(set (at velocity y (+ col side)) vel)
|
||||||
|
|||||||
@ -2267,12 +2267,11 @@ let () =
|
|||||||
libraylib on every target, and this one is the version meant to run on
|
libraylib on every target, and this one is the version meant to run on
|
||||||
wasm32 too. The hash is reproducible only because rand is ours.
|
wasm32 too. The hash is reproducible only because rand is ours.
|
||||||
|
|
||||||
The number below is the *old* generator's grid and cannot be right
|
The number below was re-taken when the generator changed: a draw is 64
|
||||||
again: a draw is 64 bits now and every grain lands somewhere else. When
|
bits now and every grain lands somewhere else, so the old grid's hash
|
||||||
sand.flan is brought up to date and these rows run again, the hash is
|
could not be right again. Re-taking it from a run is the one manual
|
||||||
re-taken from the run — that is the one manual step, and it is the
|
step, and it is the normal one for this case. *)
|
||||||
normal one for this case. *)
|
let sand_out = "7623511701454096497\n" in
|
||||||
let sand_out = "15595743031174623232\n" in
|
|
||||||
if sand_checks then begin
|
if sand_checks then begin
|
||||||
outputs "sand, headless" "programs/sand-headless.flan" sand_out;
|
outputs "sand, headless" "programs/sand-headless.flan" sand_out;
|
||||||
outputs ~opt:"-O0" "sand, headless, -O0" "programs/sand-headless.flan"
|
outputs ~opt:"-O0" "sand, headless, -O0" "programs/sand-headless.flan"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user