Skip to content

Commit

Permalink
oh noes
Browse files Browse the repository at this point in the history
  • Loading branch information
nic-gaffney committed Sep 19, 2023
1 parent 2ce282b commit 84c7765
Showing 1 changed file with 52 additions and 29 deletions.
81 changes: 52 additions & 29 deletions examples/cgol.sloth
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
fn populate() [Int] {
fn populate() [Int]
{
# Initialize life vector
var life: [Int] = [0];
vpopi(life);

# Fill the vector with random values
var i: Int = 0;
while i < 57600 {
while i < 57600
{
var n: Int = randGen(0,1);
vpushi(life, n);
i = i+1;
Expand All @@ -14,17 +16,20 @@ fn populate() [Int] {
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 {
if x >= 0 && y >= 0
{
res = y*240+ x;
}
# if coordinate is invalid, return -1
return res;
}

fn cval(x: Int, y: Int, life: [Int]) Int {
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);
Expand All @@ -34,12 +39,23 @@ fn cval(x: Int, y: Int, life: [Int]) Int {
return res;
}

fn update(life: [Int], new: [Int]) {
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
var x: Int = 0;
while x < 64 {
var y: Int = 0;
while y < 240 {
for x in 0..64
{
for y in 0..240
{
# Calculate total score around selected cell
var total: Int =
cval(x-1, y-1, life) + # Top Left
Expand All @@ -52,25 +68,32 @@ fn update(life: [Int], new: [Int]) {
cval(x+1, y+1, life);

# Apply game of life rules
var idx: Int = coord(x, y);

if cval(x, y, life) == 1 {
if total < 2 || total > 3 {
vseti(new, idx, 0);
} else {
vseti(new, idx, 1);
}
} else {
if total == 3 {
vseti(new, idx, 1);
} else {
vseti(new, idx, 0);
}
}

var idx: Int = coord(x, y);

y = y+1;
if cval(x, y, life) == 1
{
if total < 2 || total > 3
{
vseti(new, idx, 0);
}
else
{
vseti(new, idx, 1);
}
}
else
{
if total == 3
{
vseti(new, idx, 1);
}
else
{
vseti(new, idx, 0);
}
}
}
x = x+1;
}
}

Expand All @@ -95,10 +118,10 @@ fn main() Int {
curshide();
# Play forever
while true {
var new: [Int] = populate();
var new: [Int] = populate();
update(life, new);
display(new);
life = new;
life = new;
wait(100);
}
return 0;
Expand Down

0 comments on commit 84c7765

Please sign in to comment.