Sha256: 6f6903011b673d39ca3fa6b57850abc88e14b9cacc1545a4cb26d6b19457facc
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
module DpllSolver module Parsers class DimacsParser attr_accessor :file, :num_vars, :num_clauses, :clauseset def initialize(file_path) @file = file_path @clauseset = Set.new @num_clauses = 0 @num_vars = 0 parse end private def parse begin lines = open(@file).readlines lines.each do |line| line = line.gsub("\n", "").strip.split next if line[0] == "c" if line[0] == "p" @num_vars = line[2].to_i @num_clauses = line[3].to_i else line.pop if line.count > 0 clause = DpllSolver::Formulas::Clause.new line.each do |num| clause.add(create_literal(num)) end @clauseset.add(clause) end end end rescue Exception => e puts e raise IOError, "Could not parse file #{@file}!" end end def create_literal(num) var = DpllSolver::Formulas::Variable.new("x#{num.to_i.abs}") DpllSolver::Formulas::Literal.new(var, num.to_i > 0) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dpll_solver-0.0.1 | lib/dpll_solver/parsers/dimacs_parser.rb |