Each table row shows performance measurements for this Python 2 program with a particular command-line input value N.
N | CPU secs | Elapsed secs | Memory KB | Code B | ≈ CPU Load |
---|---|---|---|---|---|
2,098 | 2.94 | 2.94 | 6,436 | 1579 | 0% 100% 1% 0% 0% 0% 0% 1% |
Read the ↓ make, command line, and program output logs to see how this program was run.
Read meteor-contest benchmark to see what this program should do.
# The Computer Language Benchmarks Game # http://benchmarksgame.alioth.debian.org/ # # contributed by: Olof Kraigher # 2to3 from __future__ import print_function from sys import argv width = 5 height = 10 directions = { "E" : 0, "NE" : 1, "NW" : 2, "W" : 3, "SW" : 4, "SE" : 5} rotate = { "E" : "NE", "NE" : "NW", "NW" : "W", "W" : "SW", "SW" : "SE", "SE" : "E"} flip = { "E" : "W", "NE" : "NW", "NW" : "NE", "W" : "E", "SW" : "SE", "SE" : "SW"} move = { "E" : lambda x,y: (x+1,y), "W" : lambda x,y: (x-1,y), "NE" : lambda x,y: (x+(y%2),y-1), "NW" : lambda x,y: (x+(y%2)-1,y-1), "SE" : lambda x,y: (x+(y%2),y+1), "SW" : lambda x,y: (x+(y%2)-1,y+1)} pieces = [ ["E", "E", "E", "SE"], ["SE", "SW", "W", "SW"], ["W", "W", "SW", "SE"], ["E", "E", "SW", "SE"], ["NW", "W", "NW", "SE", "SW"], ["E", "E", "NE", "W"], ["NW", "NE", "NE", "W"], ["NE", "SE", "E", "NE"], ["SE", "SE", "E", "SE"], ["E", "NW", "NW", "NW"]] solutions = [] masks = [0 for i in range(10)] valid = lambda x,y: (0 <= x) and (x < width) and (0 <= y) and (y < height) legal = lambda mask,board: (mask & board) == 0 zerocount = lambda mask: sum([((1<= 0): if (masks[j] & cellMask) == cellMask: masksAtCell[cellCounter][color].append(masks[j]) j = j-1 else: cellMask = cellMask >> 1 cellCounter -= 1 color += 1 def solveCell(cell, board, n): global solutions, masks, masksAtCell if len(solutions) >= n: return if board == 0x3FFFFFFFFFFFF: # Solved s = stringOfMasks(masks) solutions.append(s); solutions.append(inverse(s)); return if board & (1 << cell) != 0: # Cell full solveCell(cell-1, board, n) return if cell < 0: # Out of board return for color in range(10): if masks[color] == 0: for mask in masksAtCell[cell][color]: if legal(mask, board): masks[color] = mask solveCell(cell-1, board | mask, n); masks[color] = 0 def solve(n): generateBitmasks() solveCell(width*height-1, 0, n) def stringOfMasks(masks): s = "" mask = 1; for y in range(height): for x in range(width): for color in range(10): if (masks[color] & mask) != 0: s += str(color) break elif color == 9: s += "." mask = mask << 1 return s def inverse(s): ns = [x for x in s] for x in range(width): for y in range(height): ns[x + y*width] = s[width-x-1 + (width - y - 1)*width] return s def printSolution(solution): for y in range(height): for x in range(width): print(solution[x + y*width], end=' ') if (y%2) == 0: print("") print("", end=' ') else: print("") if __name__ == "__main__": if not len(argv) > 1: exit() solve(int(argv[1])) print(len(solutions), "solutions found") print() printSolution(min(solutions)) print() printSolution(max(solutions)) print()
Fri, 30 Oct 2020 19:52:03 GMT COMMAND LINE: /usr/bin/python2 meteor.python 2098 PROGRAM OUTPUT: 2098 solutions found 0 0 0 0 1 2 2 2 0 1 2 6 6 1 1 2 6 1 5 5 8 6 5 5 5 8 6 3 3 3 4 8 8 9 3 4 4 8 9 3 4 7 4 7 9 7 7 7 9 9 9 9 9 9 8 9 6 6 8 5 6 6 8 8 5 6 8 2 5 5 7 7 7 2 5 7 4 7 2 0 1 4 2 2 0 1 4 4 0 3 1 4 0 0 3 1 1 3 3 3