Data update

This commit is contained in:
Ingy döt Net 2024-10-16 18:07:41 -07:00
parent 81fd053722
commit 52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions

View file

@ -0,0 +1,71 @@
use std::collections::HashMap;
fn solve(states: Vec<&str>) {
let mut dict = HashMap::new();
for state in states {
let key = state.to_lowercase().replace(" ", "");
if !dict.contains_key(&key) {
dict.insert(key, state);
}
}
let keys: Vec<&String> = dict.keys().collect();
let mut solutions: Vec<String> = vec![];
let mut duplicates: Vec<String> = vec![];
for i in 0..keys.len() {
for j in i + 1..keys.len() {
let len = keys[i].len() + keys[j].len();
let mut chars: Vec<char> = (String::new() + keys[i] + keys[j]).chars().collect();
chars.sort();
let combined: String = chars.into_iter().collect();
for k in 0..keys.len() {
for m in k + 1..keys.len() {
if k == i || k == j || m == i || m == j {
continue;
}
let len2 = keys[k].len() + keys[m].len();
if len2 != len {
continue;
}
let mut chars2 = (String::new() + keys[k] + keys[m])
.chars()
.collect::<Vec<char>>();
chars2.sort();
let combined2: String = chars2.into_iter().collect();
if combined == combined2 {
let f1 = format!("{} + {}", dict[keys[i]], dict[keys[j]]);
let f2 = format!("{} + {}", dict[keys[k]], dict[keys[m]]);
let f3 = format!("{f1} = {f2}");
if duplicates.contains(&f3) {
continue;
}
solutions.push(f3);
let f4 = format!("{f2} = {f1}");
duplicates.push(f4);
}
}
}
}
}
solutions.sort();
for (i, sol) in solutions.iter().enumerate() {
println!("{:>2} {}", i + 1, sol);
}
}
fn main() {
let mut states = [
"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut",
"Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa",
"Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan",
"Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada",
"New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina",
"North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island",
"South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont",
"Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming",].to_vec();
println!("Real states only:");
solve(states.clone());
let mut fictitious = ["New Kory", "Wen Kory", "York New", "Kory New", "New Kory"].to_vec();
println!("\nReal and fictitious states:");
states.append(&mut fictitious);
solve(states.clone());
}