Created
March 2, 2025 08:43
-
-
Save kaimingguo/0b679d108d6f847f7d489e445fe0cbe4 to your computer and use it in GitHub Desktop.
Taiwan Powerball numbers generator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[package] | |
name = "tw-powerball-rs" | |
version = "0.1.0" | |
edition = "2021" | |
[dependencies] | |
rand = "0.9" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use rand::seq::SliceRandom; | |
use rand::Rng; | |
use std::io::{self, Write}; | |
struct PowerLottery { | |
main_numbers: Vec<u8>, | |
special_number: u8, | |
} | |
impl PowerLottery { | |
const MAIN_NUMBERS_COUNT: usize = 6; | |
const MAIN_NUMBER_MAX: u8 = 38; | |
const SPECIAL_NUMBER_MAX: u8 = 8; | |
fn generate() -> Self { | |
let mut rng = rand::rng(); | |
let mut numbers: Vec<u8> = (1..=Self::MAIN_NUMBER_MAX).collect(); | |
numbers.shuffle(&mut rng); | |
let mut main_numbers = numbers[0..Self::MAIN_NUMBERS_COUNT].to_vec(); | |
main_numbers.sort(); | |
let special_number = rng.random_range(1..=Self::SPECIAL_NUMBER_MAX); | |
PowerLottery { | |
main_numbers, | |
special_number, | |
} | |
} | |
fn display(&self) { | |
println!("\n=== Taiwan Power Lottery Numbers ==="); | |
print!("First Section (1-38): "); | |
for num in &self.main_numbers { | |
print!("{} ", num); | |
} | |
println!("\nSecond Section (1-8): {}", self.special_number); | |
println!("===================================="); | |
} | |
} | |
fn prompt(message: &str) -> io::Result<String> { | |
print!("{}", message); | |
io::stdout().flush()?; | |
let mut input = String::new(); | |
io::stdin().read_line(&mut input)?; | |
Ok(input.trim().to_string()) | |
} | |
fn main() -> io::Result<()> { | |
println!("Taiwan Power Lottery Number Generator"); | |
loop { | |
let ticket = PowerLottery::generate(); | |
ticket.display(); | |
let answer = prompt("\nGenerate another set of numbers? (y/n): ")?; | |
if !answer.eq_ignore_ascii_case("y") { | |
break; | |
} | |
} | |
Ok(()) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment