Skip to content

Instantly share code, notes, and snippets.

@teamon
Created November 28, 2010 13:57
Show Gist options
  • Save teamon/718949 to your computer and use it in GitHub Desktop.
Save teamon/718949 to your computer and use it in GitHub Desktop.
LUC
# Tabela przejsc miedzy stanami
# q(t) z(t) q(t+1)
0 0 3
0 1 1
0 2 2
1 0 1
1 1 1
1 2 1
2 0 5
2 1 1
2 2 1
3 0 3
3 1 4
3 2 5
4 0 1
4 1 1
4 2 1
5 0 5
5 1 4
5 2 1
J2 = Q1 ~Q0 ~Z1 + Q1 Z0 + Q1 Q0 Z1
K2 = ~Q0 + Z1
J1 = ~Q2 ~Q0 ~Z0
K1 = ~Q0 + Z0 + Z1
J0 = ~Q1 ~Z1 + Q1 ~Z0 + Q2
K0 = Q1 Z0 + Q2 Z0
http://cl.ly/0Z0e0X3E3S0B2G1n3X04 - table
http://cl.ly/0K1n2u1K2D1s0d3o2T2C - exp
#!/usr/bin/env ruby
# Usage: cat data.txt | ./luc.rb -t
# cat exp.txt | ./luc.rb -e
input = STDIN.readlines.reject {|e| e =~/^#/ }
case ARGV.first
when "-t"
JK = [
[["0", "*"], ["1", "*"]],
[["*", "1"], ["*", "0"]]
]
qts = []
zts = []
qt1s = []
input.each do |line|
a = line.split.map(&:to_i)
qts << a[0]
zts << a[1]
qt1s << a[2]
end
qts_size = qts.max.to_s(2).size
zts_size = zts.max.to_s(2).size
qt_header = qts_size.times.to_a.reverse.map {|e| "Q#{e}" }.join(" ")
zt_header = zts_size.times.to_a.reverse.map {|e| "Z#{e}" }.join(" ")
jk_header = qts_size.times.to_a.reverse.map do |i|
"J#{i} K#{i}"
end.join(" | ")
header = "Q Z | Q' || #{qt_header} | #{zt_header} || #{qt_header} || #{jk_header}"
puts header
puts "-" * header.size
qts.each_with_index do |qt, i|
qt_s = qt.to_s(2).rjust(qts_size, "0").split(//)
zt_s = zts[i].to_s(2).rjust(zts_size, "0").split(//)
qt1_s = qt1s[i].to_s(2).rjust(qts_size, "0").split(//)
q_h = qt_s.map{|e| e.rjust(2) }.join(" ")
z_h = zt_s.map{|e| e.rjust(2) }.join(" ")
q1_h = qt1_s.map{|e| e.rjust(2) }.join(" ")
qt_i = qt_s.map(&:to_i)
qt1_i = qt1_s.map(&:to_i)
jk = qt_i.map.with_index do |q, i|
JK[q][qt1_i[i]].map {|e| e.rjust(2)}.join(" ")
end.join(" | ")
puts "%d %d | %d || %s | %s || %s || %s" % [qt, zts[i], qt1s[i], q_h, z_h, q1_h, jk]
end
when "-e"
puts "\\\\" + input.join.gsub(/~([A-Z0-9]+)/, "\\overline{\\1}").gsub(/\n/, " \\\\\\\n")
end
 ~/Desktop/luc % cat data.txt | ./luc.rb -t
Q Z | Q' || Q2 Q1 Q0 | Z1 Z0 || Q2 Q1 Q0 || J2 K2 | J1 K1 | J0 K0
------------------------------------------------------------------
0 0 | 3 || 0 0 0 | 0 0 || 0 1 1 || 0 * | 1 * | 1 *
0 1 | 1 || 0 0 0 | 0 1 || 0 0 1 || 0 * | 0 * | 1 *
0 2 | 2 || 0 0 0 | 1 0 || 0 1 0 || 0 * | 1 * | 0 *
1 0 | 1 || 0 0 1 | 0 0 || 0 0 1 || 0 * | 0 * | * 0
1 1 | 1 || 0 0 1 | 0 1 || 0 0 1 || 0 * | 0 * | * 0
1 2 | 1 || 0 0 1 | 1 0 || 0 0 1 || 0 * | 0 * | * 0
2 0 | 5 || 0 1 0 | 0 0 || 1 0 1 || 1 * | * 1 | 1 *
2 1 | 1 || 0 1 0 | 0 1 || 0 0 1 || 0 * | * 1 | 1 *
2 2 | 1 || 0 1 0 | 1 0 || 0 0 1 || 0 * | * 1 | 1 *
3 0 | 3 || 0 1 1 | 0 0 || 0 1 1 || 0 * | * 0 | * 0
3 1 | 4 || 0 1 1 | 0 1 || 1 0 0 || 1 * | * 1 | * 1
3 2 | 5 || 0 1 1 | 1 0 || 1 0 1 || 1 * | * 1 | * 0
4 0 | 1 || 1 0 0 | 0 0 || 0 0 1 || * 1 | 0 * | 1 *
4 1 | 1 || 1 0 0 | 0 1 || 0 0 1 || * 1 | 0 * | 1 *
4 2 | 1 || 1 0 0 | 1 0 || 0 0 1 || * 1 | 0 * | 1 *
5 0 | 5 || 1 0 1 | 0 0 || 1 0 1 || * 0 | 0 * | * 0
5 1 | 4 || 1 0 1 | 0 1 || 1 0 0 || * 0 | 0 * | * 1
5 2 | 1 || 1 0 1 | 1 0 || 0 0 1 || * 1 | 0 * | * 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment