Решение на Сметки с ДНК от Ива Караджова

Обратно към всички решения

Към профила на Ива Караджова

Резултати

  • 17 точки от тестове
  • 0 бонус точки
  • 17 точки общо
  • 10 успешни тест(а)
  • 2 неуспешни тест(а)

Код

pub struct NucleotideCounter {
pub a: usize,
pub c: usize,
pub g: usize,
pub t: usize,
}
pub fn counts(dna: &[char]) -> NucleotideCounter {
let mut a = 0;
let mut c = 0;
let mut g = 0;
let mut t = 0;
for (_i, &base) in dna.iter().enumerate() {
if base == 'A' {
a += 1;
} else if base == 'C' {
c += 1;
} else if base == 'G' {
g += 1;
} else if base == 'T' {
t += 1;
} else {
panic!("Еее, развалиха го това днк!");
}
}

Не ти трябва .enumerate() тук -- ти даже игнорираш _i, но вместо това можеш просто да го махнеш и да махнеш .enumerate(). Виждам, че си го използвал по-долу, така че може би това е причината.

NucleotideCounter {
a: a,
c: c,
g: g,
t: t,
}
}
fn get_complimentary_base(base: char, is_dna: bool) -> char {
if base == 'A' {
if is_dna {
return 'T';
} else {
return 'U';
}
} else if base == 'C' {
return 'G';
} else if base == 'G' {
return 'C';
} else if (base == 'T' && is_dna) || (base == 'U' && !is_dna) {
return 'A';
} else {
panic!("Еее, развалиха го това днк!");
}
}
pub fn dna_complement(dna: &[char]) -> Vec<char> {
let mut vec: Vec<char> = vec![' '; dna.len()];
for (i, &base) in dna.iter().enumerate() {
vec[i] = get_complimentary_base(base, true);
}
vec
}
pub fn reverse_rna_complement(dna: &[char]) -> Vec<char> {
let len = dna.len();
let mut vec: Vec<char> = vec![' '; len];
for (i, &base) in dna.iter().enumerate() {
vec[len - i - 1] = get_complimentary_base(base, false);
}
vec
}

Лог от изпълнението

Compiling solution v0.1.0 (/tmp/d20220112-2706256-djwh5c/solution)
    Finished test [unoptimized + debuginfo] target(s) in 5.65s
     Running tests/solution_test.rs (target/debug/deps/solution_test-4c880d3f0adaac34)

running 12 tests
test solution_test::test_counts_basic ... ok
test solution_test::test_counts_big ... ok
test solution_test::test_counts_panic1 - should panic ... ok
test solution_test::test_counts_panic2 - should panic ... ok
test solution_test::test_counts_zero ... ok
test solution_test::test_dna_complement_big ... ok
test solution_test::test_dna_complement_empty ... ok
test solution_test::test_dna_complement_panic - should panic ... ok
test solution_test::test_reverse_rna_complement_big ... FAILED
test solution_test::test_reverse_rna_complement_empty ... ok
test solution_test::test_reverse_rna_complement_panic1 - should panic ... ok
test solution_test::test_reverse_rna_complement_panic2 - should panic ... FAILED

failures:

---- solution_test::test_reverse_rna_complement_big stdout ----
thread 'main' panicked at 'Еее, развалиха го това днк!', src/lib.rs:48:9

---- solution_test::test_reverse_rna_complement_panic2 stdout ----
note: test did not panic as expected

failures:
    solution_test::test_reverse_rna_complement_big
    solution_test::test_reverse_rna_complement_panic2

test result: FAILED. 10 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

error: test failed, to rerun pass '--test solution_test'

История (1 версия и 1 коментар)

Ива качи първо решение на 26.10.2021 11:09 (преди почти 4 години)