Тетрис(14)

  • 12
  • Недоступна
Напиши реализацию метода removeFullLines в классе Field. Надо: а) удалить все строки из матрицы, которые полностью заполнены (состоят из одних единиц); б) сместить оставшиеся строки вниз; в) создать новые строки взамен отсутствующих. ВАЖНО! matrix[y][x] содержит элемент с координатами (x,y).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (28)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Даниил33 уровень
вчера, 12:12
5391-й. Уже когда что-то сделать самому нужно, то сразу на порядок меньше человек решили. Вроде задание понятное и не особо то и сложное. Советы: - сделайте main в данном классе что бы контролировать то что вы там рожаете; - внимательнее нужно быть если копируете значения, так как если передать ССЫЛКУ на линию, то она может "совершенно случайно" меняться без вашего ведома, по-этому нужно копировать по значению, а не по ссылке.
Андрей Коробов29 уровень, Уфа
17 мая, 07:48
Долго не мог понять почему не принимает валидатор. Пока в качестве проверочной матрицы не поставил матрицу, с двумя подряд заполненными строками. Вот тут все встало на свои места.
Andrew35 уровень, Москва
4 мая, 12:04
Написал код за 5 мин, был абсолютно уверен, что он нерабочий. Так и оказалось, валидацию не прошел. Потом добавил одну строчку и УСПЕХ!!! Я конечно не ожидал от себя такого. Хотя как по мне так это одна из самых легких и скучных больших задач, что довольно-таки печально :с
Арсен33 уровень, Алматы
8 апреля, 10:21
С 4 попытки ибо сам туповат как чурка , затупил с элементарными массивами ((
Павел41 уровень, Санкт-Петербург
14 декабря 2018, 01:38
Конструктор Tetris:
field = new Field(width, height);
Конструктор Field:
public Field(int height, int width)
Ясно. Понятно.
Valeriy2941 уровень
12 декабря 2018, 22:23
1) двойным for прохожусь по всем строкам, если сумма единиц в каждой строке = width то matrix[i] = null; если сумма едеиниц > 0 и < width то добавляю matrix[i] в лист с линиями. 2) в цикле while пока размер листа с линями <= height добавляю пустые линии в этот лист. 3) в цикле for в каждый matrix[i] копирую по очереди линии из листа.
Иван41 уровень, Москва
25 сентября 2018, 15:16
создаем новый массив для матрицы, в него переносим снизу вверх ссылки на непустые строки само собой, сверху останется пустое место, ничего добавлять не нужно все вы блин еще hashmap сюда добавьте и сортировку результата по номерам строк только олд скул, только хардкор, чтобы ни байта врагу не досталось
Gor Ivanov41 уровень, Москва
5 сентября 2018, 21:28
Самое скучно в этом задании - это сделать тест метода))) Всего 4 попытки, и то первые 2 просто так нажал) Использовал Deque, для того, чтобы забирать данные по LIFO. В первом цикле прошел сверху вниз и добавил все нужные строки в Deque. Далее в подсказке говорят //Добавляем недостающие строки в начало списка. но удобнее создать новый массив new int[height][width], и там сразу будет и нужное количество строк, и сразу нули. Во втором цикле идем наоборот снизу вверх по новому массиву, забирая и заменяя строки в массиве на строки из Deque, пока последний не пустой. И все, присваиваем новый массив старому. Готово.
Andry Max35 уровень, Минск
16 августа 2018, 00:16
я чет а***л, либо с валидатором что то не так, либо я поумнел. прошло с первого раза... 25 строк
Сергей36 уровень, Москва
22 августа 2018, 12:14
Даже не тестировал, алгоритм дали в самом методе. Реализовал что-то подобное еще на 7м шаге, через обычный массив вместо списка, только на следующих шагах понял что от меня ждали заглушку, а потом его затерли ((
Ihar Dubadzelau35 уровень, Гомель
6 августа 2018, 07:25
стеки, списки, коллекции, дополнительные массивы... эта игра писалась когда этого вcего не было, были переменные и обычные массивы и каждый байт был на вес золота.