06_Target Practice - Multidimensional Arrays - Exercise
4,5 i 9 test mi gi dava greshni.
https://pastebin.com/PJsqqDMw
https://pastebin.com/PJsqqDMw
Nqkakva ideq za vuzmnojni inputs?
Здравей, имаш проблеми не с входните данни, ами с Питагоровата теорема.
И имаш доста късмет, че голяма част от входовете дават същия резултат като при твоята теорема :) в метода CheckIfIsInRange :
return Math.Sqrt(Math.Abs(currentRow - rowHit) + Math.Abs(currentCol - colHit)) <= Math.Sqrt(radius);
замени с Питагоровата:
return (currentRow - rowHit)* (currentRow - rowHit) + (currentCol - colHit)* (currentCol - colHit) <= radius * radius;
и си готов.
Друг вариант: return Math.Sqrt((currentRow - rowHit)* (currentRow - rowHit) + (currentCol - colHit)* (currentCol - colHit)) <= radius;
Благодаря ти много за отговора. Ще пробвам да е пренапиша сам и ще пиша.
Но може ли някакъв съвет за дебъгване специално за този проблем?
Пробвах с доста инпути да оцела къде се чупи но не успях а и това малко аматьорски ми се струва.
Друг проблем е че отнема доста време да проверявам всяка точка дали е в радиус,
може и затова да съм се заблудил докато пробвах различни тест инпути.
В случая, ти и да дебъгваш с различни входове, трудно ще си намериш грешката сам, понеже сам си си изкривил представата за радиус, и ще ти се струва, че дава правилни стойности. Отстрани по-лесно се забелязва грешката.
P.S. между другото може математически, да видиш при кои входове съвпадат двете функции.
Вярната е x2 + y2 <= r2, a ти си дал |x| + |y| <= r
При условие, че r е цяло число >= 0, при кое r вече имаш различни възможности за x и y. При r=0, r=1 и r=2 съвпадат, явно при по-голям радиус, вече ще има грешка.
Хаха да аз видях формулата и само гледах да работи с теста от условието.
Ще внимавам повече.