Code: Select all
var neighborhoodtable=JSON.parse('{"0,0,0,0,0,0,0,0,0":"B0","1,0,0,0,0,0,0,0,0":"B1c","0,1,0,0,0,0,0,0,0":"B1e","1,1,0,0,0,0,0,0,0":"B2a","0,0,1,0,0,0,0,0,0":"B1c","1,0,1,0,0,0,0,0,0":"B2c","0,1,1,0,0,0,0,0,0":"B2a","1,1,1,0,0,0,0,0,0":"B3i","0,0,0,1,0,0,0,0,0":"B1e","1,0,0,1,0,0,0,0,0":"B2a","0,1,0,1,0,0,0,0,0":"B2e","1,1,0,1,0,0,0,0,0":"B3a","0,0,1,1,0,0,0,0,0":"B2k","1,0,1,1,0,0,0,0,0":"B3n","0,1,1,1,0,0,0,0,0":"B3j","1,1,1,1,0,0,0,0,0":"B4a","0,0,0,0,1,0,0,0,0":"S0","1,0,0,0,1,0,0,0,0":"S1c","0,1,0,0,1,0,0,0,0":"S1e","1,1,0,0,1,0,0,0,0":"S2a","0,0,1,0,1,0,0,0,0":"S1c","1,0,1,0,1,0,0,0,0":"S2c","0,1,1,0,1,0,0,0,0":"S2a","1,1,1,0,1,0,0,0,0":"S3i","0,0,0,1,1,0,0,0,0":"S1e","1,0,0,1,1,0,0,0,0":"S2a","0,1,0,1,1,0,0,0,0":"S2e","1,1,0,1,1,0,0,0,0":"S3a","0,0,1,1,1,0,0,0,0":"S2k","1,0,1,1,1,0,0,0,0":"S3n","0,1,1,1,1,0,0,0,0":"S3j","1,1,1,1,1,0,0,0,0":"S4a","0,0,0,0,0,1,0,0,0":"B1e","1,0,0,0,0,1,0,0,0":"B2k","0,1,0,0,0,1,0,0,0":"B2e","1,1,0,0,0,1,0,0,0":"B3j","0,0,1,0,0,1,0,0,0":"B2a","1,0,1,0,0,1,0,0,0":"B3n","0,1,1,0,0,1,0,0,0":"B3a","1,1,1,0,0,1,0,0,0":"B4a","0,0,0,1,0,1,0,0,0":"B2i","1,0,0,1,0,1,0,0,0":"B3r","0,1,0,1,0,1,0,0,0":"B3e","1,1,0,1,0,1,0,0,0":"B4r","0,0,1,1,0,1,0,0,0":"B3r","1,0,1,1,0,1,0,0,0":"B4i","0,1,1,1,0,1,0,0,0":"B4r","1,1,1,1,0,1,0,0,0":"B5i","0,0,0,0,1,1,0,0,0":"S1e","1,0,0,0,1,1,0,0,0":"S2k","0,1,0,0,1,1,0,0,0":"S2e","1,1,0,0,1,1,0,0,0":"S3j","0,0,1,0,1,1,0,0,0":"S2a","1,0,1,0,1,1,0,0,0":"S3n","0,1,1,0,1,1,0,0,0":"S3a","1,1,1,0,1,1,0,0,0":"S4a","0,0,0,1,1,1,0,0,0":"S2i","1,0,0,1,1,1,0,0,0":"S3r","0,1,0,1,1,1,0,0,0":"S3e","1,1,0,1,1,1,0,0,0":"S4r","0,0,1,1,1,1,0,0,0":"S3r","1,0,1,1,1,1,0,0,0":"S4i","0,1,1,1,1,1,0,0,0":"S4r","1,1,1,1,1,1,0,0,0":"S5i","0,0,0,0,0,0,1,0,0":"B1c","1,0,0,0,0,0,1,0,0":"B2c","0,1,0,0,0,0,1,0,0":"B2k","1,1,0,0,0,0,1,0,0":"B3n","0,0,1,0,0,0,1,0,0":"B2n","1,0,1,0,0,0,1,0,0":"B3c","0,1,1,0,0,0,1,0,0":"B3q","1,1,1,0,0,0,1,0,0":"B4n","0,0,0,1,0,0,1,0,0":"B2a","1,0,0,1,0,0,1,0,0":"B3i","0,1,0,1,0,0,1,0,0":"B3j","1,1,0,1,0,0,1,0,0":"B4a","0,0,1,1,0,0,1,0,0":"B3q","1,0,1,1,0,0,1,0,0":"B4n","0,1,1,1,0,0,1,0,0":"B4w","1,1,1,1,0,0,1,0,0":"B5a","0,0,0,0,1,0,1,0,0":"S1c","1,0,0,0,1,0,1,0,0":"S2c","0,1,0,0,1,0,1,0,0":"S2k","1,1,0,0,1,0,1,0,0":"S3n","0,0,1,0,1,0,1,0,0":"S2n","1,0,1,0,1,0,1,0,0":"S3c","0,1,1,0,1,0,1,0,0":"S3q","1,1,1,0,1,0,1,0,0":"S4n","0,0,0,1,1,0,1,0,0":"S2a","1,0,0,1,1,0,1,0,0":"S3i","0,1,0,1,1,0,1,0,0":"S3j","1,1,0,1,1,0,1,0,0":"S4a","0,0,1,1,1,0,1,0,0":"S3q","1,0,1,1,1,0,1,0,0":"S4n","0,1,1,1,1,0,1,0,0":"S4w","1,1,1,1,1,0,1,0,0":"S5a","0,0,0,0,0,1,1,0,0":"B2k","1,0,0,0,0,1,1,0,0":"B3y","0,1,0,0,0,1,1,0,0":"B3k","1,1,0,0,0,1,1,0,0":"B4k","0,0,1,0,0,1,1,0,0":"B3q","1,0,1,0,0,1,1,0,0":"B4y","0,1,1,0,0,1,1,0,0":"B4q","1,1,1,0,0,1,1,0,0":"B5j","0,0,0,1,0,1,1,0,0":"B3r","1,0,0,1,0,1,1,0,0":"B4t","0,1,0,1,0,1,1,0,0":"B4j","1,1,0,1,0,1,1,0,0":"B5n","0,0,1,1,0,1,1,0,0":"B4z","1,0,1,1,0,1,1,0,0":"B5r","0,1,1,1,0,1,1,0,0":"B5q","1,1,1,1,0,1,1,0,0":"B6a","0,0,0,0,1,1,1,0,0":"S2k","1,0,0,0,1,1,1,0,0":"S3y","0,1,0,0,1,1,1,0,0":"S3k","1,1,0,0,1,1,1,0,0":"S4k","0,0,1,0,1,1,1,0,0":"S3q","1,0,1,0,1,1,1,0,0":"S4y","0,1,1,0,1,1,1,0,0":"S4q","1,1,1,0,1,1,1,0,0":"S5j","0,0,0,1,1,1,1,0,0":"S3r","1,0,0,1,1,1,1,0,0":"S4t","0,1,0,1,1,1,1,0,0":"S4j","1,1,0,1,1,1,1,0,0":"S5n","0,0,1,1,1,1,1,0,0":"S4z","1,0,1,1,1,1,1,0,0":"S5r","0,1,1,1,1,1,1,0,0":"S5q","1,1,1,1,1,1,1,0,0":"S6a","0,0,0,0,0,0,0,1,0":"B1e","1,0,0,0,0,0,0,1,0":"B2k","0,1,0,0,0,0,0,1,0":"B2i","1,1,0,0,0,0,0,1,0":"B3r","0,0,1,0,0,0,0,1,0":"B2k","1,0,1,0,0,0,0,1,0":"B3y","0,1,1,0,0,0,0,1,0":"B3r","1,1,1,0,0,0,0,1,0":"B4t","0,0,0,1,0,0,0,1,0":"B2e","1,0,0,1,0,0,0,1,0":"B3j","0,1,0,1,0,0,0,1,0":"B3e","1,1,0,1,0,0,0,1,0":"B4r","0,0,1,1,0,0,0,1,0":"B3k","1,0,1,1,0,0,0,1,0":"B4k","0,1,1,1,0,0,0,1,0":"B4j","1,1,1,1,0,0,0,1,0":"B5n","0,0,0,0,1,0,0,1,0":"S1e","1,0,0,0,1,0,0,1,0":"S2k","0,1,0,0,1,0,0,1,0":"S2i","1,1,0,0,1,0,0,1,0":"S3r","0,0,1,0,1,0,0,1,0":"S2k","1,0,1,0,1,0,0,1,0":"S3y","0,1,1,0,1,0,0,1,0":"S3r","1,1,1,0,1,0,0,1,0":"S4t","0,0,0,1,1,0,0,1,0":"S2e","1,0,0,1,1,0,0,1,0":"S3j","0,1,0,1,1,0,0,1,0":"S3e","1,1,0,1,1,0,0,1,0":"S4r","0,0,1,1,1,0,0,1,0":"S3k","1,0,1,1,1,0,0,1,0":"S4k","0,1,1,1,1,0,0,1,0":"S4j","1,1,1,1,1,0,0,1,0":"S5n","0,0,0,0,0,1,0,1,0":"B2e","1,0,0,0,0,1,0,1,0":"B3k","0,1,0,0,0,1,0,1,0":"B3e","1,1,0,0,0,1,0,1,0":"B4j","0,0,1,0,0,1,0,1,0":"B3j","1,0,1,0,0,1,0,1,0":"B4k","0,1,1,0,0,1,0,1,0":"B4r","1,1,1,0,0,1,0,1,0":"B5n","0,0,0,1,0,1,0,1,0":"B3e","1,0,0,1,0,1,0,1,0":"B4j","0,1,0,1,0,1,0,1,0":"B4e","1,1,0,1,0,1,0,1,0":"B5c","0,0,1,1,0,1,0,1,0":"B4j","1,0,1,1,0,1,0,1,0":"B5y","0,1,1,1,0,1,0,1,0":"B5c","1,1,1,1,0,1,0,1,0":"B6c","0,0,0,0,1,1,0,1,0":"S2e","1,0,0,0,1,1,0,1,0":"S3k","0,1,0,0,1,1,0,1,0":"S3e","1,1,0,0,1,1,0,1,0":"S4j","0,0,1,0,1,1,0,1,0":"S3j","1,0,1,0,1,1,0,1,0":"S4k","0,1,1,0,1,1,0,1,0":"S4r","1,1,1,0,1,1,0,1,0":"S5n","0,0,0,1,1,1,0,1,0":"S3e","1,0,0,1,1,1,0,1,0":"S4j","0,1,0,1,1,1,0,1,0":"S4e","1,1,0,1,1,1,0,1,0":"S5c","0,0,1,1,1,1,0,1,0":"S4j","1,0,1,1,1,1,0,1,0":"S5y","0,1,1,1,1,1,0,1,0":"S5c","1,1,1,1,1,1,0,1,0":"S6c","0,0,0,0,0,0,1,1,0":"B2a","1,0,0,0,0,0,1,1,0":"B3n","0,1,0,0,0,0,1,1,0":"B3r","1,1,0,0,0,0,1,1,0":"B4i","0,0,1,0,0,0,1,1,0":"B3q","1,0,1,0,0,0,1,1,0":"B4y","0,1,1,0,0,0,1,1,0":"B4z","1,1,1,0,0,0,1,1,0":"B5r","0,0,0,1,0,0,1,1,0":"B3a","1,0,0,1,0,0,1,1,0":"B4a","0,1,0,1,0,0,1,1,0":"B4r","1,1,0,1,0,0,1,1,0":"B5i","0,0,1,1,0,0,1,1,0":"B4q","1,0,1,1,0,0,1,1,0":"B5j","0,1,1,1,0,0,1,1,0":"B5q","1,1,1,1,0,0,1,1,0":"B6a","0,0,0,0,1,0,1,1,0":"S2a","1,0,0,0,1,0,1,1,0":"S3n","0,1,0,0,1,0,1,1,0":"S3r","1,1,0,0,1,0,1,1,0":"S4i","0,0,1,0,1,0,1,1,0":"S3q","1,0,1,0,1,0,1,1,0":"S4y","0,1,1,0,1,0,1,1,0":"S4z","1,1,1,0,1,0,1,1,0":"S5r","0,0,0,1,1,0,1,1,0":"S3a","1,0,0,1,1,0,1,1,0":"S4a","0,1,0,1,1,0,1,1,0":"S4r","1,1,0,1,1,0,1,1,0":"S5i","0,0,1,1,1,0,1,1,0":"S4q","1,0,1,1,1,0,1,1,0":"S5j","0,1,1,1,1,0,1,1,0":"S5q","1,1,1,1,1,0,1,1,0":"S6a","0,0,0,0,0,1,1,1,0":"B3j","1,0,0,0,0,1,1,1,0":"B4k","0,1,0,0,0,1,1,1,0":"B4j","1,1,0,0,0,1,1,1,0":"B5y","0,0,1,0,0,1,1,1,0":"B4w","1,0,1,0,0,1,1,1,0":"B5k","0,1,1,0,0,1,1,1,0":"B5q","1,1,1,0,0,1,1,1,0":"B6k","0,0,0,1,0,1,1,1,0":"B4r","1,0,0,1,0,1,1,1,0":"B5n","0,1,0,1,0,1,1,1,0":"B5c","1,1,0,1,0,1,1,1,0":"B6c","0,0,1,1,0,1,1,1,0":"B5q","1,0,1,1,0,1,1,1,0":"B6k","0,1,1,1,0,1,1,1,0":"B6n","1,1,1,1,0,1,1,1,0":"B7c","0,0,0,0,1,1,1,1,0":"S3j","1,0,0,0,1,1,1,1,0":"S4k","0,1,0,0,1,1,1,1,0":"S4j","1,1,0,0,1,1,1,1,0":"S5y","0,0,1,0,1,1,1,1,0":"S4w","1,0,1,0,1,1,1,1,0":"S5k","0,1,1,0,1,1,1,1,0":"S5q","1,1,1,0,1,1,1,1,0":"S6k","0,0,0,1,1,1,1,1,0":"S4r","1,0,0,1,1,1,1,1,0":"S5n","0,1,0,1,1,1,1,1,0":"S5c","1,1,0,1,1,1,1,1,0":"S6c","0,0,1,1,1,1,1,1,0":"S5q","1,0,1,1,1,1,1,1,0":"S6k","0,1,1,1,1,1,1,1,0":"S6n","1,1,1,1,1,1,1,1,0":"S7c","0,0,0,0,0,0,0,0,1":"B1c","1,0,0,0,0,0,0,0,1":"B2n","0,1,0,0,0,0,0,0,1":"B2k","1,1,0,0,0,0,0,0,1":"B3q","0,0,1,0,0,0,0,0,1":"B2c","1,0,1,0,0,0,0,0,1":"B3c","0,1,1,0,0,0,0,0,1":"B3n","1,1,1,0,0,0,0,0,1":"B4n","0,0,0,1,0,0,0,0,1":"B2k","1,0,0,1,0,0,0,0,1":"B3q","0,1,0,1,0,0,0,0,1":"B3k","1,1,0,1,0,0,0,0,1":"B4q","0,0,1,1,0,0,0,0,1":"B3y","1,0,1,1,0,0,0,0,1":"B4y","0,1,1,1,0,0,0,0,1":"B4k","1,1,1,1,0,0,0,0,1":"B5j","0,0,0,0,1,0,0,0,1":"S1c","1,0,0,0,1,0,0,0,1":"S2n","0,1,0,0,1,0,0,0,1":"S2k","1,1,0,0,1,0,0,0,1":"S3q","0,0,1,0,1,0,0,0,1":"S2c","1,0,1,0,1,0,0,0,1":"S3c","0,1,1,0,1,0,0,0,1":"S3n","1,1,1,0,1,0,0,0,1":"S4n","0,0,0,1,1,0,0,0,1":"S2k","1,0,0,1,1,0,0,0,1":"S3q","0,1,0,1,1,0,0,0,1":"S3k","1,1,0,1,1,0,0,0,1":"S4q","0,0,1,1,1,0,0,0,1":"S3y","1,0,1,1,1,0,0,0,1":"S4y","0,1,1,1,1,0,0,0,1":"S4k","1,1,1,1,1,0,0,0,1":"S5j","0,0,0,0,0,1,0,0,1":"B2a","1,0,0,0,0,1,0,0,1":"B3q","0,1,0,0,0,1,0,0,1":"B3j","1,1,0,0,0,1,0,0,1":"B4w","0,0,1,0,0,1,0,0,1":"B3i","1,0,1,0,0,1,0,0,1":"B4n","0,1,1,0,0,1,0,0,1":"B4a","1,1,1,0,0,1,0,0,1":"B5a","0,0,0,1,0,1,0,0,1":"B3r","1,0,0,1,0,1,0,0,1":"B4z","0,1,0,1,0,1,0,0,1":"B4j","1,1,0,1,0,1,0,0,1":"B5q","0,0,1,1,0,1,0,0,1":"B4t","1,0,1,1,0,1,0,0,1":"B5r","0,1,1,1,0,1,0,0,1":"B5n","1,1,1,1,0,1,0,0,1":"B6a","0,0,0,0,1,1,0,0,1":"S2a","1,0,0,0,1,1,0,0,1":"S3q","0,1,0,0,1,1,0,0,1":"S3j","1,1,0,0,1,1,0,0,1":"S4w","0,0,1,0,1,1,0,0,1":"S3i","1,0,1,0,1,1,0,0,1":"S4n","0,1,1,0,1,1,0,0,1":"S4a","1,1,1,0,1,1,0,0,1":"S5a","0,0,0,1,1,1,0,0,1":"S3r","1,0,0,1,1,1,0,0,1":"S4z","0,1,0,1,1,1,0,0,1":"S4j","1,1,0,1,1,1,0,0,1":"S5q","0,0,1,1,1,1,0,0,1":"S4t","1,0,1,1,1,1,0,0,1":"S5r","0,1,1,1,1,1,0,0,1":"S5n","1,1,1,1,1,1,0,0,1":"S6a","0,0,0,0,0,0,1,0,1":"B2c","1,0,0,0,0,0,1,0,1":"B3c","0,1,0,0,0,0,1,0,1":"B3y","1,1,0,0,0,0,1,0,1":"B4y","0,0,1,0,0,0,1,0,1":"B3c","1,0,1,0,0,0,1,0,1":"B4c","0,1,1,0,0,0,1,0,1":"B4y","1,1,1,0,0,0,1,0,1":"B5e","0,0,0,1,0,0,1,0,1":"B3n","1,0,0,1,0,0,1,0,1":"B4n","0,1,0,1,0,0,1,0,1":"B4k","1,1,0,1,0,0,1,0,1":"B5j","0,0,1,1,0,0,1,0,1":"B4y","1,0,1,1,0,0,1,0,1":"B5e","0,1,1,1,0,0,1,0,1":"B5k","1,1,1,1,0,0,1,0,1":"B6e","0,0,0,0,1,0,1,0,1":"S2c","1,0,0,0,1,0,1,0,1":"S3c","0,1,0,0,1,0,1,0,1":"S3y","1,1,0,0,1,0,1,0,1":"S4y","0,0,1,0,1,0,1,0,1":"S3c","1,0,1,0,1,0,1,0,1":"S4c","0,1,1,0,1,0,1,0,1":"S4y","1,1,1,0,1,0,1,0,1":"S5e","0,0,0,1,1,0,1,0,1":"S3n","1,0,0,1,1,0,1,0,1":"S4n","0,1,0,1,1,0,1,0,1":"S4k","1,1,0,1,1,0,1,0,1":"S5j","0,0,1,1,1,0,1,0,1":"S4y","1,0,1,1,1,0,1,0,1":"S5e","0,1,1,1,1,0,1,0,1":"S5k","1,1,1,1,1,0,1,0,1":"S6e","0,0,0,0,0,1,1,0,1":"B3n","1,0,0,0,0,1,1,0,1":"B4y","0,1,0,0,0,1,1,0,1":"B4k","1,1,0,0,0,1,1,0,1":"B5k","0,0,1,0,0,1,1,0,1":"B4n","1,0,1,0,0,1,1,0,1":"B5e","0,1,1,0,0,1,1,0,1":"B5j","1,1,1,0,0,1,1,0,1":"B6e","0,0,0,1,0,1,1,0,1":"B4i","1,0,0,1,0,1,1,0,1":"B5r","0,1,0,1,0,1,1,0,1":"B5y","1,1,0,1,0,1,1,0,1":"B6k","0,0,1,1,0,1,1,0,1":"B5r","1,0,1,1,0,1,1,0,1":"B6i","0,1,1,1,0,1,1,0,1":"B6k","1,1,1,1,0,1,1,0,1":"B7e","0,0,0,0,1,1,1,0,1":"S3n","1,0,0,0,1,1,1,0,1":"S4y","0,1,0,0,1,1,1,0,1":"S4k","1,1,0,0,1,1,1,0,1":"S5k","0,0,1,0,1,1,1,0,1":"S4n","1,0,1,0,1,1,1,0,1":"S5e","0,1,1,0,1,1,1,0,1":"S5j","1,1,1,0,1,1,1,0,1":"S6e","0,0,0,1,1,1,1,0,1":"S4i","1,0,0,1,1,1,1,0,1":"S5r","0,1,0,1,1,1,1,0,1":"S5y","1,1,0,1,1,1,1,0,1":"S6k","0,0,1,1,1,1,1,0,1":"S5r","1,0,1,1,1,1,1,0,1":"S6i","0,1,1,1,1,1,1,0,1":"S6k","1,1,1,1,1,1,1,0,1":"S7e","0,0,0,0,0,0,0,1,1":"B2a","1,0,0,0,0,0,0,1,1":"B3q","0,1,0,0,0,0,0,1,1":"B3r","1,1,0,0,0,0,0,1,1":"B4z","0,0,1,0,0,0,0,1,1":"B3n","1,0,1,0,0,0,0,1,1":"B4y","0,1,1,0,0,0,0,1,1":"B4i","1,1,1,0,0,0,0,1,1":"B5r","0,0,0,1,0,0,0,1,1":"B3j","1,0,0,1,0,0,0,1,1":"B4w","0,1,0,1,0,0,0,1,1":"B4j","1,1,0,1,0,0,0,1,1":"B5q","0,0,1,1,0,0,0,1,1":"B4k","1,0,1,1,0,0,0,1,1":"B5k","0,1,1,1,0,0,0,1,1":"B5y","1,1,1,1,0,0,0,1,1":"B6k","0,0,0,0,1,0,0,1,1":"S2a","1,0,0,0,1,0,0,1,1":"S3q","0,1,0,0,1,0,0,1,1":"S3r","1,1,0,0,1,0,0,1,1":"S4z","0,0,1,0,1,0,0,1,1":"S3n","1,0,1,0,1,0,0,1,1":"S4y","0,1,1,0,1,0,0,1,1":"S4i","1,1,1,0,1,0,0,1,1":"S5r","0,0,0,1,1,0,0,1,1":"S3j","1,0,0,1,1,0,0,1,1":"S4w","0,1,0,1,1,0,0,1,1":"S4j","1,1,0,1,1,0,0,1,1":"S5q","0,0,1,1,1,0,0,1,1":"S4k","1,0,1,1,1,0,0,1,1":"S5k","0,1,1,1,1,0,0,1,1":"S5y","1,1,1,1,1,0,0,1,1":"S6k","0,0,0,0,0,1,0,1,1":"B3a","1,0,0,0,0,1,0,1,1":"B4q","0,1,0,0,0,1,0,1,1":"B4r","1,1,0,0,0,1,0,1,1":"B5q","0,0,1,0,0,1,0,1,1":"B4a","1,0,1,0,0,1,0,1,1":"B5j","0,1,1,0,0,1,0,1,1":"B5i","1,1,1,0,0,1,0,1,1":"B6a","0,0,0,1,0,1,0,1,1":"B4r","1,0,0,1,0,1,0,1,1":"B5q","0,1,0,1,0,1,0,1,1":"B5c","1,1,0,1,0,1,0,1,1":"B6n","0,0,1,1,0,1,0,1,1":"B5n","1,0,1,1,0,1,0,1,1":"B6k","0,1,1,1,0,1,0,1,1":"B6c","1,1,1,1,0,1,0,1,1":"B7c","0,0,0,0,1,1,0,1,1":"S3a","1,0,0,0,1,1,0,1,1":"S4q","0,1,0,0,1,1,0,1,1":"S4r","1,1,0,0,1,1,0,1,1":"S5q","0,0,1,0,1,1,0,1,1":"S4a","1,0,1,0,1,1,0,1,1":"S5j","0,1,1,0,1,1,0,1,1":"S5i","1,1,1,0,1,1,0,1,1":"S6a","0,0,0,1,1,1,0,1,1":"S4r","1,0,0,1,1,1,0,1,1":"S5q","0,1,0,1,1,1,0,1,1":"S5c","1,1,0,1,1,1,0,1,1":"S6n","0,0,1,1,1,1,0,1,1":"S5n","1,0,1,1,1,1,0,1,1":"S6k","0,1,1,1,1,1,0,1,1":"S6c","1,1,1,1,1,1,0,1,1":"S7c","0,0,0,0,0,0,1,1,1":"B3i","1,0,0,0,0,0,1,1,1":"B4n","0,1,0,0,0,0,1,1,1":"B4t","1,1,0,0,0,0,1,1,1":"B5r","0,0,1,0,0,0,1,1,1":"B4n","1,0,1,0,0,0,1,1,1":"B5e","0,1,1,0,0,0,1,1,1":"B5r","1,1,1,0,0,0,1,1,1":"B6i","0,0,0,1,0,0,1,1,1":"B4a","1,0,0,1,0,0,1,1,1":"B5a","0,1,0,1,0,0,1,1,1":"B5n","1,1,0,1,0,0,1,1,1":"B6a","0,0,1,1,0,0,1,1,1":"B5j","1,0,1,1,0,0,1,1,1":"B6e","0,1,1,1,0,0,1,1,1":"B6k","1,1,1,1,0,0,1,1,1":"B7e","0,0,0,0,1,0,1,1,1":"S3i","1,0,0,0,1,0,1,1,1":"S4n","0,1,0,0,1,0,1,1,1":"S4t","1,1,0,0,1,0,1,1,1":"S5r","0,0,1,0,1,0,1,1,1":"S4n","1,0,1,0,1,0,1,1,1":"S5e","0,1,1,0,1,0,1,1,1":"S5r","1,1,1,0,1,0,1,1,1":"S6i","0,0,0,1,1,0,1,1,1":"S4a","1,0,0,1,1,0,1,1,1":"S5a","0,1,0,1,1,0,1,1,1":"S5n","1,1,0,1,1,0,1,1,1":"S6a","0,0,1,1,1,0,1,1,1":"S5j","1,0,1,1,1,0,1,1,1":"S6e","0,1,1,1,1,0,1,1,1":"S6k","1,1,1,1,1,0,1,1,1":"S7e","0,0,0,0,0,1,1,1,1":"B4a","1,0,0,0,0,1,1,1,1":"B5j","0,1,0,0,0,1,1,1,1":"B5n","1,1,0,0,0,1,1,1,1":"B6k","0,0,1,0,0,1,1,1,1":"B5a","1,0,1,0,0,1,1,1,1":"B6e","0,1,1,0,0,1,1,1,1":"B6a","1,1,1,0,0,1,1,1,1":"B7e","0,0,0,1,0,1,1,1,1":"B5i","1,0,0,1,0,1,1,1,1":"B6a","0,1,0,1,0,1,1,1,1":"B6c","1,1,0,1,0,1,1,1,1":"B7c","0,0,1,1,0,1,1,1,1":"B6a","1,0,1,1,0,1,1,1,1":"B7e","0,1,1,1,0,1,1,1,1":"B7c","1,1,1,1,0,1,1,1,1":"B8","0,0,0,0,1,1,1,1,1":"S4a","1,0,0,0,1,1,1,1,1":"S5j","0,1,0,0,1,1,1,1,1":"S5n","1,1,0,0,1,1,1,1,1":"S6k","0,0,1,0,1,1,1,1,1":"S5a","1,0,1,0,1,1,1,1,1":"S6e","0,1,1,0,1,1,1,1,1":"S6a","1,1,1,0,1,1,1,1,1":"S7e","0,0,0,1,1,1,1,1,1":"S5i","1,0,0,1,1,1,1,1,1":"S6a","0,1,0,1,1,1,1,1,1":"S6c","1,1,0,1,1,1,1,1,1":"S7c","0,0,1,1,1,1,1,1,1":"S6a","1,0,1,1,1,1,1,1,1":"S7e","0,1,1,1,1,1,1,1,1":"S7c","1,1,1,1,1,1,1,1,1":"S8"}');
var displayboard=function(board,t){
for(var i=0;i<58;i++){
var row="";
var s=".#?";
for(var j=0;j<61;j++){
row+=s[board[i][j]];
}
console.log(row);
}
console.log("");
};
var transitions="B2i B2n B3c B3e B3k B3y B4a B4e B4n B4q B4r B4t B5a B5c B5i B5j B5n B6a B6c S2a S2e S2i S3a S3e S3i S3j S3k S3r S3y S4a S4e S4i S4j S4k S4q S4r S4t S4w S4y S4z S5a S5c S5i S5j S5n S5q S5r S5y S6a S6c".split(" ");
var b81="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/~!@#$%^&*(){}[]<>";
var reverseb81={};
for(var i=0;i<81;i++){
var trits=i.toString(3);
trits="0".repeat(4-trits.length)+trits;
trits=trits.split("");
for(var j=0;j<4;j++){
trits[j]*=1;
}
reverseb81[b81[i]]=trits;
}
var checkrule=function(str){
var rule={"B0":2,"B1c":2,"B1e":2,"B2a":2,"B2c":2,"B2e":2,"B2i":2,"B2k":2,"B2n":2,"B3a":2,"B3c":2,"B3e":2,"B3i":2,"B3j":2,"B3k":2,"B3n":2,"B3q":2,"B3r":2,"B3y":2,"B4a":2,"B4c":2,"B4e":2,"B4i":2,"B4j":2,"B4k":2,"B4n":2,"B4q":2,"B4r":2,"B4t":2,"B4w":2,"B4y":2,"B4z":2,"B5a":2,"B5c":2,"B5e":2,"B5i":2,"B5j":2,"B5k":2,"B5n":2,"B5q":2,"B5r":2,"B5y":2,"B6a":2,"B6c":2,"B6e":2,"B6i":2,"B6k":2,"B6n":2,"B7c":2,"B7e":2,"B8":2,"S0":2,"S1c":2,"S1e":2,"S2a":2,"S2c":2,"S2e":2,"S2i":2,"S2k":2,"S2n":2,"S3a":2,"S3c":2,"S3e":2,"S3i":2,"S3j":2,"S3k":2,"S3n":2,"S3q":2,"S3r":2,"S3y":2,"S4a":2,"S4c":2,"S4e":2,"S4i":2,"S4j":2,"S4k":2,"S4n":2,"S4q":2,"S4r":2,"S4t":2,"S4w":2,"S4y":2,"S4z":2,"S5a":2,"S5c":2,"S5e":2,"S5i":2,"S5j":2,"S5k":2,"S5n":2,"S5q":2,"S5r":2,"S5y":2,"S6a":2,"S6c":2,"S6e":2,"S6i":2,"S6k":2,"S6n":2,"S7c":2,"S7e":2,"S8":2};//Undefined is assumed to be 2
rule["B0"]=0;
rule["B1c"]=0;
rule["B1e"]=0;
rule["B2a"]=1;
rule["B2c"]=1;
rule["B2e"]=1;
rule["B2k"]=1;
rule["B3a"]=0;
rule["B3n"]=0;
rule["B3q"]=0;
rule["B3r"]=0;
rule["B3i"]=0;
rule["B3j"]=0;
rule["B4i"]=1;
rule["B4j"]=0;
rule["B4k"]=1;
rule["B4w"]=1;
rule["B4y"]=1;
rule["B4z"]=1;
rule["B5k"]=0;
rule["B5q"]=1;
rule["B5r"]=0;
rule["B5y"]=1;
rule["B6k"]=0;
rule["S0"]=0;
rule["S1c"]=0;
rule["S1e"]=0;
rule["S2k"]=0;
rule["S2c"]=1;
rule["S2n"]=1;
rule["S3c"]=0;
rule["S3n"]=1;
rule["S3q"]=1;
rule["S4n"]=0;
//Read in the rest of the transitions
var fifty=[];
for(var i=0;i<13;i++){
fifty=fifty.concat(reverseb81[str[i]]);
}
fifty=fifty.slice(2);
for(var i=0;i<50;i++){
rule[transitions[i]]=fifty[i];
}
var board=[];
for(var i=0;i<58;i++){//There's a buffer around the edges that will never turn on
var row=[];
for(var j=0;j<61;j++){
row.push(0);
}
board.push(row);
}
board[27][28]=1;
board[27][29]=1;
board[27][30]=1;
board[28][31]=1;
board[29][32]=1;
board[30][32]=1;
board[30][30]=1;
board[30][28]=1;
board[31][28]=1;
board[28][28]=rule["B2i"];
board[29][28]=rule["B3c"];//We start at generation 4
for(var i=0;i<27;i++){//Then step until generation 31
var nextboard=[[]];
for(var j=0;j<61;j++){//Top buffer row
nextboard[0].push(0);
}
for(var j=1;j<57;j++){
var row=[0];//Left buffer column
for(var k=1;k<60;k++){
var kj=k-j;
if(kj-i>5||kj+i<-5){//Blank
row.push(0);
continue;
}
var jk=j+k;
if(jk+i<53||jk-i>64){//Blank
row.push(0);
continue;
}
var jl=j-1;//Compute once
var jr=j+1;
var kl=k-1;
var kr=k+1;
var neighborhood=[board[jl][kl],board[jl][k],board[jl][kr],board[j][kl],board[j][k],board[j][kr],board[jr][kl],board[jr][k],board[jr][kr]];
var num=0;
for(var m=0;m<9;m++){
num*=3;
num+=neighborhood[m];
}//Common unknown configurations
if(num===19682){//9 unknown
row.push(2);
continue;
}
if(num===19680||num===19664||num===18224||num===6560){//8 unknown, corner off
row.push(2);
continue;
}
if(num===19620||num===19172||num===13796||num===1700){//6 unknown in S5a shape, everything else off
row.push(2);
continue;
}
if(num===17982||num===5886||num===510||num===62){//3 unknown in B3a shape, everything else off
row.push(2);
continue;
}
if(num===19656||num===18168||num===6056||num===728){//6 unknown in S5i shape, everything else off
row.push(2);
continue;
}
if(num===18954||num===13626||num===1514||num===26){//3 unknown in B3i shape, everything else off
row.push(2);
continue;
}
if(num===17496||num===13608||num===5832||num===1512||num===504||num===56||num===24||num===8){//2 unknown in B2a shape, everything else off
row.push(2);
continue;
}
if(num===19602||num===19170||num===18162||num===13794||num===6050||num===1682||num===674||num===242){//5 unknown in S4a shape, everything else off
row.push(2);
continue;
}
var neighborhood1=neighborhoodtable[neighborhood];
if(neighborhood1!==undefined){//Completely defined
row.push(rule[neighborhood1]);
continue;
}
var next=3;
var indices=[];
var u/*nknown*/=1;
for(var r=0;r<9;r++){//Just the first leetter that came to mind
if(neighborhood[r]===2){
indices.push(r);
u*=2;
neighborhood[r]=0;//Manipulation in place is faster
}
}
for(var n=0;n<u;n++){//Try everything
var value=rule[neighborhoodtable[neighborhood]];
if(next===3){//Set
next=value;
}else if(value===2){//Unknown
next=2;
}else if(value!==next){//Variable
next=2;
}
if(next===2){
break;//This is unknown
}
var m=0;//Do a binary counter thing
neighborhood[indices[m]]+=1;
while(neighborhood[indices[m]]===2){
neighborhood[indices[m]]=0;
m+=1;
neighborhood[indices[m]]+=1;
}
}
row.push(next);
}
row.push(0);//Right buffer column
nextboard.push(row);
}
nextboard.push(nextboard[0]);//Bottom buffer row
board=nextboard;
//displayboard(board);
}
var oncells=0;
for(var i=0;i<58;i++){
for(var j=0;j<61;j++){
oncells+=(board[i][j]===1);
}
}
return oncells;
}
//console.log(checkrule("80>8>SS+*]>>>"));
var fs=require("fs");
var results=fs.readFileSync("./filtered.txt","utf-8");
var filtered="";
for(var i=0;i<results.length;i+=13){
var str=results.slice(i,i+13);
var oncells=checkrule(str);
if(oncells===3){
filtered+=str;
}
if(i%1024===0){
console.log(i);
fs.appendFileSync("./filtered1.txt",filtered);//I run out of memory otherise
filtered="";//Now clear to save memory
}
}
fs.appendFileSync("./filtered1.txt",filtered);//Get the last bit