|context> => |context: H I pat rec> # # # # # # ##### # # # # # # pixels |letter: H> => |pixel: 1: 1> + |pixel: 1: 5> pixels |letter: H> +=> |pixel: 2: 1> + |pixel: 2: 5> pixels |letter: H> +=> |pixel: 3: 1> + |pixel: 3: 5> pixels |letter: H> +=> |pixel: 4: 1> + |pixel: 4: 2> + |pixel: 4: 3> + |pixel: 4: 4> + |pixel: 4: 5> pixels |letter: H> +=> |pixel: 5: 1> + |pixel: 5: 5> pixels |letter: H> +=> |pixel: 6: 1> + |pixel: 6: 5> pixels |letter: H> +=> |pixel: 7: 1> + |pixel: 7: 5> dim-1 |letter: H> => |dimension: 5> dim-2 |letter: H> => |dimension: 7> # # # # # ### # # # # # # pixels |noisy: H> => |pixel: 1: 5> pixels |noisy: H> +=> |pixel: 2: 1> + |pixel: 2: 5> pixels |noisy: H> +=> |pixel: 3: 1> + |pixel: 3: 5> pixels |noisy: H> +=> |pixel: 4: 1> + |pixel: 4: 2> + |pixel: 4: 3> + |pixel: 4: 5> pixels |noisy: H> +=> |pixel: 5: 1> pixels |noisy: H> +=> |pixel: 6: 1> + |pixel: 6: 5> pixels |noisy: H> +=> |pixel: 7: 1> + |pixel: 7: 5> dim-1 |noisy: H> => |dimension: 5> dim-2 |noisy: H> => |dimension: 7> # # # # ### ##### ## # # # ### # pixels |noisy: H2> => |pixel: 1: 1> + |pixel: 1: 5> pixels |noisy: H2> +=> |pixel: 2: 1> pixels |noisy: H2> +=> |pixel: 3: 1> + |pixel: 3: 3> + |pixel: 3: 4> + |pixel: 3: 5> pixels |noisy: H2> +=> |pixel: 4: 1> + |pixel: 4: 2> + |pixel: 4: 3> + |pixel: 4: 4> + |pixel: 4: 5> pixels |noisy: H2> +=> |pixel: 5: 1> + |pixel: 5: 2> + |pixel: 5: 5> pixels |noisy: H2> +=> |pixel: 6: 1> + |pixel: 6: 5> pixels |noisy: H2> +=> |pixel: 7: 1> + |pixel: 7: 2> + |pixel: 7: 3> + |pixel: 7: 5> dim-1 |noisy: H2> => |dimension: 5> dim-2 |noisy: H2> => |dimension: 7> ##### # # # # # ##### pixels |letter: I> => |pixel: 1: 1> + |pixel: 1: 2> + |pixel: 1: 3> + |pixel: 1: 4> + |pixel: 1: 5> pixels |letter: I> +=> |pixel: 2: 3> pixels |letter: I> +=> |pixel: 3: 3> pixels |letter: I> +=> |pixel: 4: 3> pixels |letter: I> +=> |pixel: 5: 3> pixels |letter: I> +=> |pixel: 6: 3> pixels |letter: I> +=> |pixel: 7: 1> + |pixel: 7: 2> + |pixel: 7: 3> + |pixel: 7: 4> + |pixel: 7: 5> dim-1 |letter: I> => |dimension: 5> dim-2 |letter: I> => |dimension: 7> #### # # # # ### pixels |noisy: I> => |pixel: 1: 1> + |pixel: 1: 2> + |pixel: 1: 3> + |pixel: 1: 4> pixels |noisy: I> +=> |pixel: 2: 3> pixels |noisy: I> +=> |> pixels |noisy: I> +=> |> pixels |noisy: I> +=> |pixel: 5: 3> pixels |noisy: I> +=> |pixel: 6: 3> pixels |noisy: I> +=> |pixel: 7: 1> + |pixel: 7: 3> + |pixel: 7: 4> + |pixel: 7: 5> dim-1 |noisy: I> => |dimension: 5> dim-2 |noisy: I> => |dimension: 7> ## # ### # # ### #### ##### pixels |noisy: I2> => |pixel: 1: 1> + |pixel: 1: 2> + |pixel: 1: 5> pixels |noisy: I2> +=> |pixel: 2: 2> + |pixel: 2: 3> + |pixel: 2: 4> pixels |noisy: I2> +=> |pixel: 3: 3> pixels |noisy: I2> +=> |pixel: 4: 3> pixels |noisy: I2> +=> |pixel: 5: 3> + |pixel: 5: 4> + |pixel: 5: 5> pixels |noisy: I2> +=> |pixel: 6: 1> + |pixel: 6: 2> + |pixel: 6: 3> + |pixel: 6: 4> pixels |noisy: I2> +=> |pixel: 7: 1> + |pixel: 7: 2> + |pixel: 7: 3> + |pixel: 7: 4> + |pixel: 7: 5> dim-1 |noisy: I2> => |dimension: 5> dim-2 |noisy: I2> => |dimension: 7> -- OK. I wrote some code to automate this somewhat. -- See: play_with_pat_rec.py -- Now I only have to do the ascii art, and the code spits out the rules. -- string = ("######\n" -- "# #\n" -- "# #\n" -- "# #\n" -- "# #\n" -- "# #\n" -- "######") -- create_pixel_rules("letter: O",string) ###### # # # # # # # # # # ###### pixels |letter: O> +=> |pixel: 1: 1> + |pixel: 1: 2> + |pixel: 1: 3> + |pixel: 1: 4> + |pixel: 1: 5> + |pixel: 1: 6> pixels |letter: O> +=> |pixel: 2: 1> + |pixel: 2: 6> pixels |letter: O> +=> |pixel: 3: 1> + |pixel: 3: 6> pixels |letter: O> +=> |pixel: 4: 1> + |pixel: 4: 6> pixels |letter: O> +=> |pixel: 5: 1> + |pixel: 5: 6> pixels |letter: O> +=> |pixel: 6: 1> + |pixel: 6: 6> pixels |letter: O> +=> |pixel: 7: 1> + |pixel: 7: 2> + |pixel: 7: 3> + |pixel: 7: 4> + |pixel: 7: 5> + |pixel: 7: 6> dim-1 |letter: O> => |dimension: 6> dim-2 |letter: O> => |dimension: 7>