Sha256: 9dddf7bae8477217ec3903d2d335703161946214371036a5f57f55e61f5e2f19

Contents?: true

Size: 758 Bytes

Versions: 2

Compression:

Stored size: 758 Bytes

Contents

require 'tempfile'

module Ravensat
  class Solver
    attr_accessor :name
    def initialize( default_solver_name = "arcteryx" )
      @name = default_solver_name
    end

    def solve( cnf )
      encoder = DimacsEncoder.new
      @input_file = Tempfile.open(["ravensat",".cnf"])
      @output_file = Tempfile.open(["ravensat",".mdl"])

      @input_file.write encoder.to_dimacs(cnf)
      @input_file.flush

      case @name
      when "arcteryx"
        Arcteryx.solve(@input_file.to_path, @output_file.to_path)
      else
        system("#{@name} #{@input_file.to_path} #{@output_file.to_path}")
      end

      decoder = DimacsDecoder.new
      model = @output_file.read.split("\n")
      decoder.decode(model, encoder.name_table)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ravensat-0.3.2 lib/ravensat/solver.rb
ravensat-0.3.1 lib/ravensat/solver.rb