diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/cgol.sloth | 150 | ||||
| -rw-r--r-- | examples/mandelbrot.sloth | 55 |
2 files changed, 94 insertions, 111 deletions
diff --git a/examples/cgol.sloth b/examples/cgol.sloth index db578f9..3700395 100644 --- a/examples/cgol.sloth +++ b/examples/cgol.sloth @@ -1,76 +1,66 @@ fn populate() [Int] { - # Initialize life vector - var life: [Int] = ["Hello World"]; - vpopi(life); + # Initialize life vector + var life: [Int] = [0]; + vpopi(life); - # Fill the vector with random values - var i: Int = 0; - while i < 57600 + # Fill the vector with random values + var i: Int = 0; + while i < 57600 { - var n: Int = randGen(0,1); - vpushi(life, n); - i = i+1; - } + var n: Int = randGen(0,1); + vpushi(life, n); + i = i+1; + } - return life; + return life; } -fn coord(x: Int, y: Int) Int +fn coord(x: Int, y: Int) Int { - var res: Int = -1; - # Calculate index based on coordinates - if x >= 0 && y >= 0 + var res: Int = -1; + # Calculate index based on coordinates + if x >= 0 && y >= 0 { - res = y*240+ x; - } - # if coordinate is invalid, return -1 - return res; + res = y*240+ x; + } + # if coordinate is invalid, return -1 + return res; } fn cval(x: Int, y: Int, life: [Int]) Int { - # Check to make sure index exists before returning - var res: Int = 0; - var c: Int = coord(x, y); - if c >= 0 - { - res = vgeti(life, c); - } - return res; + # Check to make sure index exists before returning + var res: Int = 0; + var c: Int = coord(x, y); + if c >= 0 { + res = vgeti(life, c); + } + return res; } -#fn gol(total: Int, alive: Bool) Int -#{ - - #if !alive && total == 3 - #{ - #return 1; - #} - #if alive && () - #return 0; - #} + fn update(life: [Int], new: [Int]) { - # Iterate through life - for x in 0..64 + # Iterate through life + for x in 0..64 { - for y in 0..240 + for y in 0..240 { - # Calculate total score around selected cell - var total: Int = + # Calculate total score around selected cell + var total: Int = cval(x-1, y-1, life) + # Top Left - cval(x-1, y , life) + - cval(x-1, y+1, life) + - cval(x , y-1, life) + - cval(x , y+1, life) + - cval(x+1, y-1, life) + - cval(x+1, y , life) + + cval(x-1, y , life) + + cval(x-1, y+1, life) + + cval(x , y-1, life) + + cval(x , y+1, life) + + cval(x+1, y-1, life) + + cval(x+1, y , life) + cval(x+1, y+1, life); - # Apply game of life rules - + # Apply game of life rules + var idx: Int = coord(x, y); if cval(x, y, life) == 1 @@ -95,44 +85,36 @@ fn update(life: [Int], new: [Int]) vseti(new, idx, 0); } } - } - } + } + } } -fn display(life: [Int]) -{ - # Iterate through life - for x in 3..62 - { - for y in 0..240 - { - termpos(x-3, y); - if cval(x-3, y, life) == 1 - { - print("█"); - } - else - { - print(" "); - } - } - } +fn display(life: [Int]) { + # Iterate through life + for x in 3..62 { + for y in 0..240 { + termpos(x-3, y); + if cval(x-3, y, life) == 1 { + print("█"); + } else { + print(" "); + } + } + } } -fn main() Int -{ - # Populate - var life: [Int] = populate(); - display(life); - curshide(); - # Play forever - while true - { +fn main() Int { + # Populate + var life: [Int] = populate(); + display(life); + curshide(); + # Play forever + while true { var new: [Int] = populate(); - update(life, new); - display(new); + update(life, new); + display(new); life = new; - # wait(100); - } - return 0; + wait(100); + } + return 0; } diff --git a/examples/mandelbrot.sloth b/examples/mandelbrot.sloth index 275d32b..09286bd 100644 --- a/examples/mandelbrot.sloth +++ b/examples/mandelbrot.sloth @@ -1,3 +1,26 @@ +fn printMan(size: Float, maxVal: Float, maxIter: Float, plane: Float, x: Int, y: Int) +{ + var cReal = (as_float(x) * plane / size) - 2.0; + var cImg = (as_float(y) * plane / size) - 2.0; + var zReal = 0.0; + var zImg = 0.0; + var count = 0.0; + + # Calculate + while (zReal * zReal + zImg * zImg) <= maxVal && count < maxIter { + var temp = (zReal * zReal) - (zImg * zImg) + cReal; + zImg = 2.0 * zReal * zImg + cImg; + zReal = temp; + count = count + 1.0; + + # Check + if as_int(count) == as_int(maxIter) { + termpos(x, y); + print("█"); + } + } +} + fn main() Int { # Configure var size = 1000.0; @@ -6,35 +29,13 @@ fn main() Int { var plane = 4.0; # loop over coordinates - var x = 0.0; - while x < size { - var y = 0.0; - while y < size { - # Initialize - var cReal = (x * plane / size) - 2.0; - var cImg = (y * plane / size) - 2.0; - var zReal = 0.0; - var zImg = 0.0; - var count = 0.0; - - # Calculate - while (zReal * zReal + zImg * zImg) <= maxVal && count < maxIter { - var temp = (zReal * zReal) - (zImg * zImg) + cReal; - zImg = 2.0 * zReal * zImg + cImg; - zReal = temp; - count = count + 1.0; - } - # Check - if as_int(count) == as_int(maxIter) { - termpos(as_int(x), as_int(y)); - print("█"); - } - - y = y + 1.0; + for x in 0..as_int(size) { + for y in 0..as_int(size) { + # Initialize + printMan(size, maxVal, maxIter, plane, x, y); } - x = x + 1.0; + } return 0; } - |
