DEV Community

dev.to staff
dev.to staff

Posted on

Daily Challenge #176 - Loopover

Setup

Loopover puzzles are 2D sliding puzzles that work more like flat rubik's cubes. Instead of having one open slot for pieces to slide into, the entire grid is filled with pieces tha wrap back around when you slide a row or column.

You can try it out at this sketch here: https://www.openprocessing.org/sketch/576328

To complete this challenge, implement a function to return a list of moves that will transform an unsolved grid into a solved one.

Consider the grid:

ABCDE
FGHIJ
KLMNO
PQRST
UVWXY

If we make the move R0 (move the 0th row right) then we get:

EABCD
FGHIJ
KLMNO
PQRST
UVWXY

Likewise, if we do L0 (move the 0th row left), we get:

ABCDE
FGHIJ
KLMNO
PQRST
UVWXY

Back to normal.

Say we make the move U2 (move the 2nd column up):

ABHDE
FGMIJ
KLRNO
PQWST
UVCXY

D2 (2nd column down) would then return us to the original grid. With all of this in mind, our tests will give you the scrambled grid as input. Please return an array of the moves taken to unscramble the grid.

For example:

SCRAMBLED GRID:

DEABC
FGHIJ
KLMNO
PQRST
UVWXY

SOLVED GRID:

ABCDE
FGHIJ
KLMNO
PQRST
UVWXY

One possible solution would be ["L0", "L0"] as moving the top row left twice would result in the original, solved grid. Another would be ["R0", "R0", "R0"] etc. etc.

Tests

"ACDBE\nFGHIJ\nKLMNO\nPQRST\nUVWXY"
"ABCDE\nKGHIJ\nPLMNO\nFQRST\nUVWXY"

Some of these can be kind of tricky. Good luck!


This challenge comes from jaybruce1998 on CodeWars. Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!

Want to propose a challenge idea for a future post? Email yo+challenge@dev.to with your suggestions!

Top comments (1)