Mercurial > maze-src
view wilsons.rb @ 0:1eef88068f9f tip
initial commit of maze game source
| author | ferencd |
|---|---|
| date | Sun, 15 Sep 2019 11:46:47 +0200 |
| parents | |
| children |
line wrap: on
line source
#--- # Excerpted from "Mazes for Programmers", # published by The Pragmatic Bookshelf. # Copyrights apply to this code. It may not be used to create training material, # courses, books, articles, and the like. Contact us if you are in doubt. # We make no guarantees that this code is fit for any purpose. # Visit http://www.pragmaticprogrammer.com/titles/jbmaze for more book information. #--- class Wilsons def on(grid) unvisited = [] grid.each_cell { |cell| unvisited << cell } first = unvisited.sample unvisited.delete(first) while unvisited.any? cell = unvisited.sample path = [cell] while unvisited.include?(cell) cell = cell.neighbors.sample position = path.index(cell) if position path = path[0..position] else path << cell end end 0.upto(path.length-2) do |index| path[index].link(path[index + 1]) unvisited.delete(path[index]) end end grid end end
