s="#..#.#..##......###...###" t = { "...##"=>"#", "..#.."=>"#", ".#..."=>"#", ".#.#."=>"#", ".#.##"=>"#", ".##.."=>"#", ".####"=>"#", "#.#.#"=>"#", "#.###"=>"#", "##.#."=>"#", "##.##"=>"#", "###.."=>"#", "###.#"=>"#", "####."=>"#", } s="##.####..####...#.####..##.#..##..#####.##.#..#...#.###.###....####.###...##..#...##.#.#...##.##.." t={ "##.##"=>"#", "....#"=>".", ".#.#."=>"#", "..###"=>".", "##..."=>"#", "#####"=>".", "###.#"=>"#", ".##.."=>".", "..##."=>".", "...##"=>"#", "####."=>".", "###.."=>".", ".####"=>"#", "#...#"=>"#", "....."=>".", "..#.."=>".", "#..##"=>".", "#.#.#"=>"#", ".#.##"=>"#", ".###."=>".", "##..#"=>".", ".#..."=>"#", ".#..#"=>"#", "...#."=>".", "#.#.."=>".", "#...."=>".", "##.#."=>".", "#.###"=>".", ".##.#"=>".", "#..#."=>"#", "..#.#"=>".", "#.##."=>"#", } s = ("."*1000) + s + (".")*1000 r = 0 (1..1000).each { |i| s = "..#{s}..".chars.each_cons(5).map { |c| t[c.join] || "." }.join if i == 20 || i == 500 || i == 1000 r = 0 s.chars.each_with_index { |c, i| if c == "#" # p i-10 r += i-1000 end } p [i,r] end } # 1000..2000 adds up to 32000 p r + ((50000000000/1000)-1)*32000 # 1600000032081