blob: f991ad0ab975929cc316e062af1db0c1059c171e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#!/usr/bin/ruby
#
# $Id$
# The script finds the fragments
#
require "xkbparser.rb"
baseDir = "../.."
symbolsDir = "#{baseDir}/symbols"
#symbolsDir = "."
parser = Parser.new
allSyms = parser.parse("#{symbolsDir}/inet")
everything = allSyms.merge
everything.filter(1)
#numCombinations = 1
#puts "everything:"
#everything.find_all do | symName, keycodes |
#puts "#{symName}, #{keycodes.length} mappings -> "
# keycodes.find_all do | keycode, counter |
# puts " #{keycode} -> #{counter} occurences"
# end
# numCombinations *= (keycodes.length + 1)
#end
#puts "Total mappings: #{everything.length}/#{everything.full_length()}, #{numCombinations} combinations"
#
numCombinations = 0
allSyms.find_all do | symsName, symbols |
puts "n: #{symsName}"
# Counting only symbols which used more than once
numDupSymbols = symbols.keys.inject(0) do | rv, keycode |
c = everything.cardinality(keycode, symbols[keycode])
puts "#{keycode} -> #{symbols[keycode]}, #{c}"
(c > 0) ? rv : rv + 1
end
numCombinations += (1 << numDupSymbols)
puts "l: #{symbols.length} d: #{numDupSymbols} c: #{numCombinations}"
end
puts "numCombinations: #{numCombinations}"
|