Loading...
kaloyan_kolev avatar kaloyan_kolev 10 Точки

Radioactive Mutant Vampire Bunnies from Multidimensional Arrays - Exercise

Здравейте, колеги, мъча се от няколко часа със задачата, но явно бъркам доста някъде. Опитах се да дебъгна, но не мога много добре да си визуализирам матрицата и промените по нея, т.е. не ми помогна много. Ще съм много благодарен, ако някой може да ми погледне кода, и да ми каже кое не е добре, за да го огледам и поправя. 

 

https://pastebin.com/91yYRLzv

https://dox.abv.bg/download?id=59450e4634# - Линк за сваляне

 

Благодаря!

Тагове:
0
C# Advanced 23/05/2019 20:15:18
krasizorbov avatar krasizorbov 548 Точки

Здравей,

Ето едно решение: https://pastebin.com/1AmT8LVw

Тук основния проблем е с разпространяването на зайците.

За да го постигнеш трябва да създадеш нов масив. В такъв случай суздаваш метод и правиш "passing by REF"

Ползваш стария масив да размножиш зайците в новия.

Най - накрая правиш стария масив да е равен на новия и понеже в метода ползваш "ref" (мястото в паметта където е стария масив), метода връща новия масив(копието) на мястото на стария.

Разгледай кода, не е труден за разбиране.

0
kaloyan_kolev avatar kaloyan_kolev 10 Точки

Здравей,

благодаря ти за отговора. Не искам все още да гледам решения, за да не се объркам. Би ли ми казал как мога да оправя моето, и къде бъркам?

0
krasizorbov avatar krasizorbov 548 Точки

Здравей,

Както казах по горе проблема ти е при разпространяване на зайците. Имаш ли ясна концепция как да го направиш?

Ако можеш да си отговориш на този въпрос си решил задачата.

Ако ли не оставаш в улица без изход.

Проблема е че ако нямаш копие на стария масив как ще разпространиш заиците с for цикъл?

Когато имаш зайче на 0,0 тогава трябва да сложиш зайче на 0,1 и 1,0

Тогава при следващата итерация на цикъла програмата ще види че имаш зайче на 0,1 и ще размножи и него и по следващото и т.н.

Нямаш друг избор освен да работиш с копие на масива или някакъв друг начин.

0
kaloyan_kolev avatar kaloyan_kolev 10 Точки

Ами не съм сигурен, че виждам къде е при мен проблемът. След като преместя играча, имам един for цикъл, с който разпространявам зайците (наляво, надясно, нагоре и надолу, като проверявам дали клетките съществуват в матрицата). Защо ми трябва копие на масива? Следващото преместване на играча, for-ът пак ще завърти и ще мине през всеки един нов заек. Ще има новите зайци от миналото му завъртане.

0
24/05/2019 08:54:19
svetlyoek avatar svetlyoek 20 Точки

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

0
am_stanchev avatar am_stanchev 43 Точки

По принцип ref се използва аки искаш да върнеш стойност (от външен метод) на променливи, които са от референтен тип . Но според мен с глобалните променливи е по-ясно, за което съм много благодарен на Стоян Шопов, че ми ги разясни на едно упражнение.

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

май обърка ref и out :Д ама поне опита да обесняваш де :Д за да ги върнеш от външен метод е out а с ref се подават....

ама по-добре не ползвайте тея неща. и точно за тая задача няма нужда.. Референции се ползват само в краен случай ако нямаш избор...

0
deni.panov avatar deni.panov 15 Точки

Аз също изгубих доста време с тези зайци :D Прилиагам малко по-различно решение, което вярвам ще бъде интересно - https://pastebin.com/J9fu65LW

Ако има въпроси - насреща съм!

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