06_Target Practice - Multidimensional Arrays - Exercise
4,5 i 9 test mi gi dava greshni.
https://pastebin.com/PJsqqDMw
https://pastebin.com/PJsqqDMw
Здравей, имаш проблеми не с входните данни, ами с Питагоровата теорема.
И имаш доста късмет, че голяма част от входовете дават същия резултат като при твоята теорема :) в метода 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 съвпадат, явно при по-голям радиус, вече ще има грешка.
Хаха да аз видях формулата и само гледах да работи с теста от условието.
Ще внимавам повече.
Sega pak gledah formulata i otkrih che tq si e vqrna (one ideqta mi :D) . Problema e che misleh che Math.Sqrt() vrushta
(xp−xc)2 a tazi formula vsushnost vrushta korena. #head#in#table#baamn
" Thus, you want to compare the number (xp−xc)2+(yp−yc)2 with r2. "
Predpolagam e sushtoto koeto ti si napisal. No kato mahnah glupostite s greshniq method i zamenih s
((xp−xc)*(xp−xc)) + ((yp−yc)*(yp−yc)) <=( r*r) mi dade 100%