Module: NDHash

Defined in:
lib/ndhash.rb,
lib/ndhash/version.rb

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.add_entry(hash, level, entry_num:) ⇒ Object



27
28
29
# File 'lib/ndhash.rb', line 27

def add_entry(hash, level, entry_num:)
  hash[get_entry_key(level, entry_num)] = get_value(level, entry_num)
end

.generate(level:, entries_per_level: 2, pointers_per_level: 1) ⇒ Object



6
7
8
# File 'lib/ndhash.rb', line 6

def generate(level:, entries_per_level:2, pointers_per_level:1)
  generate_rec(1, level, entries_per_level, pointers_per_level)
end

.generate_rec(current_level, max_level, entries_per_level, pointers_per_level) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ndhash.rb', line 10

def generate_rec(current_level, max_level, entries_per_level, pointers_per_level)
  hash = {}

  entries_per_level.times do |n|
    add_entry(hash, current_level, entry_num: n+1)
  end

  unless current_level == max_level
    pointers_per_level.times do |n|
      next_level = generate_rec(current_level+1, max_level, entries_per_level, pointers_per_level)
      hash[get_pointer_key(current_level, entry_num: n+1)] = next_level
    end
  end

  hash
end

.get_entry_key(level, entry_num) ⇒ Object



31
32
33
# File 'lib/ndhash.rb', line 31

def get_entry_key(level, entry_num)
  "level_#{level}_key_#{entry_num}"
end

.get_pointer_key(level, entry_num:) ⇒ Object



39
40
41
# File 'lib/ndhash.rb', line 39

def get_pointer_key(level, entry_num:)
  "level_#{level}_pointer_#{entry_num}"
end

.get_value(level, entry_num) ⇒ Object



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

def get_value(level, entry_num)
  "level_#{level}_value_#{entry_num}"
end