Професионална програма
Loading...
asyamincheva avatar asyamincheva 20 Точки

Защо не се получава? Грешка тестове на изпит 27.07 - задача 1

Здравейте! Ще ви бъда благодарна, ако ми обясните къде е грешката ми в решението на тази задача: link в Judge S. Това е решението ми: link. Получавам грешка на 3-ти и 10-ти тест, въпреки че output-ът ми е какъвто трябва да бъде... Тестовете са: [5,10] & [999999,1000000] - тестове. При авторското решение се получават 100/100т.

п.с. Чудя се дали грешката се получава, тъй като при тест 3 е:

<table><tr><th>Num</th><th>Square</th><th>Fib</th></tr><tr><td>5</td><td>25</td><td>yes</td></tr><tr><td>6</td><td>36</td><td>no</td></tr><tr><td>7</td><td>49</td><td>no</td></tr><tr><td>8</td><td>64</td><td>yes</td></tr><tr><td>9</td><td>81</td><td>no</td></tr><tr><td>10</td><td>100</td><td>no</td></tr></table>

т.е. някои редове от таблицата не са разположени както трябва.

По същият начин е и 10-ти тест и въпреки това с авторското решение се получава.

Благодаря предварително!

0
JavaScript Fundamentals 22/11/2014 22:38:18
Dominik avatar Dominik 82 Точки
Best Answer

Здравей,

трябва да кастнеш 'start'  и 'end' към Number и ще заработи без проблеми 100/100 (пробвах го).

За жалост немога да ти кажа с точност причината, но доста колеги се натъкнаха (включително и аз) на този проблем така, че на изпита съветвам всички да си кастват числата към Number за да нямат проблеми.

Успех.

1
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Аз и на друга греда се натъкнах :) Колеги, когато искат от вас да закръглявате числата до 2 цифри след десетичната и за това използвате .fixed(2) имайте предвид, че числото автоматично се преобразува в string. После ако искате това число да го сравнявате с друго то непременно пак си го кастнете числото към Number тип.

0
asyamincheva avatar asyamincheva 20 Точки

Получи се, благодаря :)

0
asyamincheva avatar asyamincheva 20 Точки

Благодаря ти за съвета, наистина ще е полезен! :)

0
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

Никола, JS автоматично ги каства към числа. :)

Ако не вярваш, напиши в node "2.22" > "2.21" и виж резултата! :)

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Александър , пробвай в конзолата '13.00' > '2.2' и ми напиши резултата :)

Другата странност в JavaScript, заради която не ми даваше пълните точки на задача е:

var a = Number.MAX_VALUE;

var b = -500;

b > a  връща false.... и за да работи коректно трябва

a = Number.NEGATIVE_INFINITY

 

0
23/11/2014 00:13:03
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

Прав си! Само ако едното число е в Number тип се получава автоматичното кастване. 

При мен:
500 > Number.NEGATIVE_INFINITY -> true

500 > Number.MIN_VALUE -> true

500 > Number.MAX_VALUE -> false

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Я пробвай с  -500 и виж странностите на JavaScript. Заради тази странност доста псувах по-рано днес :)

П.С. В предния коментар в примера вместо -500 бях написал 500.

0
23/11/2014 00:13:31
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

-500 > Number.MIN_VALUE -> false

0> Number.MIN_VALUE -> false

0.00000000000000001 > Number.MIN_VALUE -> true

Note: MIN_VALUE is the value closest to 0. The most negative number is the negative MAX_NUMBER.

То си пишело... ама ние не сме прочели! :D И все пак наистина е доста объркващо...

0
23/11/2014 00:20:06
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Много тъпо са го измислили :)

Note: MIN_VALUE is the value closest to 0. The most negative number is the negative MAX_NUMBER.

Можеше да го направят MIN_VALUE да си е по подразбиране MAX_NUMBER с минус.  

 

 

1
23/11/2014 00:23:29