pariomino
    
    
    
      pariomino,
      an Octave code which
      considers pariominoes, which are polyominoes with a checkerboard parity.
    
    
      Licensing:
    
    
      The information on this web page is distributed under the MIT license.
    
    
      Languages:
    
    
      pariomino is available in
      a MATLAB version and
      an Octave version and
      a Python version.
    
    
      Related Data and Programs:
    
    
      
      pariomino_test
    
    
      
      boundary_word_square,
      an Octave code which
      describes the outline of an object on a grid of squares,
      using a string of symbols that represent the sequence of steps
      tracing out the boundary.
    
    
      
      polyiamonds,
      an Octave code which
      works with polyiamonds, simple shapes constructed by edgewise
      connections of congruent equilateral triangles.
    
    
      
      polyomino_parity,
      an Octave code which
      uses parity considerations to determine whether a given set of
      polyominoes can tile a specified region.
    
    
      
      polyominoes,
      an Octave code which
      defines, solves, and plots a variety of polyomino tiling problems,
      which are solved by a direct algebraic approach involving the
      reduced row echelon form (RREF) of a specific matrix, instead of the
      more typical brute-force or backtracking methods.
    
    
      Reference:
    
    
      
        - 
          Marcus Garvie, John Burkardt,
          A new mathematical model for tiling finite regions of the plane
          with polyominoes,
          Contributions to Discrete Mathematics,
          Volume 15, Number 2, July 2020.
         
        - 
          Solomon Golomb,
          Polyominoes: Puzzles, Patterns, Problems, and Packings,
          Princeton University Press, 1996,
          ISBN: 9780691024448
         
      
    
    
      Source code:
    
    
      
        - 
          colour_poly.m,
          creates a matrix for a pariomino using -1, 0, and +1 values.
        
 
        - 
          cplex_solution_single_read.m,
          extracts solution data from a structure obtained from a  
          CPLEX data that contained a single solution.
        
 
        - 
          
          cplex_solution_multiple_read.m,
          extracts solution data from a structure obtained from a  
          CPLEX data that contained multiple solutions.
        
 
        - 
          cplex_solution_read.m,
          reads an XML file, converts the data to a structure,
          and extracts the data representing solutions.
        
 
        - 
          file_line_count.m,
          returns the number of lines in a file.
        
 
        - 
          filename_inc.m 
          numerically "increments" a file name.
        
 
        - 
          gurobi_solution_read.m,
          reads a file created by GUROBI, representing a solution of a
          polyomino tiling problem, and extracts the solutions as a
          simple vector.
        
 
        - 
          i4mat_is_ternary.m,
          is TRUE if an I4MAT contains only -1, 0 and 1 entries.
        
 
        - 
          i4mat_print.m,
          prints an I4MAT;
        
 
        - 
          i4mat_print_some.m,
          prints some of an I4MAT;
        
 
        - 
          i4vec2_print.m,
          prints a pair of integer vectors.
        
 
        - 
          ksub_next4.m,
          returns, one at a time, all the K-subsets of a set.
        
 
        - 
          pariomino_area.m,
          returns the area of a pariomino, simply the number of 1's 
          in the representation.
        
 
        - 
          pariomino_condense.m,
          cleans up a matrix that represents a pariomino by setting all nonzero
          entries to 1, and removing initial and final rows and columns of zeros.
        
 
        - 
          pariomino_embed_list.m,
          for each possible embedding, lists the translation necessary to
          to apply to the pariomino.
        
 
        - 
          pariomino_embed_number.m,
          reports the number of ways a pariomino can be embedded in a region.
        
 
        - 
          pariomino_equal.m,
          is true if two pariominoes are equal.
        
 
        - 
          pariomino_index.m,
          computes an index for each nonzero pariomino entry.
        
 
        - 
          pariomino_lp_write.m, 
          writes an LP file describing a particular problem.
        
 
        - 
          
          pariomino_matrix.m,
          determines the matrix and right hand side for a pariomino problem.
        
 
        - 
          
          pariomino_matrix_reid.m, 
          returns the matrix associated with the Reid tiling problem.
        
 
        - 
          
          pariomino_parity.m,
          computes the parity of a pariomino.
        
 
        - 
          pariomino_print.m,
          prints a pariomino.
        
 
        - 
          
          pariomino_reverse.m,
          reverses the parity of the cells of a pariomino.
        
 
        - 
          
          pariomino_tiling_plot.m,
          is given matrices defining a region R and a set of pariominoes P, 
          and a solution vector X, which represents 
          a tiling of R by the pariominoes in P, and plots a representation 
          of that tiling.
        
 
        - 
          
          pariomino_tiling_print.m,
          is given matrices defining a region R and a set of pariominoes P, 
          and a solution vector X, which represents 
          a tiling of R by the pariominoes in P, and prints out a representation 
          of that tiling.
        
 
        - 
          pariomino_tiling_solver.m, 
          sets up and solves a pariomino tiling problem.
        
 
        - 
          pariomino_transform.m,
          carries out reflections and rotations of a pariomino.
        
 
        - 
          
          pariomino_variants.m,
          carries out reflections and rotations of a set of pariominoes to
          determine which transformations yield distinct variants.
        
 
        - 
          pariominoes_print.m,
          prints pariominoes packed in an array.
        
 
        - 
          plot_checker_tile.m,
          plots a pariomino in gray and black.
        
 
        - 
          polyomino_charge.m,
          creates a pariomino from a polyomino, by assigning a parity
          to each cell.
        
 
        - 
          polyomino_print.m,
          prints a polyomino.
        
 
        - 
          r8mat_rref.m,
          returns the reduced row echelon form of an R8MAT.
        
 
        - 
          r8mat_rref_solve_binary.m, 
          seeks binary solutions of an RREF system.
        
 
        - 
          r8mat_rref_solve_binary_nz.m,
          seeks binary solutions (if any) of a row reduced echelon form 
          linear system in which exactly NZ entries are nonzero.
        
 
        - 
          r8mat_u_solve.m,
          solves an upper triangular linear system.
        
 
        - 
          r8vec_binary_next.m, 
          generates the next binary vector.
        
 
        - 
          r8vec_identity_row.m,
          returns a row of the identity matrix as an R8VEC.
        
 
        - 
          r8vec_is_binary.m,
          is true if all entries of an R8VEC are 0 or 1.
        
 
        - 
          r8vec_print.m, 
          prints an R8VEC.
        
 
        - 
          s_len_trim.m
          returns the length of a string to the last nonblank;
        
 
        - 
          s_word_extract_first.m
          extracts the first word from a string;
        
 
        - 
          scip_index_read.m,
          reads a file created by SCIP, representing solutions to a
          polyomino tiling problem, and extracts information about the
          permutation of the variables.
        
 
        - 
          scip_solution_read.m,
          reads a file created by SCIP, representing solutions to a
          polyomino tiling problem, and extracts the solutions as a
          simple vector.
        
 
        - 
          timestamp.m,
          prints the YMDHMS date as a timestamp.
        
 
        - 
          xml2struct.m,
          reads an XML file and converts the data to a structure.
        
 
      
    
    
    
      Last revised on 04 August 2020.