Здравейте,
Имам проблем с една от задачите от array contest-a. Judge ми дава 80/100 за моето решение (see link below), но неразбирам къде ми е грешката. В vsc тръгва и ми дава правилните отговори за всички sample test от задачата. Може ли някой да ме насочи къде греша? Благодаря предварително!
https://pastebin.com/ba4HyWXr
Reverse Number
Description
Write a method that reverses the digits of a given decimal number.
Input
- On the first line you will receive a number
Output
- Print the given number with reversed digits
Sample tests
Input |
Output |
256 |
652 |
123.45 |
54.321 |
Промених този ред:
let a= parseFloat(arr.toString().split('').reverse().join('')) * Math.sign(arr);
на:
let a = arr.toString().split('').reverse().join('');
и даде последните 20 точки.
Здравей,
Тръгна и при мене. Благодаря много за помощта.
Обаче има две неща, които не разбирам:
- Без Math.Sign функцията, ако въведем отрицателно число, ни дава грешен отговор: -123 го изписва като 321- без Math.Sign функцията…
2)В условието на задачета пиша: Print the given number - ако премахнем parseFloat функцията тогава няма да принтира number, с ще принтира string или поне така си мисля аз.
Какво е твоето наблюдение върху горните две точки?
1.Без Math.Sign функцията, ако въведем отрицателно число, ни дава грешен отговор: -123 го изписва като 321- без Math.Sign функцията…
Никъде не пише, че ще подават отрицателни числа, -0.123 ще го обърне като 321.0-
с кода който си написал . Най-вероятно тестовете в джъдж не проверяват за отрицателни стойности (просто догадка). С отрицателни стойности май задачата се усложнява малко повече. В стремежа си да покриеш всички случаи (дори и да няма такива) малко си си усложнил живота и може би си се объркал накрая.
2.В условието на задачета пиша: Print the given number - ако премахнем parseFloat функцията тогава няма да принтира number, с ще принтира string или поне така си мисля аз.
Ами попринцип щом нямаш някакви аритметични операции с числата (не ги променяш като стойност в случая само ги обръщаш) си ги печатай като стринг. Прост пример, ако напиша 234324 и ако отвориш html-a на страницата това се резпрезентира като стринг.
В задачата няма constraints и това я прави малко двусмислена, защото от математическа гледна точка примера с -0.123 -> 321.0- е грешен, но пък от друга гледна точка това е правилно reverse-нат стринг Това е моето мнение
"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
" -90e3 "
=> true
" 1e"
=> false
"e3"
=> false
" 6e-1"
=> true
" 99e2.5 "
=> false
"53.5e93"
=> true
" --6 "
=> false
"-+3"
=> false
"95a54e53"
=> false
Там където има true означава че стрингът може да бъде репрезентиран като число.
1 Like
Благодаря за изчерпателния отговор!