Giter VIP home page Giter VIP logo

shingokisolver's People

Contributors

joshprzybyszewski avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

shingokisolver's Issues

I shouldn't need to "walk the line" every single time

Current

When I want to know if a puzzle is valid or not, I will check that all of the nodes are complete, and then that there is a single loop that sees all of the nodes. This means I need to walk from coord to coord along edges that exist, keeping track of the coords I see along the way.

Screenshot from 2021-04-25 14-38-12

Future

As we add edges, we should keep track of how they connect to each other, and what nodes they see along their path. Then, when we add more edges, we can just walk those and see if they create loops or if they see more Nodes.

type segmentCap struct{
  coord model.NodeCoord
  edge model.EdgePair
}

type pathSegment struct{
  start segmentCap
  end segmentCap

  seenNodes []model.Node
}

then on the Puzzle, we could keep a []pathSegment. And once we've runQueue on performUpdates, we can look at all of the coords we have in all of the segmentCaps, and only need to walk out from there. We could do this on every performUpdates, or only once we've completed all nodes. There is benefit both ways.

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.