Skip to content

Instantly share code, notes, and snippets.

@bmaland
Created September 3, 2009 10:37
Show Gist options
  • Select an option

  • Save bmaland/180234 to your computer and use it in GitHub Desktop.

Select an option

Save bmaland/180234 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
patterns = []
[1, 2, 3].each do |i|
[4, 5, 6].each do |ii|
[7, 8].each do |iii|
input = [i, ii, iii]
output = [i, ii]
output << (iii == 7 ? 8 : 7)
patterns << [input, output]
end
end
end
patterns = patterns.delete_if { |i| i.grep([1, 4, 7]) != [] }
# The small start pattern
# patterns = [
# [[2, 5, 8], [2, 5, 7]],
# [[1, 4, 7], [1, 4, 7]],
# ]
patterns << [[1, 4, 7], [1, 4, 7]] # an exception
patterns << [[1, 4, 8], [1, 4, 7]]
ary_bin = {}
def encode(i)
case i
when 1: [1, 0, 0]
when 2: [0, 1, 0]
when 3: [0, 0, 1]
when 4: [1, 0, 0]
when 5: [0, 1, 0]
when 6: [0, 0, 1]
when 7: [1, 0]
when 8: [0, 1]
end
end
patterns.flatten(1).uniq.each do |pattern|
bin = pattern.collect { |i| encode(i) }.flatten.join(" ")
ary_bin[pattern] = bin
end
puts "SNNS pattern definition file V3.2"
puts "generated at #{Time.now.strftime("%a %h %d %H:%M:%S %Y")}"
puts
puts
puts "No. of patterns : #{patterns.size}"
puts "No. of input units : 8"
puts "No. of output units : 8"
puts
patterns.each_with_index do |pattern, i|
puts "# Input pattern #{i+1}:"
puts "# (#{pattern[0].join(" ")})"
puts ary_bin[pattern[0]]
puts "# Output pattern #{i+1}:"
puts "# (#{pattern[1].join(" ")})"
puts ary_bin[pattern[1]]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment