Run cargo fmt
This commit is contained in:
parent
f0ba450ecf
commit
5f6ab7876b
87
src/main.rs
87
src/main.rs
|
@ -1,10 +1,10 @@
|
||||||
#![feature(test)]
|
#![feature(test)]
|
||||||
extern crate test;
|
extern crate test;
|
||||||
|
|
||||||
use std::str::FromStr;
|
|
||||||
use std::{env, fmt};
|
|
||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
use std::process::ExitCode;
|
use std::process::ExitCode;
|
||||||
|
use std::str::FromStr;
|
||||||
|
use std::{env, fmt};
|
||||||
|
|
||||||
use rand::seq::IteratorRandom;
|
use rand::seq::IteratorRandom;
|
||||||
|
|
||||||
|
@ -38,14 +38,26 @@ impl FromStr for Grid {
|
||||||
type Err = ParseError;
|
type Err = ParseError;
|
||||||
|
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
Ok(Grid(s.split('\n').map(|s|s.chars().collect()).collect()))
|
Ok(Grid(s.split('\n').map(|s| s.chars().collect()).collect()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_grid() -> Grid {
|
fn generate_grid() -> Grid {
|
||||||
Grid((0..HEIGHT).map(
|
Grid(
|
||||||
|_| (0..WIDTH).map(|_| SOURCE_CHARS.chars().choose(&mut rand::rng()).unwrap().clone()).collect()
|
(0..HEIGHT)
|
||||||
).collect())
|
.map(|_| {
|
||||||
|
(0..WIDTH)
|
||||||
|
.map(|_| {
|
||||||
|
SOURCE_CHARS
|
||||||
|
.chars()
|
||||||
|
.choose(&mut rand::rng())
|
||||||
|
.unwrap()
|
||||||
|
.clone()
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
})
|
||||||
|
.collect(),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn count_matches(grid: &Grid) -> usize {
|
fn count_matches(grid: &Grid) -> usize {
|
||||||
|
@ -54,9 +66,18 @@ fn count_matches(grid: &Grid) -> usize {
|
||||||
// horizontal
|
// horizontal
|
||||||
for row in 0..grid.0.len() {
|
for row in 0..grid.0.len() {
|
||||||
for col in 0..grid.0[0].len() - len {
|
for col in 0..grid.0[0].len() - len {
|
||||||
if STRING.chars().enumerate().all(|(i,c)| grid.0[row][col+i] == c) {
|
if STRING
|
||||||
|
.chars()
|
||||||
|
.enumerate()
|
||||||
|
.all(|(i, c)| grid.0[row][col + i] == c)
|
||||||
|
{
|
||||||
count += 1;
|
count += 1;
|
||||||
} else if STRING.chars().rev().enumerate().all(|(i,c)| grid.0[row][col+i] == c) {
|
} else if STRING
|
||||||
|
.chars()
|
||||||
|
.rev()
|
||||||
|
.enumerate()
|
||||||
|
.all(|(i, c)| grid.0[row][col + i] == c)
|
||||||
|
{
|
||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,9 +85,18 @@ fn count_matches(grid: &Grid) -> usize {
|
||||||
// vertical
|
// vertical
|
||||||
for row in 0..grid.0.len() - len {
|
for row in 0..grid.0.len() - len {
|
||||||
for col in 0..grid.0[0].len() {
|
for col in 0..grid.0[0].len() {
|
||||||
if STRING.chars().enumerate().all(|(i,c)| grid.0[row+i][col] == c) {
|
if STRING
|
||||||
|
.chars()
|
||||||
|
.enumerate()
|
||||||
|
.all(|(i, c)| grid.0[row + i][col] == c)
|
||||||
|
{
|
||||||
count += 1;
|
count += 1;
|
||||||
} else if STRING.chars().rev().enumerate().all(|(i,c)| grid.0[row+i][col] == c) {
|
} else if STRING
|
||||||
|
.chars()
|
||||||
|
.rev()
|
||||||
|
.enumerate()
|
||||||
|
.all(|(i, c)| grid.0[row + i][col] == c)
|
||||||
|
{
|
||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,9 +104,18 @@ fn count_matches(grid: &Grid) -> usize {
|
||||||
// y = x diagonal
|
// y = x diagonal
|
||||||
for row in len..grid.0.len() {
|
for row in len..grid.0.len() {
|
||||||
for col in 0..grid.0[0].len() - len {
|
for col in 0..grid.0[0].len() - len {
|
||||||
if STRING.chars().enumerate().all(|(i,c)| grid.0[row-i][col+i] == c) {
|
if STRING
|
||||||
|
.chars()
|
||||||
|
.enumerate()
|
||||||
|
.all(|(i, c)| grid.0[row - i][col + i] == c)
|
||||||
|
{
|
||||||
count += 1;
|
count += 1;
|
||||||
} else if STRING.chars().rev().enumerate().all(|(i,c)| grid.0[row-i][col+i] == c) {
|
} else if STRING
|
||||||
|
.chars()
|
||||||
|
.rev()
|
||||||
|
.enumerate()
|
||||||
|
.all(|(i, c)| grid.0[row - i][col + i] == c)
|
||||||
|
{
|
||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,9 +123,18 @@ fn count_matches(grid: &Grid) -> usize {
|
||||||
// y = -x diagonal
|
// y = -x diagonal
|
||||||
for row in 0..grid.0.len() - len {
|
for row in 0..grid.0.len() - len {
|
||||||
for col in 0..grid.0[0].len() - len {
|
for col in 0..grid.0[0].len() - len {
|
||||||
if STRING.chars().enumerate().all(|(i,c)| grid.0[row+i][col+i] == c) {
|
if STRING
|
||||||
|
.chars()
|
||||||
|
.enumerate()
|
||||||
|
.all(|(i, c)| grid.0[row + i][col + i] == c)
|
||||||
|
{
|
||||||
count += 1;
|
count += 1;
|
||||||
} else if STRING.chars().rev().enumerate().all(|(i,c)| grid.0[row+i][col+i] == c) {
|
} else if STRING
|
||||||
|
.chars()
|
||||||
|
.rev()
|
||||||
|
.enumerate()
|
||||||
|
.all(|(i, c)| grid.0[row + i][col + i] == c)
|
||||||
|
{
|
||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,7 +157,10 @@ fn stats(iters: usize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn show_help() {
|
fn show_help() {
|
||||||
eprintln!("{} <n>: TODO calculate cows in puzzle <n> times and show stats", env::args().nth(0).unwrap())
|
eprintln!(
|
||||||
|
"{} <n>: TODO calculate cows in puzzle <n> times and show stats",
|
||||||
|
env::args().nth(0).unwrap()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> ExitCode {
|
fn main() -> ExitCode {
|
||||||
|
@ -120,7 +171,7 @@ fn main() -> ExitCode {
|
||||||
Ok(iters) => {
|
Ok(iters) => {
|
||||||
stats(iters);
|
stats(iters);
|
||||||
ExitCode::SUCCESS
|
ExitCode::SUCCESS
|
||||||
},
|
}
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
eprintln!("Unable to parse iterations");
|
eprintln!("Unable to parse iterations");
|
||||||
ExitCode::FAILURE
|
ExitCode::FAILURE
|
||||||
|
@ -136,7 +187,7 @@ fn main() -> ExitCode {
|
||||||
"--help" | "-h" => {
|
"--help" | "-h" => {
|
||||||
show_help();
|
show_help();
|
||||||
ExitCode::SUCCESS
|
ExitCode::SUCCESS
|
||||||
},
|
}
|
||||||
_ => {
|
_ => {
|
||||||
show_help();
|
show_help();
|
||||||
ExitCode::FAILURE
|
ExitCode::FAILURE
|
||||||
|
@ -164,7 +215,7 @@ mod tests {
|
||||||
for (s, n) in v {
|
for (s, n) in v {
|
||||||
assert_eq!(count_matches(&s.parse().unwrap()), n)
|
assert_eq!(count_matches(&s.parse().unwrap()), n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn bench_generate_grid(b: &mut Bencher) {
|
fn bench_generate_grid(b: &mut Bencher) {
|
||||||
|
|
Loading…
Reference in a new issue