Initial commit
This commit is contained in:
commit
f0ba450ecf
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/target
|
244
Cargo.lock
generated
Normal file
244
Cargo.lock
generated
Normal file
|
@ -0,0 +1,244 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "cow-word-search"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"rand",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"wasi",
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.169"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
|
||||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
|
||||
dependencies = [
|
||||
"zerocopy 0.7.35",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.93"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
|
||||
dependencies = [
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"zerocopy 0.8.16",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
"zerocopy 0.8.16",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.98"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.13.3+wasi-0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
|
||||
dependencies = [
|
||||
"wit-bindgen-rt",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
"windows_i686_gnu",
|
||||
"windows_i686_gnullvm",
|
||||
"windows_i686_msvc",
|
||||
"windows_x86_64_gnu",
|
||||
"windows_x86_64_gnullvm",
|
||||
"windows_x86_64_msvc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnullvm"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen-rt"
|
||||
version = "0.33.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.7.35"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"zerocopy-derive 0.7.35",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.8.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b8c07a70861ce02bad1607b5753ecb2501f67847b9f9ada7c160fff0ec6300c"
|
||||
dependencies = [
|
||||
"zerocopy-derive 0.8.16",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.7.35"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.8.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5226bc9a9a9836e7428936cde76bb6b22feea1a8bfdbc0d241136e4d13417e25"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
7
Cargo.toml
Normal file
7
Cargo.toml
Normal file
|
@ -0,0 +1,7 @@
|
|||
[package]
|
||||
name = "cow-word-search"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
rand = "0.9.0"
|
31
shell.nix
Normal file
31
shell.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
}:
|
||||
|
||||
pkgs.callPackage (
|
||||
{
|
||||
mkShell,
|
||||
# rustc,
|
||||
# cargo,
|
||||
rustup,
|
||||
rustPlatform,
|
||||
rustfmt,
|
||||
clippy,
|
||||
rust-analyzer,
|
||||
}:
|
||||
mkShell {
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [
|
||||
rustup
|
||||
rustfmt
|
||||
clippy
|
||||
rust-analyzer
|
||||
];
|
||||
|
||||
# Certain Rust tools won't work without this
|
||||
# rust-analyzer from nixpkgs does not need this.
|
||||
# This can also be fixed by using oxalica/rust-overlay and specifying the rust-src extension
|
||||
# See https://discourse.nixos.org/t/rust-src-not-found-and-other-misadventures-of-developing-rust-on-nixos/11570/3?u=samuela. for more details.
|
||||
RUST_SRC_PATH = "${rustPlatform.rustLibSrc}";
|
||||
}
|
||||
) { }
|
179
src/main.rs
Normal file
179
src/main.rs
Normal file
|
@ -0,0 +1,179 @@
|
|||
#![feature(test)]
|
||||
extern crate test;
|
||||
|
||||
use std::str::FromStr;
|
||||
use std::{env, fmt};
|
||||
use std::fmt::Display;
|
||||
use std::process::ExitCode;
|
||||
|
||||
use rand::seq::IteratorRandom;
|
||||
|
||||
const WIDTH: usize = 20;
|
||||
const HEIGHT: usize = 32;
|
||||
const MAX_MATCHES: usize = 2256;
|
||||
|
||||
const STRING: &str = "COW";
|
||||
const SOURCE_CHARS: &str = STRING;
|
||||
// const CHARS: [char; 3] = ['C', 'O', 'W'];
|
||||
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
struct Grid(Vec<Vec<char>>);
|
||||
|
||||
impl Display for Grid {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
for row in &self.0 {
|
||||
for &ch in row {
|
||||
write!(f, "{} ", ch)?; // Print each character with a space
|
||||
}
|
||||
writeln!(f)?; // Newline after each row
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
struct ParseError;
|
||||
|
||||
impl FromStr for Grid {
|
||||
type Err = ParseError;
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
Ok(Grid(s.split('\n').map(|s|s.chars().collect()).collect()))
|
||||
}
|
||||
}
|
||||
|
||||
fn generate_grid() -> Grid {
|
||||
Grid((0..HEIGHT).map(
|
||||
|_| (0..WIDTH).map(|_| SOURCE_CHARS.chars().choose(&mut rand::rng()).unwrap().clone()).collect()
|
||||
).collect())
|
||||
}
|
||||
|
||||
fn count_matches(grid: &Grid) -> usize {
|
||||
let len = STRING.len() - 1;
|
||||
let mut count = 0;
|
||||
// horizontal
|
||||
for row in 0..grid.0.len() {
|
||||
for col in 0..grid.0[0].len() - len {
|
||||
if STRING.chars().enumerate().all(|(i,c)| grid.0[row][col+i] == c) {
|
||||
count += 1;
|
||||
} else if STRING.chars().rev().enumerate().all(|(i,c)| grid.0[row][col+i] == c) {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
// vertical
|
||||
for row in 0..grid.0.len() - len {
|
||||
for col in 0..grid.0[0].len() {
|
||||
if STRING.chars().enumerate().all(|(i,c)| grid.0[row+i][col] == c) {
|
||||
count += 1;
|
||||
} else if STRING.chars().rev().enumerate().all(|(i,c)| grid.0[row+i][col] == c) {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
// y = x diagonal
|
||||
for row in len..grid.0.len() {
|
||||
for col in 0..grid.0[0].len() - len {
|
||||
if STRING.chars().enumerate().all(|(i,c)| grid.0[row-i][col+i] == c) {
|
||||
count += 1;
|
||||
} else if STRING.chars().rev().enumerate().all(|(i,c)| grid.0[row-i][col+i] == c) {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
// y = -x diagonal
|
||||
for row in 0..grid.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) {
|
||||
count += 1;
|
||||
} else if STRING.chars().rev().enumerate().all(|(i,c)| grid.0[row+i][col+i] == c) {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
count
|
||||
}
|
||||
|
||||
fn stats(iters: usize) {
|
||||
let mut counts = [0; MAX_MATCHES];
|
||||
for _ in 0..iters {
|
||||
let matches = count_matches(&generate_grid());
|
||||
counts[matches] += 1;
|
||||
}
|
||||
for i in 0..counts.len() {
|
||||
println!("{}", counts[i]);
|
||||
if i > 250 {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn show_help() {
|
||||
eprintln!("{} <n>: TODO calculate cows in puzzle <n> times and show stats", env::args().nth(0).unwrap())
|
||||
}
|
||||
|
||||
fn main() -> ExitCode {
|
||||
let args: Vec<String> = env::args().collect();
|
||||
match args.len() {
|
||||
3 => match &args[1][..] {
|
||||
"stats" => match args[2].parse() {
|
||||
Ok(iters) => {
|
||||
stats(iters);
|
||||
ExitCode::SUCCESS
|
||||
},
|
||||
Err(_) => {
|
||||
eprintln!("Unable to parse iterations");
|
||||
ExitCode::FAILURE
|
||||
}
|
||||
},
|
||||
_ => {
|
||||
eprintln!("Unknown command {}", args[1]);
|
||||
show_help();
|
||||
ExitCode::FAILURE
|
||||
}
|
||||
},
|
||||
2 => match &args[1][..] {
|
||||
"--help" | "-h" => {
|
||||
show_help();
|
||||
ExitCode::SUCCESS
|
||||
},
|
||||
_ => {
|
||||
show_help();
|
||||
ExitCode::FAILURE
|
||||
}
|
||||
},
|
||||
_ => {
|
||||
println!("{}", generate_grid());
|
||||
ExitCode::SUCCESS
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use test::Bencher;
|
||||
|
||||
#[test]
|
||||
fn test_count_matches() {
|
||||
let v: Vec<(&str, usize)> = vec![
|
||||
("WCCCCCCWWWWOOOOCOCOCO\nOWOOOOOOOOWCWWWOCOWCW\nOWWOWWOCCCCCWWWOWOWCO\nWOCWCWOOCOCCOCWOOCCWO\nOOOOWOOCOCOWWWOOOCCWC\nCWWOOOWCWOWOOCCWWWCCO\nCWCCOOOOCCOOOWOOOOCWW\nOWCWOCWCCCOOOWOWOOOCC\nOWCOCWWWCCWWOOOWWWWCW\nOOWWWCCCCWCCWOCWWWOCC\nCCWCWWCCWCCWWCWWCWOOW\nWCOOOWWWWOCCCWOWWOWWO\nOOWOOOWWWWWOOCOCWWWWW\nWOCWOCCOCOWWOOWOOCWWO\nWCOCOOOOCOCOWWWCCWCOW\nCOCCWCCOWCWWCCOOCCWOO\nWWCWWWOCOWWWOOCCCCOCC\nCWWOWWCWCOOOOWCOCCCWC\nWWWWOOWOCCWWOOCCCWWCO\nOOWCWOWOCCWWCWWOOOCOO\nOWCOWOWCWOCOCCWCCWCWW\nWOOOWCOWWWOOOCWWWCCCC\nOCWWCOOCOOWCWWWWOWWWO\nCCCWWWCCCCOWOWWOWOWCO\nWOWWOWWWOWCOOCOOOOOWO\nWWCOCCOCOWWCWCOCCCWWC\nOWWWCCOCCWWWWWWCWCOWW\nCWCCOCWCWWWOWCWWCWOWW\nCOCOCWWWCWCWCWCCCOOWO\nCCOCCWCWCWWWWOOWCWOOO\nCWWOWOOWCCOOCOOCOWWWC\nCOOCCCOOOOWCCOWWOOWOO\nOWWCCCOWCOOWCOOWWWCWO", 165),
|
||||
("COCCOOOOOCCCCWCOCWOWO\nWOWWOWWCOWOOCWOCOWWCC\nOWOWCWOOOCOCOWOCOCWCC\nCOOWOCWWOOOCOCCCOWCCW\nCOCOWWCCWCOOCOWOWCWWC\nWWOCOOCOCWOWOCCCWWOCC\nWCOWCWWOOOWOOCCCCWOOC\nOCOCOOOWWOCWCOCCOOWWO\nOCWOOOWWCOCOCWWOWOCCW\nOOCOCOOWCCWCWCOOWOWOW\nWOWOWCCCOWCCOCCCWCWCO\nCOCWOCCOOCWCOOCCWCWWW\nCOCOCOCOWOOOCCOOCOOOO\nOOWCWWOOCOOOWOOCOCWWC\nWCWOOWOWOOCCWOWCOCCOC\nOOOOCOCCOCOOCCOWWWWWO\nCOWWCWCCOCWOOCOOCCWOO\nOCCOOOOWOWOWWOCWWWOCO\nWCOCWWWWOCOWCCCOCOWCO\nWCCOCCOWCCCOWWWWOOOWC\nWOCCWWWOWCWWOCWCWWCCW\nOWWOOOCCCCCWWOCOCOCCO\nOWWWCOCCOOOCCCOCOCOCW\nOOWCCCWCWOWOOOCWCWCCW\nWCCWWCOWOCCOCWOWCWWWW\nCOOOWCOOOWCCWOCWWOCOO\nCWOOWWWCCWWOWWWOOOCOC\nCOCWOCWWWWOWOWWOWWCWC\nCCOCWCCWCCCOOWCWOCCCO\nWWCCWCCWOCCWWCOWWCCCC\nWOCOWCCWCWOOOOOCWCOWW\nCOWCCCWWCOCOOOWOCCCOC\nCWWWOOOOOCOOWWCWWCCWC", 177),
|
||||
("WCOOOCCCOWOWWCOOWCWOC\nCOWCCWCCOCOOCOWCCOCOO\nWWWCWCCCWOCOOCCWCOOCW\nCOOWCWCOCCOOCCOOWCCCO\nOWCOWWOWWWOOOWOWOWOOC\nOWWCCOOWWWOOCCCCWCWOW\nCWWOWCWOWOCCWWCWCOWCW\nOCCOOOWWOOOCWOWWWOWWW\nOCWCWCCOCCWCOOCOOCCCC\nCWOWOWOCCWCWWWCOWWWCC\nWCCOCWWOCOWCWWWCCCWCW\nOWWOOWWWCOCWCCOOOWWCW\nOOWCWWCOCCOCWWWCOWCOW\nCCWWWWWWOCCCCWOOCCWWC\nWWOOWWOOWWWCCOCWOWOOW\nWOCCWOWWWCCOOCOOWWWCC\nCCOOCWWWCOOOCCCCCOWWW\nCOOWWCWWCCOCCOCWWWOCO\nOWWCCOCWOWOOOWWOCWCWC\nOWCCOOCWCOWCWCCWWWWCW\nCCWOCOOWCOOWOCCCWWOOC\nCWOWWCCWWWWWCWWWOCOWW\nCOOOWCCCOCWOCOCWOOWWC\nWWOCWCOOCCOWOOOOCCCCO\nOCOWCCOCWCCWOCWCWCCCW\nCOOWCWWOCOWCCCOWOOCCC\nOWOWCWOWCWWOWCOOWWCOW\nWCOOOOWCWCOCOCOCWCWWC\nOOOOOWCWCWWWWWOCOCWOW\nOOCWWCCWOWWOOOCOOWOWW\nCWWCOCOOCCWOCCWOWCOCO\nCCWOWOCOOCWOWWWCWCCWO\nOOWWOOWCWWOWCWWOWWCCC", 173)
|
||||
];
|
||||
for (s, n) in v {
|
||||
assert_eq!(count_matches(&s.parse().unwrap()), n)
|
||||
}
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_generate_grid(b: &mut Bencher) {
|
||||
b.iter(|| generate_grid())
|
||||
}
|
||||
|
||||
#[bench]
|
||||
fn bench_count_matches(b: &mut Bencher) {
|
||||
let grid = generate_grid();
|
||||
b.iter(|| count_matches(&grid))
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue