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