Решение на Дигитален корен от Иво Стефанов
Обратно към всички решения
Към профила на Иво Стефанов
Резултати
- 7 точки от тестове
- 0 бонус точки
- 7 точки общо
- 2 успешни тест(а)
- 4 неуспешни тест(а)
Код
Лог от изпълнението
Compiling solution v0.1.0 (/tmp/d20200111-2173579-e23w0p/solution)
Finished test [unoptimized + debuginfo] target(s) in 2.97s
Running target/debug/deps/solution-a73e64ec87929bd0
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Running target/debug/deps/solution_test-38971695424b36d5
running 6 tests
test solution_test::test_binary ... ok
test solution_test::test_decimal_basic ... ok
test solution_test::test_hex_basic ... FAILED
test solution_test::test_invalid ... FAILED
test solution_test::test_octal_basic ... FAILED
test solution_test::test_zeroes ... FAILED
failures:
---- solution_test::test_hex_basic stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `Some(1)`,
right: `Some(0)`', tests/solution_test.rs:23:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
---- solution_test::test_invalid stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `Some(1)`,
right: `None`', tests/solution_test.rs:64:5
---- solution_test::test_octal_basic stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `Some(1)`,
right: `Some(0)`', tests/solution_test.rs:37:9
---- solution_test::test_zeroes stdout ----
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `Some(1)`,
right: `Some(0)`', tests/solution_test.rs:55:5
failures:
solution_test::test_hex_basic
solution_test::test_invalid
solution_test::test_octal_basic
solution_test::test_zeroes
test result: FAILED. 2 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out
error: test failed, to rerun pass '--test solution_test'
История (1 версия и 4 коментара)
Иво качи първо решение на 05.11.2019 11:48 (преди почти 6 години)
В случая, в който ти е подадено числото "0", сумата ще бъде 1 и в цикъла няма да се влезе. Това ти чупи няколко теста.
8 не е валидна цифра за осмична бройна система -- затова в коментара сложихме "0-7" :).
Този match statement е малко странен. Няма как числото
dec%8
да бъде по-голямо от 7. Дори и да кажем, че искаш да се предпазиш от програмистка грешка, в другия ръкав на match-а не правиш нищо така или иначе, така че няма много смисъл да имашmatch
тук. Можеше да викнешunreachable!()
примерно, и щях да приема, че може би пишеш по-дефанзивно. (Пак не мисля, че щеше да има смисъл в случая.)Този код можеше просто да бъде
oct.push(char::from_digit(dec % 8, 8).unwrap()
, последвано от долнотоdec /= 8
, basically. Същото за долния. Иначе, можеше и да заместиш цялата функция сformat!("{:o}", dec)
, но е ок да не си разучил различните format specifiers (но направи го сега :)).