Class: BrowserOfBabel::Randomizer

Inherits:
Object
  • Object
show all
Defined in:
lib/browser_of_babel/randomizer.rb

Overview

Gets you to random places in Library of Babel.

Constant Summary collapse

MAX_HEX =
("z" * 3260).to_i(36)

Instance Method Summary collapse

Constructor Details

#initialize(random: ::Random.new) ⇒ Randomizer

Returns a new instance of Randomizer.



10
11
12
13
# File 'lib/browser_of_babel/randomizer.rb', line 10

def initialize(random: ::Random.new)
  @random = random
  @locator = Locator.new
end

Instance Method Details

#hexHex

Get a random hex.

Returns:



23
24
25
# File 'lib/browser_of_babel/randomizer.rb', line 23

def hex
  @locator.from_identifiers(hex_identifier) # : Hex
end

#hex_identifierString

Get a random hex indetifier.

Returns:

  • (String)


17
18
19
# File 'lib/browser_of_babel/randomizer.rb', line 17

def hex_identifier
  @random.rand(MAX_HEX).to_s(36)
end

#pagePage

Get a random page in a random volume and so on.

Returns:



75
76
77
78
79
# File 'lib/browser_of_babel/randomizer.rb', line 75

def page
  @locator.from_identifiers(
    hex_identifier, wall_identifier, shelf_identifier, volume_identifier, page_identifier
  ) # : Page
end

#page_identifierInteger

Get a random page identifier.

Returns:

  • (Integer)


69
70
71
# File 'lib/browser_of_babel/randomizer.rb', line 69

def page_identifier
  @random.rand(1..410)
end

#shelfShelf

Get a random shelf on a random wall in a random hex.

Returns:



47
48
49
50
51
# File 'lib/browser_of_babel/randomizer.rb', line 47

def shelf
  @locator.from_identifiers(
    hex_identifier, wall_identifier, shelf_identifier
  ) # : Shelf
end

#shelf_identifierInteger

Get a random shelf identifier.

Returns:

  • (Integer)


41
42
43
# File 'lib/browser_of_babel/randomizer.rb', line 41

def shelf_identifier
  @random.rand(1..5)
end

#volumeVolume

Get a random volume on a random shelf and so on.

Returns:



61
62
63
64
65
# File 'lib/browser_of_babel/randomizer.rb', line 61

def volume
  @locator.from_identifiers(
    hex_identifier, wall_identifier, shelf_identifier, volume_identifier
  ) # : Volume
end

#volume_identifierInteger

Get a random volume identifier.

Returns:

  • (Integer)


55
56
57
# File 'lib/browser_of_babel/randomizer.rb', line 55

def volume_identifier
  @random.rand(1..32)
end

#wallWall

Get a random wall in a random hex.

Returns:



35
36
37
# File 'lib/browser_of_babel/randomizer.rb', line 35

def wall
  @locator.from_identifiers(hex_identifier, wall_identifier) # : Wall
end

#wall_identifierInteger

Get a random wall identifier.

Returns:

  • (Integer)


29
30
31
# File 'lib/browser_of_babel/randomizer.rb', line 29

def wall_identifier
  @random.rand(1..4)
end