Тетрис(14)

  • 12
  • Недоступна
Напиши реализацию метода removeFullLines в классе Field. Надо: а) удалить все строки из матрицы, которые полностью заполнены (состоят из одних единиц); б) сместить оставшиеся строки вниз; в) создать новые строки взамен отсутствующих. ВАЖНО! matrix[y][x] содержит элемент с координатами (x,y).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (24)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Арсен26 уровень, Алматы
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 Ivanov40 уровень, Москва
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его не было, были переменные и обычные массивы и каждый байт был на вес золота.
Arjun37 уровень, Санкт-Петербург
11 июля 2018, 17:29
Сделал через Deque так: 1. смотрим в цикле: если строка не заполнена - добавляем ее в начало очереди, иначе - добавляем в конец очереди новую строку заполненную нулями. 2. во втором цикле для каждой строки матрицы присваиваем значение возвращаемое pollLast() из очереди. валидатор принял.
Александр Масловский41 уровень, Волгоград
18 июня 2018, 08:34
Блин, 7 попыток, потому что вместо while случайно поставил if
Alex35 уровень
18 мая 2018, 07:05
даа, нечто "интересное" получилось с листом. но по другому, увы, не принимало. может действительно алгоритм был неверен, кто знает)