Skip to content

Instantly share code, notes, and snippets.

@Announcement
Created October 17, 2018 23:06
Show Gist options
  • Save Announcement/79a22c611cf51e31b1d3d45bc33d2f8b to your computer and use it in GitHub Desktop.
Save Announcement/79a22c611cf51e31b1d3d45bc33d2f8b to your computer and use it in GitHub Desktop.
generate possible moves on a tic tac toe board
function * getMove (...moves) {
if (moves.length === 9) yield moves
if (moves.length < 9)
for (let x = 0, X = 9; x < X; x++)
if (moves.length < 9 && !moves.includes(x))
yield* getMove(...moves, x)
}
fn get_move (a0: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize, a7: usize, a8: usize) {
if a0 == 0 {
get_move(1, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(2, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(3, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(4, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(5, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(6, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(7, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(8, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(9, a1, a2, a3, a4, a5, a6, a7, a8);
}
else if a1 == 0 {
get_move(a0, 1, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, 2, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, 3, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, 4, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, 5, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, 6, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, 7, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, 8, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, 9, a2, a3, a4, a5, a6, a7, a8);
}
else if a2 == 0 {
get_move(a0, a1, 1, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, 2, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, 3, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, 4, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, 5, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, 6, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, 7, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, 8, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, 9, a3, a4, a5, a6, a7, a8);
}
else if a3 == 0 {
get_move(a0, a1, a2, 1, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, 2, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, 3, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, 4, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, 5, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, 6, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, 7, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, 8, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, 9, a4, a5, a6, a7, a8);
}
else if a4 == 0 {
get_move(a0, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, a8);
}
else if a5 == 0 {
get_move(a0, a1, a2, a3, a4, 1, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, 2, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, 3, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, 4, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, 5, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, 6, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, 7, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, 8, a6, a7, a8);
get_move(a0, a1, a2, a3, a4, 9, a6, a7, a8);
}
else if a6 == 0 {
get_move(a0, a1, a2, a3, a4, a5, 1, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, 2, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, 3, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, 4, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, 5, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, 6, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, 7, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, 8, a7, a8);
get_move(a0, a1, a2, a3, a4, a5, 9, a7, a8);
}
else if a7 == 0 {
get_move(a0, a1, a2, a3, a4, a5, a6, 1, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, 2, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, 3, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, 4, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, 5, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, 6, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, 7, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, 8, a8);
get_move(a0, a1, a2, a3, a4, a5, a6, 9, a8);
}
else if a8 == 0 {
get_move(a0, a1, a2, a3, a4, a5, a6, a7, 1);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, 2);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, 3);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, 4);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, 5);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, 6);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, 7);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, 8);
get_move(a0, a1, a2, a3, a4, a5, a6, a7, 9);
}
else {
println!("{} {} {} {} {} {} {} {} {}", a0, a1, a2, a3, a4, a5, a6, a7, a8)
}
}
fn main() {
get_move(0, 0, 0, 0, 0, 0, 0, 0, 0)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment