From 70c08272058f5cfcf5c10c7c5d5bb46e11a99042 Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Tue, 2 May 2023 02:20:13 +0300 Subject: [PATCH] functional programming --- src/gamedata/mod.rs | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/gamedata/mod.rs b/src/gamedata/mod.rs index 89250a3..7c2b05b 100644 --- a/src/gamedata/mod.rs +++ b/src/gamedata/mod.rs @@ -42,8 +42,46 @@ impl Board { unimplemented!() } } +pub fn get_indices( + index: &(usize, usize), + op: fn(&(usize, usize), usize) -> (usize, usize), + values: Vec, +) -> Vec<(usize, usize)> { + let mut indices: Vec<(usize, usize)> = Vec::with_capacity(3); + for num in values { + indices.push(op(index, num)); + } + indices +} -#[derive(Clone, Debug)] +pub fn inc_row((row, col): &(usize, usize), value: usize) -> (usize, usize) { + (row + value as usize, *col) +} +pub fn inc_col((row, col): &(usize, usize), value: usize) -> (usize, usize) { + (*row, col + value as usize) +} + +pub fn dec_row((row, col): &(usize, usize), value: usize) -> (usize, usize) { + (row - value as usize, *col) +} +pub fn dec_col((row, col): &(usize, usize), value: usize) -> (usize, usize) { + (*row, col - value as usize) +} +pub fn inc_both((row, col): &(usize, usize), value: usize) -> (usize, usize) { + (row + value, col + value) +} +pub fn dec_both((row, col): &(usize, usize), value: usize) -> (usize, usize) { + (row - value, col - value) +} +//TODO get better names for these +pub fn inc_dec((row, col): &(usize, usize), value: usize) -> (usize, usize) { + (row + value, col - value) +} +pub fn dec_inc((row, col): &(usize, usize), value: usize) -> (usize, usize) { + (row - value, col + value) +} + +#[derive(Copy, Clone, Debug)] pub enum Disk { RED, BLU,