#! /usr/bin/env python # def pentomino_matrix ( name ): #*****************************************************************************80 # ## PENTOMINO_MATRIX returns a 0/1 matrix defining a particular pentomino. # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 18 April 2018 # # Author: # # John Burkardt # # Parameters: # # Input, character NAME, is f, i, l, n, p, t, u, v, w, x, y or z. # # Output, integer P(P_M,P_N), a matrix of 0's and 1's that indicates # the shape of the pentomino. # import numpy as np from sys import exit if ( name.lower ( ) == 'f' ): p = np.array ( [ \ [ 0, 1, 1 ], \ [ 1, 1, 0 ], \ [ 0, 1, 0 ] ] ) elif ( name.lower ( ) == 'i' ): p = np.array ( [ \ [ 1 ], \ [ 1 ], \ [ 1 ], \ [ 1 ], \ [ 1 ] ] ) elif ( name.lower ( ) == 'l' ): p = np.array ( [ \ [ 1, 0 ], \ [ 1, 0 ], \ [ 1, 0 ], \ [ 1, 1 ] ] ) elif ( name.lower ( ) == 'n' ): p = np.array ( [ \ [ 1, 1, 0, 0 ], \ [ 0, 1, 1, 1 ] ] ) elif ( name.lower ( ) == 'p' ): p = np.array ( [ \ [ 1, 1 ], \ [ 1, 1 ], \ [ 1, 0 ] ] ) elif ( name.lower ( ) == 't' ): p = np.array ( [ \ [ 1, 1, 1 ], \ [ 0, 1, 0 ], \ [ 0, 1, 0 ] ] ) elif ( name.lower ( ) == 'u' ): p = np.array ( [ \ [ 1, 0, 1 ], \ [ 1, 1, 1 ] ] ) elif ( name.lower ( ) == 'v' ): p = np.array ( [ \ [ 1, 0, 0 ], \ [ 1, 0, 0 ], \ [ 1, 1, 1 ] ] ) elif ( name.lower ( ) == 'w' ): p = np.array ( [ \ [ 1, 0, 0 ], \ [ 1, 1, 0 ], \ [ 0, 1, 1 ] ] ) elif ( name.lower ( ) == 'x' ): p = np.array ( [ \ [ 0, 1, 0 ], \ [ 1, 1, 1 ], \ [ 0, 1, 0 ] ] ) elif ( name.lower ( ) == 'y' ): p = np.array ( [ \ [ 0, 0, 1, 0 ], \ [ 1, 1, 1, 1 ] ] ) elif ( name.lower ( ) == 'z' ): p = np.array ( [ \ [ 1, 1, 0 ], \ [ 0, 1, 0 ], \ [ 0, 1, 1 ] ] ) else: print ( '' ) print ( 'PENTOMINO_MATRIX - Fatal error!' ) print ( ' Illegal name = "%s"' % ( name ) ) print ( ' Legal names: f, i, l, n, p, t, u, v, w, x, y, z.' ) exit ( 'PENTOMINO_MATRIX - Fatal error!' ) return p def pentomino_matrix_test ( ): #*****************************************************************************80 # ## PENTOMINO_MATRIX_TEST tests PENTOMINO_MATRIX. # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 18 April 2018 # # Author: # # John Burkardt # import numpy as np print ( '' ) print ( 'PENTOMINO_MATRIX_TEST' ) print ( ' PENTOMINO_MATRIX returns a 0/1 matrix representing a pentomino.' ) pentominos = np.array ( \ [ 'F', 'I', 'L', 'N', 'P', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ] ) for i in range ( 0, 12 ): name = pentominos[i] p = pentomino_matrix ( name ) dims = p.shape m = dims[0] n = dims[1] print ( '' ) print ( ' %s pentomino (%d,%d):' % ( name, m, n ) ) print ( '' ) for i in range ( 0, m ): print ( ' ' ), for j in range ( 0, n ): print ( ' %d' % ( p[i,j] ) ), print ( '' ) return if ( __name__ == '__main__' ): from timestamp import timestamp timestamp ( ) pentomino_matrix_test ( ) timestamp ( )