Loading...
HPetrov avatar HPetrov 822 Точки

Задача за изпит - Bittris

Здравейте!

От няколко часа си блъскам главата здраво на една задача, която е давана на изпит миналата година на пролетния прием в Телерик. Можете да е намерите тук - Bittris. Решил съм по-голяма част от всички задачи давани на изпит но тази просто кара някои от другите да бледнеят пред нея. Порових се из форума на Телерик и намерих доста решения но всички наблягат на битовите операции. Понеже не съм особено голям техен фен повечето подобни задачи си ги решавам с масиви и страшно ме улесняват по този начин. Искам да попитам има ли някой, които вече да е решавал тази задача и да работи напълно вярно в BGCoder но без да е използвал побитови операции? Ще се радвам на малко насоки и ако е възможно share на source code-а ;) Като си поблъскам още малко и аз главата и е подкарам до някъде ще пусна и линк към моя код.

Edit 1: Успях да го докарам до 66/100 (6 от 9 теста) за сега. До сега се водех по логиката, че "фигурките" са непременно няколко бита един след друг като реални фигурки на Тетрис. Явно не е съвсем така но ще го оставя за утре, че в 3 часа как се пише код вече :D

Edit 2: Повече от 66/100 изглежа не мога на този момент да искарам чрез двумерни масиви. Направих е наново само, че побитово този път и се оказа че е доста по приятно и леко за писане конкретно за тази задача. Спрях се на побитовия метод понеже си работи безупречно и не се сблъсках с толкова много бъгове като матричния метод.

Поука: Някои задачи се решават много по лесно чрез матрици отколкото с побитови операции но си заслужава да се помисли малко и върху логиката за решаване чрез другия метод. Ето го и кода за крайното ми решение.

3
Programming Basics
ViValDam avatar ViValDam 15 Точки

Е, и  как се заменя побитова операция с масив , нещо не се връзва ?

доколкото знам там се местят насам натам битове , как ше стане това с масиви и какво общо има ?

по скоро лист ще е отколкото масив или арей

-1
beBoss avatar beBoss 507 Точки
Масив и "арей" са едно и също нещо.
2
HPetrov avatar HPetrov 822 Точки
Местиш битовете по същия начин като с побитови операции. Всеки бит е на определен индекс в матрицата и просто си играеш с индексите
2
ViValDam avatar ViValDam 15 Точки

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

 

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

 

По скоро умножение и деление по степени на 2 използвайте, като ви е страх от битовете.

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

1
HPetrov avatar HPetrov 822 Точки

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

Реално като погледен едно "игрално" поле 8x8 е просто интуитивно да се насочваш към матрица. Най-малкото можеш да си представиш на момента визуално как би изглеждало полето и кой "бит" къде отива по него и т.н. Не напразно хората са казали, че тези задачи (игралните с битове) за изпит се решават по-лесно с масиви. Като има по-лесен начин е нормално да се насочи човек към него.

Аз търсех решение с масиви и си намерих такова. Нека не водим излишни спорове.

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