Решение на Hangman от Георги Ангелов
Обратно към всички решения
Към профила на Георги Ангелов
Резултати
- 13 точки от тестове
- 0 бонус точки
- 13 точки общо
- 13 успешни тест(а)
- 2 неуспешни тест(а)
Код
Лог от изпълнението
Compiling solution v0.1.0 (file:///tmp/d20171210-6053-gl5pox/solution)
warning: unused import: `Write`
--> src/lib.rs:2:31
|
2 | use std::fmt::{self, Display, Write};
| ^^^^^
|
= note: #[warn(unused_imports)] on by default
warning: unused import: `Write`
--> src/lib.rs:2:31
|
2 | use std::fmt::{self, Display, Write};
| ^^^^^
|
= note: #[warn(unused_imports)] on by default
Finished dev [unoptimized + debuginfo] target(s) in 5.74 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 ... ok
test solution_test::test_command_parsing_extra_stuff ... ok
test solution_test::test_command_parsing_full_words ... ok
test solution_test::test_command_parsing_partial_words ... FAILED
test solution_test::test_command_parsing_spacing ... ok
test solution_test::test_command_parsing_special ... ok
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 ... FAILED
failures:
---- solution_test::test_command_parsing_partial_words stdout ----
thread 'solution_test::test_command_parsing_partial_words' panicked at 'Expected Err(GameError::ParseError(_)) to match Ok(TryWord("t"))', tests/solution_test.rs:222:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.
---- solution_test::test_game_over_guesses stdout ----
thread 'solution_test::test_game_over_guesses' panicked at 'Expected Err(GameError::GameOver) to match Err(BadGuess("f"))', tests/solution_test.rs:157:4
failures:
solution_test::test_command_parsing_partial_words
solution_test::test_game_over_guesses
test result: FAILED. 13 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out
error: test failed, to rerun pass '--test solution_test'
История (1 версия и 5 коментара)
Георги качи първо решение на 03.12.2017 21:29 (преди почти 8 години)
Добре измислено с отделния метод, който връща Option, позволява ти много удобно да използваш
?
. Аз опростих нещата с макрос за грешката в моето решение, но това улеснява дори повече нещата.Изличането на
match_word
е също смислено. Мисля, че можеш да опростиш имплементацията му с методаcontains
наstr
: https://doc.rust-lang.org/std/primitive.str.html#method.containsМхм, сега виждам и
starts_with
.Всъщност да, сега осъзнавам, че
contains
може да е малко misleading :). Жалко, че не съм измислил тест, който да го хване (видях употреба наcontains
в друго решение).Тук малко са се объркали нещата заради приоритети. След въпроса ти във форумите, обнових описанието, и специфично ги наредих -- първо, ако играта е свършила, и викаме този метод, връщаме грешка, че е свършила. Второ, ако вече си пробвал тази буква, се връща друга грешка. Признавам, че е малко пипкаво да се реши кое по-напред, но мисля, че така е и малко по-логически консистентно.
Честно казано, на практика бих обмислил даже
guess_letter
да panic-ва, ако се викне на свършила игра -- на теория, интерфейса не би трябвало да го позволява. Но вероятно може да се поспори по въпроса.Аз просто не го домислих тук :) Логично е първо да е грешката за свършила игра.