onetwothree = 0 fivesix = 0 seveneightnine = 0 rest = 0 perms = 1234567890.to_s.chars.to_a.permutation.map(&:join) for i in perms if i.to_s =~ /^.......789$/ then seveneightnine += 1; next; end if i.to_s =~ /^.....56/ then fivesix += 1; next; end if i.to_s =~ /^123/ then onetwothree += 1; next; end #if i.to_s =~ /^.....56/ then fivesix += 1; next; end #if i.to_s =~ /^.......789$/ then seveneightnine += 1; next; end rest += 1 end puts "onetwothree = #{onetwothree}; fivesix = #{fivesix}; seveneightnine = #{seveneightnine}; total = #{onetwothree + fivesix + seveneightnine}" puts "rest = #{rest}; total = #{rest + onetwothree + fivesix + seveneightnine}" puts "perms.count = #{perms.count}" # output: # $ ruby perms2.rb # onetwothree = 4898; fivesix = 40200; seveneightnine = 5040; total = 50138 # rest = 3578662; total = 3628800 # perms.count = 3628800