Решение на Hangman от Георги Божинов
Обратно към всички решения
Към профила на Георги Божинов
Резултати
- 11 точки от тестове
- 0 бонус точки
- 11 точки общо
- 11 успешни тест(а)
- 4 неуспешни тест(а)
Код
Лог от изпълнението
Compiling solution v0.1.0 (file:///tmp/d20171210-6053-1kbbomw/solution)
Finished dev [unoptimized + debuginfo] target(s) in 6.52 secs
Running target/debug/deps/solution-3f98bfa5c86a5dd9
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Running target/debug/deps/solution_test-3d9e4ea2eafbbc82
running 15 tests
test solution_test::test_command_parsing_cyrillic ... FAILED
test solution_test::test_command_parsing_extra_stuff ... FAILED
test solution_test::test_command_parsing_full_words ... FAILED
test solution_test::test_command_parsing_partial_words ... ok
test solution_test::test_command_parsing_spacing ... ok
test solution_test::test_command_parsing_special ... FAILED
test solution_test::test_game_basic ... ok
test solution_test::test_game_cyrillic ... ok
test solution_test::test_game_display ... ok
test solution_test::test_game_error ... ok
test solution_test::test_game_guess_basic ... ok
test solution_test::test_game_guess_state_lose ... ok
test solution_test::test_game_guess_state_won ... ok
test solution_test::test_game_guess_word ... ok
test solution_test::test_game_over_guesses ... ok
failures:
---- solution_test::test_command_parsing_cyrillic stdout ----
thread 'solution_test::test_command_parsing_cyrillic' panicked at 'Expected Ok(Command::TryLetter('\u{44f}')) to match Err(ParseError("Invalid command!"))', tests/solution_test.rs:235:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.
---- solution_test::test_command_parsing_extra_stuff stdout ----
thread 'solution_test::test_command_parsing_extra_stuff' panicked at 'Expected Ok(Command::TryLetter('a')) to match Err(ParseError("Invalid command!"))', tests/solution_test.rs:241:4
---- solution_test::test_command_parsing_full_words stdout ----
thread 'solution_test::test_command_parsing_full_words' panicked at 'Expected Ok(Command::TryLetter('z')) to match Err(ParseError("Invalid command!"))', tests/solution_test.rs:183:4
---- solution_test::test_command_parsing_special stdout ----
thread 'solution_test::test_command_parsing_special' panicked at 'Expected Ok(Command::TryLetter('\u{44f}')) to match Err(ParseError("Invalid command!"))', tests/solution_test.rs:194:4
failures:
solution_test::test_command_parsing_cyrillic
solution_test::test_command_parsing_extra_stuff
solution_test::test_command_parsing_full_words
solution_test::test_command_parsing_special
test result: FAILED. 11 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out
error: test failed, to rerun pass '--test solution_test'
История (1 версия и 2 коментара)
Георги качи първо решение на 05.12.2017 18:04 (преди почти 8 години)
Решението започва добре, но бързичко се усложнява и събира бъгове :). Като за начало, метода
len
не брои char-ове, а байтове: https://doc.rust-lang.org/std/primitive.str.html#method.len. Това чупи тестовете с кирилица.После, имаш и проблем с разликата между
try letter
иtry word
-- променливатаlast
e просто един символ и в двата случая, което значи, чеtry word foo
се превежда доTryWord("f")
, което съвсем не е правилно.Още, проверката за
!= 3
не е съвсем точна -- казахме, че допълнителни неща в командите просто се игнорират.Трудничко ми е да проследя логиката и да намеря останалите проблеми, донякъде защото имаш доста unwrap-ове. Така не е лесно да видиш какви са ти потенциалните грешки, които трябва да handle-ваш. За да ти е по-лесно, съветвам те да пробваш да се отървеш от unwrap-ове напълно, и да работиш повече с "безопасните" методи на Rust. Огледай останалите решения за някакво вдъхновение. (Примерно, моето: https://fmi.rust-lang.bg/tasks/4/solutions/43).