Coder Social home page Coder Social logo

Comments (4)

jingyulim1 avatar jingyulim1 commented on September 15, 2024

For move, you need to track where the "." is. You can do this by using a number (since the grid only hold interger) that you won't use in the puzzle the hold the "." in the grid. Then, proceed to check if that number is either in same row, different column by 1 or different row by 1, same column with the input number(Math.abs can be helpful). If so, then set a new grid and return a new Puzzle, else return this.

For isSolved, remember that creating a new Puzzle returns a solved Puzzle. So you can just compare the toString().

Hope this helps.

from 2122-s2.

GraceYongXM avatar GraceYongXM commented on September 15, 2024

To add on, when checking whether the number is beside the ".", do take note of special cases which will cause the indexOutOfBound error!

from 2122-s2.

calvinseptyanto avatar calvinseptyanto commented on September 15, 2024

Hi,

I think one of the easiest way is to make another constructor that has additional currentBlankPosition parameter. In that way you can easily check whether the 1D pos translation of the number that you want to swap to the currentBlankPosition (in 1D translation ozo)

*Also can interpret "." as 0 in your ImList, and do filter the 0 when you print it out

from 2122-s2.

undeser avatar undeser commented on September 15, 2024

Hi,

What worked for me was adding 0 into Grid2D, since it can only take in Integer inputs, to replace the ".". Also, a way to identify the position of the 0, both row and column positions.

Afterwards, checking if num from Puzzle move(int num) is
(1) same row as 0 or;
(2) same column as 0 but are on top of one another

Lastly, it is to edit the Grid2D using the .set() function and return a new Puzzle which is initialised using this edited Grid2D.

from 2122-s2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.