Skip to content

Instantly share code, notes, and snippets.

@jimblandy
Forked from anonymous/playground.rs
Created November 27, 2017 00:29
Show Gist options
  • Save jimblandy/7fc93a796febf0ab099f1ef7a5b2f07e to your computer and use it in GitHub Desktop.
Save jimblandy/7fc93a796febf0ab099f1ef7a5b2f07e to your computer and use it in GitHub Desktop.
Rust code shared from the playground
#![allow(unused_variables)]
fn show_line(array: [bool; 80]) {
for i in 0..80 {
if array[i] {
print!("+");
} else {
print!(" ");
}
}
println!();
}
fn find_changes(array: [bool; 80]) -> [bool; 80] {
let mut arr: [bool; 80] = [false; 80]; // Initialize an array holding 100 false values.
// 110 = 1
// 101 = 1
// 111 = 0
// 100 = 0
// 011 = 1
// 010 = 1
// 001 = 1
// 000 = 0
for i in 0..78 {
if array[i] {
arr[i+1] = (array[i+1] && !array[i+2]) || (!array[i+1] && array[i+2]); // true if 110 or 101
} else {
arr[i+1] = (array[i+1] && array[i+2]) || (array[i+1] && !array[i+2]) || (!array[i+1] && array[i+2]); // true if 011 or 010 or 001
}
}
// corner case 1
if array[78] {
arr[79] = (array[79] && !array[0]) || (!array[79] && array[0]); // true if 110 or 101
} else if !array[78] {
arr[79] = (array[79] && array[0]) || (array[79] && !array[0]) || (!array[79] && array[0]); // true if 011 or 010 or 001
}
// corner case 2
if array[79] {
arr[0] = (array[0] && !array[1]) || (!array[0] && array[1]); // true if 110 or 101
} else if !array[79] {
arr[0] = (array[0] && array[1]) || (array[0] && !array[1]) || (!array[0] && array[1]); // true if 011 or 010 or 001
}
arr
}
fn main() {
let mut array: [bool; 80] = [false; 80];
// array[77] = true;
// array[78] = true;
array[79] = true;
println!("Rule 110:");
for _ in 0..80 {
show_line(array);
array = find_changes(array);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment