Class: Whatnot::DimacsCNFVar
- Inherits:
-
Object
- Object
- Whatnot::DimacsCNFVar
- Defined in:
- lib/whatnot/dimacs_cnf_var.rb
Instance Attribute Summary collapse
-
#all_keys_as_array ⇒ Object
readonly
Returns the value of attribute all_keys_as_array.
-
#key_iter ⇒ Object
readonly
Returns the value of attribute key_iter.
Class Method Summary collapse
Instance Method Summary collapse
- #argument_set ⇒ Object
-
#initialize(name, domain, key_iter: 1) ⇒ DimacsCNFVar
constructor
A new instance of DimacsCNFVar.
- #matching_pairs(var2) ⇒ Object
- #value_name_from_pair(name, value) ⇒ Object
Constructor Details
#initialize(name, domain, key_iter: 1) ⇒ DimacsCNFVar
Returns a new instance of DimacsCNFVar.
29 30 31 32 33 34 35 |
# File 'lib/whatnot/dimacs_cnf_var.rb', line 29 def initialize(name, domain, key_iter: 1) @name = name @domain = domain @key_iter = key_iter generate_keys end |
Instance Attribute Details
#all_keys_as_array ⇒ Object (readonly)
Returns the value of attribute all_keys_as_array.
27 28 29 |
# File 'lib/whatnot/dimacs_cnf_var.rb', line 27 def all_keys_as_array @all_keys_as_array end |
#key_iter ⇒ Object (readonly)
Returns the value of attribute key_iter.
27 28 29 |
# File 'lib/whatnot/dimacs_cnf_var.rb', line 27 def key_iter @key_iter end |
Class Method Details
.interpret(solution) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/whatnot/dimacs_cnf_var.rb', line 15 def self.interpret(solution) keys = solution.split(" ").map(&:to_i).select { |k| k > 0 } values = DimacsCNFVar.names.values_at(*keys) values = values.map do |val| key, v = *val.match(/\A([^=]+)=(.*)\Z/)[1..2] [key.to_sym, JSON.parse(v)] end Hash[values] end |
.keys ⇒ Object
7 8 9 |
# File 'lib/whatnot/dimacs_cnf_var.rb', line 7 def self.keys @@keys ||= {} end |
.names ⇒ Object
3 4 5 |
# File 'lib/whatnot/dimacs_cnf_var.rb', line 3 def self.names @@names ||= {} end |
Instance Method Details
#argument_set ⇒ Object
43 44 45 |
# File 'lib/whatnot/dimacs_cnf_var.rb', line 43 def argument_set keys_by_value.to_a end |
#matching_pairs(var2) ⇒ Object
37 38 39 40 41 |
# File 'lib/whatnot/dimacs_cnf_var.rb', line 37 def matching_pairs(var2) (self.keys_by_value.keys & var2.keys_by_value.keys).map do |value| [self.keys_by_value[value], var2.keys_by_value[value]] end end |
#value_name_from_pair(name, value) ⇒ Object
11 12 13 |
# File 'lib/whatnot/dimacs_cnf_var.rb', line 11 def value_name_from_pair(name, value) "#{name}=#{value.to_json}" end |