require 'ruby-fann'

train = RubyFann::TrainData.new(
  inputs: [
    [0,0,1,0,1,1,0,0,1,0,0,1,0,0,1], [1,1,1,0,0,1,1,1,1,1,0,0,1,1,1],
    [1,1,1,0,0,1,1,1,1,0,0,1,1,1,1], [1,0,1,1,0,1,1,1,1,0,0,1,0,0,1],
    [1,1,1,1,0,0,1,1,1,0,0,1,1,1,1], [1,1,1,1,0,0,1,1,1,1,0,1,1,1,1],
    [1,1,1,0,0,1,0,1,0,1,0,0,1,0,0], [1,1,1,1,0,1,1,1,1,1,0,1,1,1,1],
    [1,1,1,1,0,1,1,1,1,0,0,1,1,1,1]
  ],
  desired_outputs: [ [1,0,0,0,0,0,0,0,0], [0,1,0,0,0,0,0,0,0],
                     [0,0,1,0,0,0,0,0,0], [0,0,0,1,0,0,0,0,0],
                     [0,0,0,0,1,0,0,0,0], [0,0,0,0,0,1,0,0,0],
                     [0,0,0,0,0,0,1,0,0], [0,0,0,0,0,0,0,1,0],
                     [0,0,0,0,0,0,0,0,1] ]
)

fann = RubyFann::Standard.new(
  num_inputs: 15,
  hidden_neurons: [30],
  num_outputs: 9
)

fann.learning_rate = 0.5
fann.momentum = 0.5

fann.train_on_data(train, 10000, 1000, 0.001)

outputs = fann.run([0,0,1,0,1,1,0,0,1,0,0,1,0,0,1])
m = outputs.max
puts "Result: #{( outputs.find_index { |x| x == m } ) + 1}"