Loading...

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

antonp1p2 avatar antonp1p2 17 Точки

Exam 31May {Problem02} Target Practice

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

Ето ми го кода - http://pastebin.com/F1BJidGp

Тагове:
0
C# Advanced 07/07/2015 18:19:56
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Антоне,

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

при този пример (това е третия тест):

12 1
a
6 0 2

ти получаваш такъв резултат:

a
a
a

 

 

a
a
a
a

Остават ти непаднали букви защото по една колона твоят код минава само веднъж, а за да падне буквата от ред 1, трябва да падне първо буквата от ред 2, после да минем още веднъж по колоната, и сега под ред 1 няма нищо, буквата пада, сега още веднъж по същата колона и чак сега ще падне буквата от ред 0, защото вече са паднали буквите под нея - това може да стане само с while true, тъй като не знаем предварително колко пъти ще се наложи да се минава по всяка колона:

С това решението ти дава 100 точки:

            bool fallen = false;
            do
            {
                fallen = false;
                for (int row = 0; row < matrix.GetLength(0) - 1; row++)
                {
                    for (int col = 0; col < matrix.GetLength(1); col++)
                    {
                        if (matrix[row, col] != ' ' && matrix[row + 1, col] == ' ')
                        {
                            matrix[row + 1, col] = matrix[row, col];
                            matrix[row, col] = ' ';
                            fallen = true;
                        }
                    }
                }
            } while (fallen);

 

0
antonp1p2 avatar antonp1p2 17 Точки

Дa ясно мерси много. Знaех си че циклите ми тaм нещо не сa нaред

0
08/07/2015 12:37:25
georgiab avatar georgiab 34 Точки

И аз имам проблем с три теста - 5ти, 6ти и 10ти. Доста ги мъчих, но нещо блокирах тотално... Според мен бъркам някъде с LINQ-а, но нямам нерви повече...

Ако някой може да помогне ще съм много благодарен!!

https://pastebin.com/nvH77ZzB

0
mrfreeman avatar mrfreeman 11 Точки

Здравей колега,

И аз имам проблем със тези три теста. Разгледах кода, подходили сме идентично. Само при падането на буквите имаш различна логика. Не разбрах как точно работи и какъв е смисъла на   temp = temp.OrderByDescending(x => x == ' ').ToArray();

При мен е доста по-убъркана логиката, но в крайна сметка работи.

 

Както и да е проблема с тези 3 теста е още в началото при попълването на матрицата със символите. И аз ползвах if (rowIndex % 2 == 0) обаче точно от там тръгва грешката. Преработи тази част и ще ти даде 100/100

1
georgiab avatar georgiab 34 Точки

Благодаря ти, колега. Супер си!!! Изнесах една променлива да пази реда и така да правя проверката и стана!!

Иначе temp = temp.OrderByDescending(x => x == ' ').ToArray(); го използвам да сортирам колоните по елементите с ' ' . temp ми помощен масив с редовете за всяка колона (обратно на обикновено, на външния for са ми колоните, а на вътрешния редовете), който като сортирам по празен char ми "мести" елемнтите докато не стигнат елемент със стойност. С две думи премахва празните пространства за да се изпълни последното условие преди принтиране - All characters start falling down until they land on other characters.

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