2048 (7)

  • 16
  • Недоступна
Движение влево мы реализовали, теперь необходимо реализовать методы right, up, down. Уверен, что ты с этим справишься и без моей помощи, так что дам только одну подсказку. Что будет, если повернуть двумерный массив на 90 градусов по часовой стрелке, сдвинуть влево, а потом еще трижды выполнить пово
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (48)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Alexey Polyakov35 уровень
11 октября, 13:21
Мозголомательная задача)) В голове не получилось. все записывал и рисовал.
Iosif Futerman32 уровень, Екатеринбург
22 сентября, 10:55
Я так понял, что пошёл совсем другим путём, не как остальные. Вместо метода поворотов матрицы туда - сюда просто формирую строки для методов merge и compress. Чисто визуально мой код проще и короче. Как бы дальше это не аукнулось.
Ярослав Воробець37 уровень, Львов
10 июля, 16:53
Створив новий метод, який повертає матрицю, а далі зробив як в завданні сказано.
Даниил41 уровень
29 июня, 21:23
Из опыта прощлых задач уже осознал что можно день придумывать велосипед или за 5 минут нагуглить. Решил пойти по второму варианту так как даже опытные разработчики таким не страдают обычно) В итоге наткнулся на ту же ссылку которую нашёл потом тут ниже в комментах. Честно говоря так и не понял как он переворачивает этот массив. Ну хоть сам додумался сколько раз в каком случае переворачивать нужно.
Алексей Масис35 уровень, Новосибирск
13 апреля, 20:32
взял ручку бумагу, посмотрел как вращается массив, немного подумал над алгоритмом. Кто то пишет что загуглил, но я советую подумать самому очень полезно, ведь для этого нас по большей части тут обучают)
Юрий41 уровень, Минск
12 апреля, 09:24
я не ломал голову ,а нагуглил алгоритм..надо помнить ,что много кода уже написано за нас и мне кажется нет нечего зазорного в том что бы использовать чужое потраченое время,главное разбираться в том что ты пишешь,а не просто бездумно копировать здесь
Justinian41 уровень, Киев
9 августа, 10:12
когда работаешь - не зазорно. Когда учишься - тоже можно, чем больше гуглят одни, тем больше денег получают те, которые решают сами. У каждого свои приоритеты.
Vitaly Khan38 уровень
28 марта, 00:48
честно говоря, алгоритм настолько прост, что решение с 1-й попытки не должно вызывать восхищения собой) достаточно выписать, как по индексам переносятся элементы при повороте clockwise на 90:
0,0 <- 3,0     1,0 <- 3,1    и т.д.
0,1 <- 2,0     1,1 <- 2,1
0,2 <- 1,0     1,2 <- 1,1
0,3 <- 0,0     1,3 <- 0,1
чтобы увидеть очевидную закономерность
new[i][j] = old[FIELD_WIDTH - 1 - j][i]
ну, и использовать временный массив.
Владимир41 уровень
17 июля, 11:56
Да, но так называемый "Time Complexity" в данном случае будет ровно O(n^2). Если же мы хотим немножно оптимизировать время выполнение, то тоже решение "Inplace rotate square matrix" с geeksforgeeks будет минимум в 2 раза быстрее: если брать во внимание только первый for, то он там уже x < N / 2. Но если говорить об оптимизации, то наверное лучше вообще без ротации матрицы)
Vitaly Khan38 уровень
24 июля, 07:47
спасибо за замечание! в общем случае оно очень даже верно... хотя конкретно для нашей игры с фиксированным размером поля 4х4 такой оптимизацией можно смело пренебречь)
Владимир41 уровень
24 июля, 11:15
Согласен, именно поэтому ротацию я у себя оставил. Ведь эту задачу можно любить хотя бы за то, что походу выполнения она остаётся понятной) Ну и еще поиграть можно после выполнения.
Artur41 уровень
3 марта, 09:21
вспомнил задачу кроссворд с 20ого уровня, решил эту по подобию, не крутил никак матрицу, а просто в одномерный массив записывал элементы в нужном порядке.
King41 уровень, Санкт-Петербург
16 января, 10:57
С первого раза. Сам охренел. Кому совсем тяжко - рабочий алгоритм поворота здесь. Его надо только "чуть-чуть" подкорректировать под себя))
Евгений Горбунов38 уровень, Москва
6 января, 21:51
Если застряли с задачей, попробуйте так: 1) создаем 2 метода : 1 - переворачивает массив (т.е gameTile[i]); 2 - поворачивает массив (меняем строки и столбцы местами); 2) аналогично методу left пишем остальные пункты, добавляя методы из 1 пункта в нужные места; P.S. метод up() аналогичен(почти) left() , а метод down() аналогичен(почти) rigth()