Sha256: 0e76464d526b6ba6e8da53093b0e596dac134321b0b54fe8596a06bd4c2a3cfc

Contents?: true

Size: 1.74 KB

Versions: 119

Compression:

Stored size: 1.74 KB

Contents

extern crate alphametics;
use std::collections::HashMap;

fn assert_alphametic_solution_eq(puzzle: &str, solution: &[(char, u8)]) {
    let answer = alphametics::solve(puzzle);
    let solution: HashMap<char, u8> = solution.iter().cloned().collect();
    assert_eq!(answer, Some(solution));
}

#[test]
fn test_with_three_letters() {
    assert_alphametic_solution_eq("I + BB == ILL", &[('I', 1), ('B', 9), ('L', 0)]);
}

#[test]
#[ignore]
fn test_must_have_unique_value_for_each_letter() {
    let answer = alphametics::solve("A == B");
    assert_eq!(answer, None);
}

#[test]
#[ignore]
fn test_leading_zero_solution_is_invalid() {
    let answer = alphametics::solve("ACA + DD == BD");
    assert_eq!(answer, None);
}

#[test]
#[ignore]
fn test_puzzle_with_four_letters() {
    assert_alphametic_solution_eq("AS + A == MOM", &[('A', 9), ('S', 2), ('M', 1), ('O', 0)]);
}

#[test]
#[ignore]
fn test_puzzle_with_six_letters() {
    assert_alphametic_solution_eq("NO + NO + TOO == LATE",
                &[('N', 7), ('O', 4), ('T', 9), ('L', 1), ('A', 0), ('E', 2)]);
}

#[test]
#[ignore]
fn test_puzzle_with_seven_letters() {
    assert_alphametic_solution_eq("HE + SEES + THE == LIGHT",
                &[('E', 4), ('G', 2), ('H', 5), ('I', 0), ('L', 1), ('S', 9), ('T', 7)]);
}

#[test]
#[ignore]
fn test_puzzle_with_eight_letters() {
    assert_alphametic_solution_eq("SEND + MORE == MONEY",
                &[('S', 9), ('E', 5), ('N', 6), ('D', 7), ('M', 1), ('O', 0), ('R', 8), ('Y', 2)]);
}

#[test]
#[ignore]
fn test_puzzle_with_ten_letters() {
    assert_alphametic_solution_eq("AND + A + STRONG + OFFENSE + AS + A + GOOD == DEFENSE",
                &[('A', 5), ('D', 3), ('E', 4), ('F', 7), ('G', 8), ('N', 0), ('O', 2), ('R', 1),
                  ('S', 6), ('T', 9)]);
}

Version data entries

119 entries across 119 versions & 1 rubygems

Version Path
trackler-2.2.1.171 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.170 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.169 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.167 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.166 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.165 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.164 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.163 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.162 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.161 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.160 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.159 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.158 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.157 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.156 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.155 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.154 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.153 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.152 tracks/rust/exercises/alphametics/tests/alphametics.rs
trackler-2.2.1.151 tracks/rust/exercises/alphametics/tests/alphametics.rs