Loading...
gvanastasov avatar gvanastasov 52 Точки

[Complex Conditional Statements] - Задача 12* - Универсално решение

Колеги,ето моето решение накратко - създавам си масив, който съдържа (x1,y1,x2,y2) координати за всеки един правоъгълник, който изгражда фигурата (може да се направят най-различни фигури, просто трябва да се въведат блокчетата в масива). След, което ползвам един forloop за да итерирам всяко блокче и да проверя, къде се намира точката спрямо него, позовавайки се на изброените възможни сценарий:

- ако точка е намерена INSIDE (1), няма нужда от понататъшно търсене -> излизане от forloop-а -> return INSIDE

- ако точка е намерена OUTSIDE (2), проверка дали преди не е била BORDER (3) за някой от другите блокчета (за да не презапишем BORDER стойност, т.е. ако за някое от блокчетата станем BORDER, резултатът няма как да бъде OUTSIDE)

- ако точката не е нито INSIDE, нито OUTSIDE, то тя остава да е BORDER (4). Тук има един тънък момент - ако точката преди е била BORDER за някой/и от блокчетата -> сме открили, че тя лежи на общ ръб, т.е. има два равиянта да е върху крайщата на ръба (VERT) или по самата му дължина (EDGE). Ако е първият случай - return BORDER (5), ako e вторият - return INSIDE (6)

Source code: http://pastebin.com/xXiCXugy

Надявам се да съм помогнал и да ви е интересно. Би трябвало да работи със каквато и фигура да се построй от правоъгълници в равнината, но не съм го тествал. Ако някой намери начин да се намали още решението да споделя. :)

Тагове:
-1
Programming Basics 10/02/2016 15:51:31
yasen6275 avatar yasen6275 18 Точки

Защо трябва да проверяваш всяко "кубче в равнината" по отделно, а не на право синия и зеления правоъгълник?

-1
10/02/2016 15:41:18
gvanastasov avatar gvanastasov 52 Точки

не съм се изразил правилно явно, аз не проверявам всяко кубче, а всеки правоъгълник, дефиниран от неговия долен ляв и горен десен ъгъл - тоест, провервам точно синия и зеления, като съм си оставил вратичка да си добавям и други ако искам. Идеята с forloop-а, е че мога да оптимизирам if проверките

edit: :D сега видях глупостта, която съм написал с КУБ - така е като не излизам от Unity

-1
10/02/2016 15:52:16
yasen6275 avatar yasen6275 18 Точки

И аз имах подобна идея, но ме мързеше да пиша цялостен код и се изхитрих да си полззвам кода от предишните задачи.

http://pastebin.com/buphGpHn

-1
10/02/2016 16:03:41
KaloyanGanchev avatar KaloyanGanchev 17 Точки

Евала за решението - оригинално и работещо.

А аз написах толкова много логически съюзи... Браво!

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