Skip to content

Commit

Permalink
spacing
Browse files Browse the repository at this point in the history
  • Loading branch information
nic-gaffney committed Sep 30, 2023
1 parent 84c7765 commit c748aed
Show file tree
Hide file tree
Showing 5 changed files with 521 additions and 99 deletions.
136 changes: 64 additions & 72 deletions examples/cgol.sloth
Original file line number Diff line number Diff line change
@@ -1,74 +1,66 @@
fn populate() [Int]
{
# Initialize life vector
var life: [Int] = [0];
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;
}

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;
res = y*240+ x;
}
# if coordinate is invalid, return -1
return res;
}

fn gol(total: Int, alive: Bool) Int
fn cval(x: Int, y: Int, life: [Int]) Int
{

if !alive && total == 3 {
return 1;
# 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);
}
if alive && ()
return 0;
return res;
}



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
Expand All @@ -93,36 +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(" ");
}
}
}
# 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);
# Populate
var life: [Int] = populate();
display(life);
curshide();
# Play forever
while true {
# 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;
}
55 changes: 28 additions & 27 deletions examples/mandelbrot.sloth
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
}

Loading

0 comments on commit c748aed

Please sign in to comment.