Loading...
willystyle avatar willystyle 2472 Точки

Здравей, имаш проблеми не с входните данни, ами с Питагоровата теорема.

И имаш доста късмет, че голяма част от входовете дават същия резултат като при твоята теорема :) в метода 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;

 

0
GeorgiKostadinov933 avatar GeorgiKostadinov933 7 Точки

Благодаря ти много за отговора. Ще пробвам да е пренапиша сам и ще пиша.

Но може ли някакъв съвет за дебъгване специално за този проблем?

Пробвах с доста инпути да оцела къде се чупи но не успях а и това малко аматьорски ми се струва.

Друг проблем е че отнема доста време да проверявам всяка точка дали е в радиус,

може и затова да съм се заблудил докато пробвах различни тест инпути.

 

 

0
willystyle avatar willystyle 2472 Точки

В случая, ти и да дебъгваш с различни входове, трудно ще си намериш грешката сам, понеже сам си си изкривил представата за радиус, и ще ти се струва, че дава правилни стойности. Отстрани по-лесно се забелязва грешката.

P.S. smiley между другото може математически, да видиш при кои входове съвпадат двете функции.

Вярната е x2 + y2 <= r2, a ти си дал |x| + |y| <= r

При условие, че r е цяло число >= 0, при кое r вече имаш различни възможности за x и y. При r=0, r=1 и r=2 съвпадат, явно при по-голям радиус, вече ще има грешка.

0
12/11/2018 19:47:41
GeorgiKostadinov933 avatar GeorgiKostadinov933 7 Точки

Хаха да аз видях формулата и  само гледах да работи с теста от условието.

Ще внимавам повече.

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.