performance measurements

Each table row shows performance measurements for this PyPy program with a particular command-line input value N.

 N  CPU secs Elapsed secs Memory KB Code B ≈ CPU Load
2,0980.870.8784,2161579  6% 0% 2% 100%
2,0980.870.8784,6321579  6% 1% 2% 100%
2,0980.860.8784,5161579  5% 100% 1% 0%

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.

 notes

 meteor-contest PyPy program source code

# 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()

 make, command-line, and program output logs

Thu, 26 Apr 2018 16:45:05 GMT

COMMAND LINE:
/usr/bin/pypy meteor.pypy 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 

Revised BSD license

  Home   Conclusions   License   Play