Sha256: ba453e35c72716e9a9b5de81151a7c998303376aaf45cd35164a63d154c93615
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
#!/usr/bin/env ruby require "logicle" USAGE_MESSAGE = "logicle <CIRCUIT FILE TO SOLVE> " # Exit with usage message if user forgets to provide an input file. Kernel.abort(USAGE_MESSAGE) if ARGV.length == 0 # Capture inputs from the command line. circuit_file = ARGV.shift # Instantiate the Logicle::Simulator instance. simulator = Logicle::Simulator.new(circuit_file) puts "Loaded main circuit from file: #{ circuit_file }" # Prompt the user to enter states for each of the switch inputs. switches = simulator.inputs puts "The circuit to be solved requires #{ switches.count } input values (on/off)." switches.each_with_index do |switch, index| $stdout.printf("Switch %d on? (Y/n):>> ", index + 1) input = $stdin.gets.chomp.downcase.chars.first case input when "y" switch.type = :on when "n" switch.type = :off else puts "Invalid input!" redo end end # Evaluate the circuit. simulator.evaluate bulbs = simulator.outputs # Print out the bulb states. bulbs.each_with_index do |bulb, i| puts "Bulb \##{ i + 1 }: #{ bulb.state ? "on" : "off" }" end # Ask the user to save the result file. $stdout.write "Save output? (y/N): " save_output_flag = $stdin.gets.chomp if save_output_flag =~ /\Ay/i output_filename = File.realdirpath(circuit_file).sub(/\.tgf\Z/, "_solved.tgf") simulator.save(output_filename) end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
logicle-0.1.0 | bin/logicle |