defmodule Blacklist do @blacklist %{ :initial => %{ ?a => '', ?b => 'cbdfgjkmnpqstvxz', ?c => 'bcdfgjkmpqstvwxy', ?d => 'bdcfgkmpqstxz', ?e => '', ?f => 'bcdghkmpqstvxz', ?g => 'bcfgkmpqstvxz', ?h => 'bcdfghjkpqtvwxz', ?i => 'iwy', ?j => 'bcdfgjkmnpqstvxz', ?k => 'bcdfgkjmpqtxz', ?l => 'bcdfgjkmnpqrstvwxz', ?m => 'cdfgjkmqtvxz', ?n => 'cfghklmnpqtx', ?o => '', ?p => 'bcdgjkmpqvxz', ?q => 'bcdfghjklmnopqrstvwxz', ?r => 'cgijlprtqwx', ?s => 'dsqx', ?t => 'cdfgpqtx', ?u => 'y', ?v => 'bcdfgjklmnpqstvwxz', ?w => 'bcdfgjklmnpqstvwxz', ?x => 'abcdfgjklmnopqrtusvwxz', ?y => 'bcdfghjkmnopqtvwxyz', ?z => 'cfkjpqstvwx' } |> Map.new(fn {k, v} -> {k, MapSet.new(v)} end), :sequential => %{ ?a => '', ?b => 'qx', ?c => 'x', ?d => 'x', ?e => '', ?f => 'vx', ?g => 'q', ?h => 'hqx', ?i => 'iwy', ?j => 'bcjklpsxz', ?k => 'cqx', ?l => '', ?m => 'x', ?n => '', ?o => 'h', ?p => 'bx', ?q => 'acghjkoquwxy', ?r => '', ?s => 'x', ?t => 'x', ?u => 'w', ?v => 'cpsvwx', ?w => 'qx', ?x => 'gsz', ?y => 'hiqy', ?z => 'jsx' } |> Map.new(fn {k, v} -> {k, MapSet.new(v)} end), :final => %{ ?a => '', ?b => 'cjkpqwxv', ?c => 'bgjnqwxv', ?d => 'ckjqx', ?e => '', ?f => 'bdvwxz', ?g => 'bfpqw', ?h => 'dhqxwy', ?i => 'iwy', ?j => '', ?k => 'bcgjnpqwx', ?l => 'w', ?m => 'gjwx', ?n => 'bjpw', ?o => '', ?j => 'bcfghmnpqsvwxz', ?p => 'bgjqvx', ?q => 'abcdeghjkmnopqtuvwxyz', ?r => '', ?s => 'bdjvx', ?t => 'cdgpx', ?u => 'wy', ?v => 'bcfpqsvwx', ?w => 'bghjrqvx', ?x => 'bcdefgjkpqsvwxz', ?y => 'chiqwxy', ?z => 'jsx' } |> Map.new(fn {k, v} -> {k, MapSet.new(v)} end) } def get(rule, char) when rule in [:initial, :sequential, :final] do @blacklist[rule][char] end end