Sha256: 28bfae501fc731ce186cf553193c703168ac631a556666de452eff500eea6572
Contents?: true
Size: 773 Bytes
Versions: 1
Compression:
Stored size: 773 Bytes
Contents
module Ravensat class DimacsEncoder attr_reader :name_table def initialize @name_table = {} end def to_dimacs(formula) return nil unless formula.cnf? dimacs_header = "p cnf #{formula.vars_size} #{formula.clauses_size}\n" dimacs_body = "" create_table(formula) formula.each do |node| case node when AndNode then dimacs_body << " 0\n" when OrNode then dimacs_body << " " when NotNode then dimacs_body << "-" when VarNode then dimacs_body << @name_table[node] end end dimacs_body << " 0\n" dimacs_header + dimacs_body end def create_table(formula) @name_table = formula.vars.zip((1..formula.vars.size).map(&:to_s)).to_h end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ravensat-0.3.2 | lib/ravensat/dimacs/dimacs_encoder.rb |