pub enum DraftType {
Snake,
Linear,
}
pub fn snake_draft(total_picks: u32, number_of_drafters: u32) -> u32 {
let mut next_seat = 0;
for i in 0..=total_picks {
if i % number_of_drafters == 0 {
continue;
};
if i % (2 * number_of_drafters) <= number_of_drafters {
next_seat += 1;
} else {
next_seat -= 1;
}
}
next_seat
}
pub fn linear_draft(total_picks: u32, number_of_drafters: u32) -> u32 {
total_picks % number_of_drafters
}
#[cfg(test)]
mod draft_type_tests {
use super::*;
#[test]
fn snake_draft_returns_correct_next_seat() {
assert_eq!(snake_draft(0, 4), 0);
assert_eq!(snake_draft(1, 4), 1);
assert_eq!(snake_draft(2, 4), 2);
assert_eq!(snake_draft(3, 4), 3);
assert_eq!(snake_draft(4, 4), 3);
assert_eq!(snake_draft(5, 4), 2);
assert_eq!(snake_draft(6, 4), 1);
assert_eq!(snake_draft(7, 4), 0);
assert_eq!(snake_draft(8, 4), 0);
}
#[test]
fn linear_draft_returns_correct_next_seat() {
assert_eq!(linear_draft(4, 5), 4);
assert_eq!(linear_draft(5, 5), 0);
}
}