class Graph::Square

Attributes

side[RW]
vertices[RW]

Public Class Methods

new(n: 3) click to toggle source
Calls superclass method Graph::new
# File lib/square.rb, line 7
def initialize(n: 3)
  super()

  @side = n

  @vertices = []
  n.times do |i|
    @vertices[i] = []
    n.times do |j|
      @vertices[i] << Vertex.new.tap { |v| v.label = "#{i},#{j}", v.i = i, v.j = j }
    end
  end
  n.times do |i|
    n.times do |j|
      if j < n - 1
        add_edge(from: vertices[i][j], to: vertices[i][j+1])
      end
      if i < n - 1
        add_edge(from: vertices[i][j], to: vertices[i+1][j])
      end
    end
  end
end

Public Instance Methods

add_hori_barrier(i:, j:, size:) click to toggle source
# File lib/square.rb, line 31
def add_hori_barrier(i:, j:, size:)
  3.times do |offset_v|
    size.times do |offset_h|
      edges[vertices[i + offset_v][j + offset_h].id] = []
    end
  end
end
add_vert_barrier(i:, j:, size:) click to toggle source
# File lib/square.rb, line 39
def add_vert_barrier(i:, j:, size:)
  3.times do |offset_h|
    size.times do |offset_v|
      edges[vertices[i + offset_v][j + offset_h].id] = []
    end
  end
end
print_vertices(start: nil, speed: 300) click to toggle source