Решение на Bigint от Теодор Тошков
Резултати
- 15 точки от тестове
- 0 бонус точки
- 15 точки общо
- 15 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
Compiling solution v0.1.0 (/tmp/d20201127-2274206-9kmnjz/solution) Finished test [unoptimized + debuginfo] target(s) in 2.02s Running target/debug/deps/solution_test-589a43f0f4b10ca3 running 15 tests test solution_test::test_bigint_construction ... ok test solution_test::test_bigint_nonzero_sign ... ok test solution_test::test_bigint_zero_sign ... ok test solution_test::test_comparison ... ok test solution_test::test_invalid_string ... ok test solution_test::test_neutralization ... ok test solution_test::test_parsing_with_and_without_sign ... ok test solution_test::test_parsing_with_leading_zeroes ... ok test solution_test::test_sub_1_basic ... ok test solution_test::test_sub_2_diferent_lengths ... ok test solution_test::test_sub_3_carry ... ok test solution_test::test_sum_1_basic ... ok test solution_test::test_sum_2_different_lengths ... ok test solution_test::test_sum_3_overflow ... ok test solution_test::test_sum_4_negative ... ok test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
История (8 версии и 4 коментара)
Теодор качи решение на 19.11.2020 02:27 (преди почти 5 години)
Теодор качи решение на 19.11.2020 08:19 (преди почти 5 години)
Проблем:
Промених distance
функцията на
fn distance<U: num::Unsigned + PartialOrd>(a: U, b: U) -> U
За да си променя closure-а за събирането с различни знаци на
let subber = |arguments: (&u8, &u8)| {
let (lhs, rhs) = (*arguments.0, arguments.1 + remainder);
remainder = if lhs >= rhs { 0 } else { 1 };
distance(remainder * 10, distance(lhs, rhs))
};
Това са единствените промени.
Локално ми се компилира и тестовете минават, като се опитам да upload-на промените тук ми дава "имате синтактична грешка" :(
EDIT:
Стана с fn distance<U: Sub<Output = U> + Ord>(a: U, b: U) -> U
Нямам идея дали проблема е в PartialOrd
, който трябваше да е Ord
или num::Unsigned
(пробвах и num::traits::Unsigned
без успех), но по някаква причина се компилираше само при мен (stable 1.48)
Теодор качи решение на 19.11.2020 09:22 (преди почти 5 години)
Последната стабилна версия на Rust би трябвало да е 1.47 -- това ми дава rustup, това се вижда и на официалния сайт: https://www.rust-lang.org/. Сигурен ли си, че не си на nightly, или някакъв бета канал?
Иначе вероятно е num::Unsigned
-- не мога да намеря такъв trait в стандартната библиотека. Къде го виждаш ти в документацията?
Опа, 1.48 беше типо, 1.47 е.
Май е станало омазване, защото сутринта преди работа правих промени по кода на онлайн компилатор и той явно си добавя някакви crate-ове сам без да каже (и като търсих подходящ trait за това 1я резултат явно не е бил от std).
Ще го мина в нормалната ми среда пак, за да не се окаже, че е омазан повече :D
Ахаа, ясно, тоя trait изглежда идва от нещо външно. Иначе 1.48 беше публикувано преди 35 минути и пуснах ъпдейт все пак :D https://twitter.com/rustlang/status/1329434819315576837