Loading...

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

Ivaylo.Goranov avatar Ivaylo.Goranov 68 Точки

[Homework] Алгоритми - Combinatorial Algorithms - Problem{7} - Cubes

Някой би ли ли споделил решение на тази задача. Малко май прилича на предната задача, понеже вероятно пак ще има ротации, но все пак нещо не се сещам как да подходя.

Благодаря предварително.

viraco4a avatar viraco4a 28 Точки

Ще предложа още едно решение: https://pastebin.com/4324Zs0E 

Почти един ден се мъчих, но логиката ми се струва интуитивна:

1) Дефинирам клас Cube, който има 12 пропърита - 12-тте edge-a на куба, кръстени по възможно най-ясен начин (FrontTop, FrontLeft... etc.)

2) Имам масив int[], в който ще пермутирам с повторения цветовете, също така HashSet, пазещ уникалните ми решения и отделен HashSet, в който пазя всички завъртени варианти при получен от пермутацията куб

3) Самото въртене съм го разделил на въртене по azimuth, elevation и roll (за да мине последният тест, който е много тегав, подозирам с вход 1 1 1 2 2 2 3 3 3 4 4 4, въртя само 3-пъти по az и el, което е достатъчно, макар че не звучи интуитивно, а по roll си въртя 4 пъти). И съм го направил супер ръчно: представям си въртене например по азимут и връщам куб, в който edge по edge съм го завъртял. Аналогично за другите въртенета. Не е много умно, но по-умно не се сетих, а според мен е по-лесно и интуитивно от тия 23 пермутации, които колегата Valleri предлага (нищо лично, много добро решение, в началото и аз бях тръгнал по този начин, но като видях, че друг го е направил и му е отнело 500+ реда се отказах)

4) За да сравнявам макс бързо и лесно кубовете ми, трансформирам всички параметри със стрингбилдър в стрингове, които фактически пазя в hashset-a

Наистина бих се радвал да видя някакво авторско или що-годе интелигентно решение, най-вече за избора на колекция, в която да се пазят кубовете. Някой например ползвал ли е решение, ползващо това: http://planning.cs.uiuc.edu/node102.html, където в нашия случай ъглите на завъртане алфа, бета и гама са всички по 90 градуса и тия матрици се опростяват до единици, нули и минус единици.

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