Home License -- for personal use only. Not for government, academic, research, commercial, or other organizational use. 13-May-2025 16:40:44 polyiamonds_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7. Test polyiamonds(). boolean_to_string_test(): boolean_to_string() creates the string "True" or "False" based on a boolean value. This can be useful when printing boolean results. I isPrime? 1 False 2 True 3 True 4 False 5 True 6 False 7 True 8 False 9 False 10 False boolean_to_string_test(): Normal end of execution. boundary_hexiamond_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7 boundary_hexiamond() returns the boundary word of a hexiamond. bat boundary word: "11004343" base point : [ 0, 0 ] crown boundary word: "11045342" base point : [ 1, 0 ] pistol boundary word: "01045332" base point : [ 1, 0 ] snake boundary word: "01053432" base point : [ 1, 0 ] boundary_hexiamond_test(): Normal end of execution. boundary_is_legal_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7 boundary_is_legal() checks whether a polyiamond boundary word is legal. Index Name Boundary Legal 1 bat "11004343" True 2 butterfly "11504423" True 3 club "11044532" True 4 crown "11045342" True 5 hexagon "105432" True 6 lobster "02055332" True 7 pistol "01045332" True 8 rhomboid "11104443" True 9 shoe "10205433" True 10 snake "01053432" True 11 sphinx "11154533" True 12 yacht "11053533" True boundary_is_legal_test(): Normal end of execution. boundary_plot_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7 boundary_plot() plots a polyiamond from its boundary word. Graphics saved as "boundary_plot_test.png" boundary_plot_test(): Normal end of execution. boundary_print_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7 boundary_print() prints a polyiamond from its boundary word. bat boundary word: "11004343" base point : [ 0, 0 ] crown boundary word: "11045342" base point : [ 1, 0 ] pistol boundary word: "01045332" base point : [ 1, 0 ] snake boundary word: "01053432" base point : [ 1, 0 ] boundary_print_test(): Normal end of execution. boundary_range_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7 boundary_range() finds the minimum and maximum I and J coordinates of a polyiamond drawn from its boundary word and starting at P. Name Imin Imax Jmin Jmax Pi Pj Word tiny 1 3 -1 1 1 0 "21553" bat 0 2 0 2 0 0 "11004343" butterfly 0 3 0 2 1 0 "11504423" club 0 3 0 2 1 0 "11044532" crown 0 3 0 2 1 0 "11045342" hexagon 0 2 0 2 1 0 "105432" lobster 0 2 0 3 1 0 "02055332" pistol 0 2 0 3 1 0 "01045332" rhomboid 0 3 0 1 0 0 "11104443" shoe 0 2 0 2 0 0 "10205433" snake 0 2 0 3 1 0 "01053432" sphinx 0 3 0 2 0 0 "11154533" yacht 0 2 0 2 0 0 "11053533" gort 0 5 0 5 0 0 "111110500043355343123443" boundary_range_test(): Normal end of execution. boundary_reflect_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7 boundary_reflect() is given a polyiamond boundary word to reflect about the x, y, or xy axis. Graphics saved as "boundary_reflect_test.png" boundary_reflect_test(): Normal end of execution. boundary_representative_test(): boundary_representative() is given a boundary word, and returns the representative of its equivalence class. bat: boundary word: "11004343" base point : [ 0, 0 ] bat representative: boundary word: "00434311" base point : [ 0, 0 ] butterfly: boundary word: "11504423" base point : [ 1, 0 ] butterfly representative: boundary word: "04423115" base point : [ 1, 0 ] club: boundary word: "11044532" base point : [ 1, 0 ] club representative: boundary word: "04453211" base point : [ 1, 0 ] crown: boundary word: "11045342" base point : [ 1, 0 ] crown representative: boundary word: "04534211" base point : [ 1, 0 ] hexagon: boundary word: "105432" base point : [ 1, 0 ] hexagon representative: boundary word: "054321" base point : [ 1, 0 ] lobster: boundary word: "02055332" base point : [ 1, 0 ] lobster representative: boundary word: "02055332" base point : [ 1, 0 ] pistol: boundary word: "01045332" base point : [ 1, 0 ] pistol representative: boundary word: "01045332" base point : [ 1, 0 ] rhomboid: boundary word: "11104443" base point : [ 0, 0 ] rhomboid representative: boundary word: "04443111" base point : [ 0, 0 ] shoe: boundary word: "10205433" base point : [ 0, 0 ] shoe representative: boundary word: "02054331" base point : [ 0, 0 ] snake: boundary word: "01053432" base point : [ 1, 0 ] snake representative: boundary word: "01053432" base point : [ 1, 0 ] sphinx: boundary word: "11154533" base point : [ 0, 0 ] sphinx representative: boundary word: "11154533" base point : [ 0, 0 ] yacht: boundary word: "11053533" base point : [ 0, 0 ] yacht representative: boundary word: "05353311" base point : [ 0, 0 ] boundary_representative_test(): Normal end of execution. boundary_rotate_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7 boundary_rotate() rotates a polyiamond described by its boundary word. Graphics saved as "boundary_rotate_snake_0.png" Graphics saved as "boundary_rotate_snake_60.png" Graphics saved as "boundary_rotate_snake_120.png" Graphics saved as "boundary_rotate_snake_180.png" Graphics saved as "boundary_rotate_snake_240.png" Graphics saved as "boundary_rotate_snake_300.png" Graphics saved as "boundary_rotate_snake_360.png" boundary_rotate_test(): Normal end of execution. boundary_snap_test(): boundary_snap() snaps a polyiamond so that it has minimum I and J node coordinates of 0. Graphics saved as "boundary_snap_test.png" boundary_snap_test(): Normal end of execution. boundary_sort_test(): boundary_sort() is given a polyiamond boundary word and sorts it to have lexically smallest base point. hexagon boundary word (rotated) boundary word: "432105" base point : [ 5, 10 ] sorted hexagon boundary word boundary word: "321054" base point : [ 4, 9 ] snake boundary word boundary word: "01053432" base point : [ 1, 0 ] sorted snake boundary word boundary word: "32010534" base point : [ 0, 1 ] boundary_sort_test(): Normal end of execution. boundary_to_edge_test(): boundary_to_edge() converts a boundary word to an edge list. Tiny example: boundary word boundary word: "21553" base point : [ 1, 0 ] Tiny example: edge list 1: 1 0 2: 2 -1 3: 3 -1 4: 2 0 5: 1 1 6: 1 0 Gort: boundary word boundary word: "111110500043355343123443" base point : [ 0, 0 ] Gort: edge list 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 4 0 6: 5 0 7: 5 1 8: 4 2 9: 4 3 10: 4 4 11: 4 5 12: 3 5 13: 3 4 14: 3 3 15: 2 4 16: 1 5 17: 1 4 18: 0 4 19: 0 3 20: 1 3 21: 2 2 22: 2 1 23: 1 1 24: 0 1 25: 0 0 boundary_to_edge_test(): Normal end of execution. boundary_to_triangle_test(): boundary_to_triangle() converts a boundary word to a triangle list. Gort boundary word boundary word: "111110500043355343123443" base point : [ 0, 0 ] name = ' Gort triangle list' Gort triangle list 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 3 1 1 7: 4 1 0 8: 4 1 1 9: 5 1 0 10: 5 1 1 11: 3 2 0 12: 3 2 1 13: 4 2 0 14: 4 2 1 15: 5 2 0 16: 2 3 1 17: 3 3 0 18: 3 3 1 19: 4 3 0 20: 4 3 1 21: 1 4 0 22: 1 4 1 23: 2 4 0 24: 2 4 1 25: 3 4 0 26: 4 4 0 27: 4 4 1 28: 2 5 0 29: 4 5 0 30: 4 5 1 boundary_to_triangle_test(): Normal end of execution. boundary_to_vertex_test(): boundary_to_vertex() converts a boundary word to a vertex list. Gort boundary word boundary word: "111110500043355343123443" base point : [ 0, 0 ] Gort vertex list 1: 0 0 2: 5 0 3: 5 1 4: 4 2 5: 4 5 6: 3 5 7: 3 3 8: 1 5 9: 1 4 10: 0 4 11: 0 3 12: 1 3 13: 2 2 14: 2 1 15: 0 1 boundary_to_vertex_test(): Normal end of execution. boundary_translate_test(): boundary_translate() translates a polyiamond described by its boundary word. Graphics saved as "boundary_translate_test.png" boundary_translate_test(): Normal end of execution. edge_hexiamond_test(): edge_hexiamond() returns the IJ parallelogram point coordinates of the nodes that bound a hexiamond, given its index between 1 and 12. bat 1: 0 0 2: 1 0 3: 2 0 4: 2 1 5: 2 2 6: 1 2 7: 1 1 8: 0 1 butterfly 1: 1 0 2: 2 0 3: 3 0 4: 2 1 5: 2 2 6: 1 2 7: 0 2 8: 1 1 club 1: 1 0 2: 2 0 3: 3 0 4: 3 1 5: 2 1 6: 1 1 7: 0 2 8: 0 1 crown 1: 1 0 2: 2 0 3: 3 0 4: 3 1 5: 2 1 6: 1 2 7: 1 1 8: 0 1 hexagon 1: 1 0 2: 2 0 3: 2 1 4: 1 2 5: 0 2 6: 0 1 lobster 1: 1 0 2: 1 1 3: 2 0 4: 2 1 5: 1 2 6: 0 3 7: 0 2 8: 0 1 pistol 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 2 6: 0 3 7: 0 2 8: 0 1 rhomboid 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 3 1 6: 2 1 7: 1 1 8: 0 1 shoe 1: 0 0 2: 1 0 3: 1 1 4: 2 0 5: 2 1 6: 1 2 7: 0 2 8: 0 1 snake 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 3 6: 1 2 7: 0 2 8: 0 1 sphinx 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 2 1 6: 1 1 7: 0 2 8: 0 1 yacht 1: 0 0 2: 1 0 3: 2 0 4: 2 1 5: 1 2 6: 1 1 7: 0 2 8: 0 1 edge_hexiamond_test Normal end of execution. edge_plot_test(): edge_plot() plots a polyiamond from its edge list. Graphics saved as "edge_plot_test.png" edge_plot_test Normal end of execution. edge_range_test(): edge_range() finds the minimum and maximum I and J coordinates of a polyiamond drawn from its edge list. Name Imin Imax Jmin Jmax tiny 0 2 0 2 bat 0 2 0 2 butterfly 0 3 0 2 club 0 3 0 2 crown 0 3 0 2 hexagon 0 2 0 2 lobster 0 2 0 3 pistol 0 2 0 3 rhomboid 0 3 0 1 shoe 0 2 0 2 snake 0 2 0 3 sphinx 0 3 0 2 yacht 0 2 0 2 gort 0 5 0 5 edge_range_test Normal end of execution. edge_reflect_test(): edge_reflect() reflects a polyiamond described by its edge list. Graphics saved as "edge_reflect_test.png" edge_reflect_test Normal end of execution. edge_snap_test(): edge_snap() snaps a polyiamond so that it has minimum I and J node coordinates of 0. Graphics saved as "edge_snap_test.png" edge_snap_test Normal end of execution. edge_sort_test(): edge_sort() sorts the edge list of a polyiamond. Since the vertices must stay in counterclockwise order, sorting can only rotate the ordering. bat 1: 0 0 2: 1 0 3: 2 0 4: 2 1 5: 2 2 6: 1 2 7: 1 1 8: 0 1 bat (sorted) 1: 0 0 2: 1 0 3: 2 0 4: 2 1 5: 2 2 6: 1 2 7: 1 1 8: 0 1 butterfly 1: 1 0 2: 2 0 3: 3 0 4: 2 1 5: 2 2 6: 1 2 7: 0 2 8: 1 1 butterfly (sorted) 1: 0 2 2: 1 1 3: 1 0 4: 2 0 5: 3 0 6: 2 1 7: 2 2 8: 1 2 club 1: 1 0 2: 2 0 3: 3 0 4: 3 1 5: 2 1 6: 1 1 7: 0 2 8: 0 1 club (sorted) 1: 0 1 2: 1 0 3: 2 0 4: 3 0 5: 3 1 6: 2 1 7: 1 1 8: 0 2 crown 1: 1 0 2: 2 0 3: 3 0 4: 3 1 5: 2 1 6: 1 2 7: 1 1 8: 0 1 crown (sorted) 1: 0 1 2: 1 0 3: 2 0 4: 3 0 5: 3 1 6: 2 1 7: 1 2 8: 1 1 hexagon 1: 1 0 2: 2 0 3: 2 1 4: 1 2 5: 0 2 6: 0 1 hexagon (sorted) 1: 0 1 2: 1 0 3: 2 0 4: 2 1 5: 1 2 6: 0 2 lobster 1: 1 0 2: 1 1 3: 2 0 4: 2 1 5: 1 2 6: 0 3 7: 0 2 8: 0 1 lobster (sorted) 1: 0 1 2: 1 0 3: 1 1 4: 2 0 5: 2 1 6: 1 2 7: 0 3 8: 0 2 pistol 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 2 6: 0 3 7: 0 2 8: 0 1 pistol (sorted) 1: 0 1 2: 1 0 3: 1 1 4: 2 1 5: 2 2 6: 1 2 7: 0 3 8: 0 2 rhomboid 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 3 1 6: 2 1 7: 1 1 8: 0 1 rhomboid (sorted) 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 3 1 6: 2 1 7: 1 1 8: 0 1 shoe 1: 0 0 2: 1 0 3: 1 1 4: 2 0 5: 2 1 6: 1 2 7: 0 2 8: 0 1 shoe (sorted) 1: 0 0 2: 1 0 3: 1 1 4: 2 0 5: 2 1 6: 1 2 7: 0 2 8: 0 1 snake 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 3 6: 1 2 7: 0 2 8: 0 1 snake (sorted) 1: 0 1 2: 1 0 3: 1 1 4: 2 1 5: 2 2 6: 1 3 7: 1 2 8: 0 2 sphinx 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 2 1 6: 1 1 7: 0 2 8: 0 1 sphinx (sorted) 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 2 1 6: 1 1 7: 0 2 8: 0 1 yacht 1: 0 0 2: 1 0 3: 2 0 4: 2 1 5: 1 2 6: 1 1 7: 0 2 8: 0 1 yacht (sorted) 1: 0 0 2: 1 0 3: 2 0 4: 2 1 5: 1 2 6: 1 1 7: 0 2 8: 0 1 edge_sort_test Normal end of execution. edge_to_boundary_test(): edge_to_boundary() converts an edge list to a boundary list. Tiny edge list 1: 0 1 2: 1 0 3: 2 0 4: 1 1 5: 0 2 Tiny boundary list boundary word: "21553" base point : [ 0, 1 ] Gort edge list 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 4 0 6: 5 0 7: 5 1 8: 4 2 9: 4 3 10: 4 4 11: 4 5 12: 3 5 13: 3 4 14: 3 3 15: 2 4 16: 1 5 17: 1 4 18: 0 4 19: 0 3 20: 1 3 21: 2 2 22: 2 1 23: 1 1 24: 0 1 Gort boundary list boundary word: "111110500043355343123443" base point : [ 0, 0 ] edge_to_boundary_test Normal end of execution. edge_to_triangle_test(): edge_to_triangle() converts an edge list to a triangle list. Tiny edge list 1: 0 1 2: 1 0 3: 2 0 4: 1 1 5: 0 2 Tiny triangle list 1: 1 1 1 2: 2 1 0 3: 1 2 0 Gort edge list 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 4 0 6: 5 0 7: 5 1 8: 4 2 9: 4 3 10: 4 4 11: 4 5 12: 3 5 13: 3 4 14: 3 3 15: 2 4 16: 1 5 17: 1 4 18: 0 4 19: 0 3 20: 1 3 21: 2 2 22: 2 1 23: 1 1 24: 0 1 Gort triangle list 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 3 1 1 7: 4 1 0 8: 4 1 1 9: 5 1 0 10: 5 1 1 11: 3 2 0 12: 3 2 1 13: 4 2 0 14: 4 2 1 15: 5 2 0 16: 2 3 1 17: 3 3 0 18: 3 3 1 19: 4 3 0 20: 4 3 1 21: 1 4 0 22: 1 4 1 23: 2 4 0 24: 2 4 1 25: 3 4 0 26: 4 4 0 27: 4 4 1 28: 2 5 0 29: 4 5 0 30: 4 5 1 edge_to_triangle_test Normal end of execution. edge_to_vertex_test(): edge_to_vertex() converts an edge list to a vertex list. Tiny edge list 1: 0 1 2: 1 0 3: 2 0 4: 1 1 5: 0 2 Tiny vertex list 1: 0 1 2: 1 0 3: 2 0 4: 0 2 Gort edge list 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 4 0 6: 5 0 7: 5 1 8: 4 2 9: 4 3 10: 4 4 11: 4 5 12: 3 5 13: 3 4 14: 3 3 15: 2 4 16: 1 5 17: 1 4 18: 0 4 19: 0 3 20: 1 3 21: 2 2 22: 2 1 23: 1 1 24: 0 1 Gort vertex list 1: 0 0 2: 5 0 3: 5 1 4: 4 2 5: 4 5 6: 3 5 7: 3 3 8: 1 5 9: 1 4 10: 0 4 11: 0 3 12: 1 3 13: 2 2 14: 2 1 15: 0 1 edge_to_vertex_test Normal end of execution. edge_translate_test(): edge_translate() translates a polyiamond described by its edge word. Graphics saved as "edge_translate_test.png" edge_translate_test Normal end of execution. grid_plot_test(): grid_plot() plots a grid for polyiamonds. Graphics saved as "grid_plot_test.png" grid_plot_test(): Normal end of execution. i4_wrap_test() i4_wrap() forces an integer to lie within given limits. ilo = 4 ihi = 8 i i4_wrap(i,ilo,ihi) -10 5 -9 6 -8 7 -7 8 -6 4 -5 5 -4 6 -3 7 -2 8 -1 4 0 5 1 6 2 7 3 8 4 4 5 5 6 6 7 7 8 8 9 4 10 5 11 6 12 7 13 8 14 4 15 5 16 6 17 7 18 8 19 4 20 5 i4vec_lt_test(): i4vec_lt() determines if V1 is less than V2, using lexical order, for the i4vec data type. V1 and V2: 1: 1 0 2: 2 5 3: 3 10 V1 < V2? = False V1 and V2: 1: 1 1 2: 2 2 3: 3 3 V1 < V2? = False V1 and V2: 1: 1 1 2: 2 3 3: 3 0 V1 < V2? = True i4vec2_print_test(): i4vec2_print() prints a pair of I4VECs I, sum of I, sum of I^2: 1: 0 0 2: 1 1 3: 3 5 4: 6 14 5: 10 30 6: 15 55 7: 21 91 8: 28 140 9: 36 204 10: 45 285 11: 55 385 ij_reflect_test(): ij_reflect() reflects a point's (i,j) coordinates about I or J axis or both. R: (I2,J2) (X2,Y2) 0: (2,3) (3.500000,2.598076) 1: (-5,3) (-3.500000,2.598076) 2: (5,-3) (3.500000,-2.598076) 3: (-2,-3) (-3.500000,-2.598076) ij_reflect_test Normal end of execution. ij_rotate_test() ij_rotate() rotates a point's (i,j) coordinates through R 60 degree turns. R: (I,J) (I2,J2) -6: (2,3) (2,3) -5: (2,3) (5,-2) -4: (2,3) (3,-5) -3: (2,3) (-2,-3) -2: (2,3) (-5,2) -1: (2,3) (-3,5) 0: (2,3) (2,3) 1: (2,3) (5,-2) 2: (2,3) (3,-5) 3: (2,3) (-2,-3) 4: (2,3) (-5,2) 5: (2,3) (-3,5) 6: (2,3) (2,3) ij_rotate_test Normal end of execution. ij_to_xy_test(): ij_to_xy() converts a point's (i,j) coordinates to (x,y). (I,J) (X,Y) (0,0) (0.000000,0.000000) (1,0) (1.000000,0.000000) (2,0) (2.000000,0.000000) (3,0) (3.000000,0.000000) (4,0) (4.000000,0.000000) (5,0) (5.000000,0.000000) (0,1) (0.500000,0.866025) (1,1) (1.500000,0.866025) (2,1) (2.500000,0.866025) (3,1) (3.500000,0.866025) (4,1) (4.500000,0.866025) (5,1) (5.500000,0.866025) (0,2) (1.000000,1.732051) (1,2) (2.000000,1.732051) (2,2) (3.000000,1.732051) (3,2) (4.000000,1.732051) (4,2) (5.000000,1.732051) (5,2) (6.000000,1.732051) (0,3) (1.500000,2.598076) (1,3) (2.500000,2.598076) (2,3) (3.500000,2.598076) (3,3) (4.500000,2.598076) (4,3) (5.500000,2.598076) (5,3) (6.500000,2.598076) (0,4) (2.000000,3.464102) (1,4) (3.000000,3.464102) (2,4) (4.000000,3.464102) (3,4) (5.000000,3.464102) (4,4) (6.000000,3.464102) (5,4) (7.000000,3.464102) ij_to_xy_test Normal end of execution. ijk_fill_test(): ijk_fill plots a triangle given IJK coordinates. Graphics saved as "ijk_fill_test.png" ijk_fill_test(): Normal end of execution. ijk_neighbors_test(): ijk_neighbors() returns the neighbors of a triangle. bat triangle 1 ( 1, 1, 0) neighbor 1 ( 1, 0, 1) neighbor 2 ( 1, 1, 1) neighbor 3 ( 0, 1, 1) triangle 2 ( 1, 1, 1) neighbor 1 ( 1, 2, 0) neighbor 2 ( 1, 1, 0) neighbor 3 ( 2, 1, 0) triangle 3 ( 2, 1, 0) neighbor 1 ( 2, 0, 1) neighbor 2 ( 2, 1, 1) neighbor 3 ( 1, 1, 1) triangle 4 ( 2, 1, 1) neighbor 1 ( 2, 2, 0) neighbor 2 ( 2, 1, 0) neighbor 3 ( 3, 1, 0) triangle 5 ( 2, 2, 0) neighbor 1 ( 2, 1, 1) neighbor 2 ( 2, 2, 1) neighbor 3 ( 1, 2, 1) triangle 6 ( 2, 2, 1) neighbor 1 ( 2, 3, 0) neighbor 2 ( 2, 2, 0) neighbor 3 ( 3, 2, 0) ijk_neighbors_test Normal end of execution. ijk_to_ij_test() ijk_to_ij() returns the (i,j) coordinates of the vertices of a triangle, given its (i,j,k) coordinates. IJK IJ(1) IJ(2) IJ(3) (1,1,0) (0,0) (1,0) (0,1) (1,1,1) (1,1) (0,1) (1,0) (2,1,0) (1,0) (2,0) (1,1) (2,1,1) (2,1) (1,1) (2,0) (3,1,0) (2,0) (3,0) (2,1) (3,1,1) (3,1) (2,1) (3,0) (4,1,0) (3,0) (4,0) (3,1) (4,1,1) (4,1) (3,1) (4,0) (5,1,0) (4,0) (5,0) (4,1) (5,1,1) (5,1) (4,1) (5,0) (1,2,0) (0,1) (1,1) (0,2) (1,2,1) (1,2) (0,2) (1,1) (2,2,0) (1,1) (2,1) (1,2) (2,2,1) (2,2) (1,2) (2,1) (3,2,0) (2,1) (3,1) (2,2) (3,2,1) (3,2) (2,2) (3,1) (4,2,0) (3,1) (4,1) (3,2) (4,2,1) (4,2) (3,2) (4,1) (5,2,0) (4,1) (5,1) (4,2) (5,2,1) (5,2) (4,2) (5,1) (1,3,0) (0,2) (1,2) (0,3) (1,3,1) (1,3) (0,3) (1,2) (2,3,0) (1,2) (2,2) (1,3) (2,3,1) (2,3) (1,3) (2,2) (3,3,0) (2,2) (3,2) (2,3) (3,3,1) (3,3) (2,3) (3,2) (4,3,0) (3,2) (4,2) (3,3) (4,3,1) (4,3) (3,3) (4,2) (5,3,0) (4,2) (5,2) (4,3) (5,3,1) (5,3) (4,3) (5,2) (1,4,0) (0,3) (1,3) (0,4) (1,4,1) (1,4) (0,4) (1,3) (2,4,0) (1,3) (2,3) (1,4) (2,4,1) (2,4) (1,4) (2,3) (3,4,0) (2,3) (3,3) (2,4) (3,4,1) (3,4) (2,4) (3,3) (4,4,0) (3,3) (4,3) (3,4) (4,4,1) (4,4) (3,4) (4,3) (5,4,0) (4,3) (5,3) (4,4) (5,4,1) (5,4) (4,4) (5,3) ijk_to_ij_test Normal end of execution. ijk_to_xy_test(): ijk_to_xy() returns the (x,y) vertex coordinates of a triangle, given its (i,j,k) coordinates. (I,J,K) (X1,Y1) (X2,Y2) (X3,Y3) (1,1) (0.000000,0.000000) (1.000000,0.000000) (0.500000,0.866025) (1,1) (1.500000,0.866025) (0.500000,0.866025) (1.000000,0.000000) (2,1) (1.000000,0.000000) (2.000000,0.000000) (1.500000,0.866025) (2,1) (2.500000,0.866025) (1.500000,0.866025) (2.000000,0.000000) (3,1) (2.000000,0.000000) (3.000000,0.000000) (2.500000,0.866025) (3,1) (3.500000,0.866025) (2.500000,0.866025) (3.000000,0.000000) (4,1) (3.000000,0.000000) (4.000000,0.000000) (3.500000,0.866025) (4,1) (4.500000,0.866025) (3.500000,0.866025) (4.000000,0.000000) (5,1) (4.000000,0.000000) (5.000000,0.000000) (4.500000,0.866025) (5,1) (5.500000,0.866025) (4.500000,0.866025) (5.000000,0.000000) (1,2) (0.500000,0.866025) (1.500000,0.866025) (1.000000,1.732051) (1,2) (2.000000,1.732051) (1.000000,1.732051) (1.500000,0.866025) (2,2) (1.500000,0.866025) (2.500000,0.866025) (2.000000,1.732051) (2,2) (3.000000,1.732051) (2.000000,1.732051) (2.500000,0.866025) (3,2) (2.500000,0.866025) (3.500000,0.866025) (3.000000,1.732051) (3,2) (4.000000,1.732051) (3.000000,1.732051) (3.500000,0.866025) (4,2) (3.500000,0.866025) (4.500000,0.866025) (4.000000,1.732051) (4,2) (5.000000,1.732051) (4.000000,1.732051) (4.500000,0.866025) (5,2) (4.500000,0.866025) (5.500000,0.866025) (5.000000,1.732051) (5,2) (6.000000,1.732051) (5.000000,1.732051) (5.500000,0.866025) (1,3) (1.000000,1.732051) (2.000000,1.732051) (1.500000,2.598076) (1,3) (2.500000,2.598076) (1.500000,2.598076) (2.000000,1.732051) (2,3) (2.000000,1.732051) (3.000000,1.732051) (2.500000,2.598076) (2,3) (3.500000,2.598076) (2.500000,2.598076) (3.000000,1.732051) (3,3) (3.000000,1.732051) (4.000000,1.732051) (3.500000,2.598076) (3,3) (4.500000,2.598076) (3.500000,2.598076) (4.000000,1.732051) (4,3) (4.000000,1.732051) (5.000000,1.732051) (4.500000,2.598076) (4,3) (5.500000,2.598076) (4.500000,2.598076) (5.000000,1.732051) (5,3) (5.000000,1.732051) (6.000000,1.732051) (5.500000,2.598076) (5,3) (6.500000,2.598076) (5.500000,2.598076) (6.000000,1.732051) (1,4) (1.500000,2.598076) (2.500000,2.598076) (2.000000,3.464102) (1,4) (3.000000,3.464102) (2.000000,3.464102) (2.500000,2.598076) (2,4) (2.500000,2.598076) (3.500000,2.598076) (3.000000,3.464102) (2,4) (4.000000,3.464102) (3.000000,3.464102) (3.500000,2.598076) (3,4) (3.500000,2.598076) (4.500000,2.598076) (4.000000,3.464102) (3,4) (5.000000,3.464102) (4.000000,3.464102) (4.500000,2.598076) (4,4) (4.500000,2.598076) (5.500000,2.598076) (5.000000,3.464102) (4,4) (6.000000,3.464102) (5.000000,3.464102) (5.500000,2.598076) (5,4) (5.500000,2.598076) (6.500000,2.598076) (6.000000,3.464102) (5,4) (7.000000,3.464102) (6.000000,3.464102) (6.500000,2.598076) ijk_to_xy_test Normal end of execution. name_hexiamond_test(): name_hexiamond() returns the "name" of a hexiamond, given its index between 1 and 12. Index Name 0 "?" 1 "bat" 2 "butterfly" 3 "club" 4 "crown" 5 "hexagon" 6 "lobster" 7 "pistol" 8 "rhomboid" 9 "shoe" 10 "snake" 11 "sphinx" 12 "yacht" 13 "?" name_hexiamond_test Normal end of execution. polyiamond_free_enumerate_test(): polyiamond_free_enumerate() returns counts of the number of free polyiamonds. Order Number 0 1 1 1 2 1 3 1 4 3 5 4 6 12 7 24 8 66 9 160 10 448 11 1186 12 3334 13 9235 14 26166 15 73983 16 211297 17 604107 18 1736328 19 5000593 20 14448984 21 41835738 22 121419260 23 353045291 24 1028452717 25 3000800627 26 8769216722 27 25661961898 28 75195166667 29 220605519559 30 647943626796 s_escape_tex_test(): s_escape_tex() "protects" characters in a string that might otherwise be interpreted as TeX escape characters. Original string: "The file A_B.TXT is {I think__so} of size 2^8 or C\B.". De-escaped string: "ThefileA\_B.TXTis\{Ithink\_\_so\}ofsize2\^8orC\\B.". triangle_contains_ijk_test(): triangle_contains_ijk() reports whether a triangle is in a region specified by a triangle list. bat 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 2 2 0 6: 2 2 1 triangle 1 ( 1, 1, 0) internal neighbor 2 ( 1, 1, 1) triangle 2 ( 1, 1, 1) internal neighbor 2 ( 1, 1, 0) internal neighbor 3 ( 2, 1, 0) triangle 3 ( 2, 1, 0) internal neighbor 2 ( 2, 1, 1) internal neighbor 3 ( 1, 1, 1) triangle 4 ( 2, 1, 1) internal neighbor 1 ( 2, 2, 0) internal neighbor 2 ( 2, 1, 0) triangle 5 ( 2, 2, 0) internal neighbor 1 ( 2, 1, 1) internal neighbor 2 ( 2, 2, 1) triangle 6 ( 2, 2, 1) internal neighbor 2 ( 2, 2, 0) triangle_contains_ijk_test Normal end of execution. triangle_hexiamond_test(): triangle_hexiamond() returns the IJK parallelogram triangle coordinates of the triangles that make up a hexiamond, given its index between 1 and 12. bat 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 2 2 0 6: 2 2 1 butterfly 1: 2 1 0 2: 2 1 1 3: 3 1 0 4: 1 2 1 5: 2 2 0 6: 2 2 1 club 1: 1 1 1 2: 2 1 0 3: 2 1 1 4: 3 1 0 5: 3 1 1 6: 1 2 0 crown 1: 1 1 1 2: 2 1 0 3: 2 1 1 4: 3 1 0 5: 3 1 1 6: 2 2 0 hexagon 1: 1 1 1 2: 2 1 0 3: 2 1 1 4: 1 2 0 5: 1 2 1 6: 2 2 0 lobster 1: 1 1 1 2: 1 2 1 3: 1 2 0 4: 2 1 1 5: 2 2 0 6: 1 3 0 pistol 1: 1 1 1 2: 1 2 0 3: 1 2 1 4: 2 2 0 5: 2 2 1 6: 1 3 0 rhomboid 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 3 1 1 shoe 1: 1 1 0 2: 1 1 1 3: 1 2 1 4: 1 2 0 5: 2 2 0 6: 2 1 1 snake 1: 1 1 1 2: 1 2 0 3: 1 2 1 4: 2 2 0 5: 2 2 1 6: 2 3 0 sphinx 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 1 2 0 yacht 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 1 2 0 6: 2 2 0 triangle_hexiamond_test Normal end of execution. triangle_ijk_order_test(): triangle_ijk_order() finds the occurrence of a given ijk triangle in a triangle list. Gort triangle list: 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 3 1 1 7: 4 1 0 8: 4 1 1 9: 5 1 0 10: 5 1 1 11: 3 2 0 12: 3 2 1 13: 4 2 0 14: 4 2 1 15: 5 2 0 16: 2 3 1 17: 3 3 0 18: 3 3 1 19: 4 3 0 20: 4 3 1 21: 1 4 0 22: 1 4 1 23: 2 4 0 24: 2 4 1 25: 3 4 0 26: 4 4 0 27: 4 4 1 28: 2 5 0 29: 4 5 0 30: 4 5 1 IJK Row Order ( 3, 4, 0) 25 25 ( 2, 5, 0) 28 28 ( 2, 1, 1) 4 4 ( 2, 5, 0) 28 28 ( 4, 3, 0) 19 19 ( 2, 1, 0) 3 3 ( 5, 1, 0) 9 9 ( 3, 3, 0) 17 17 ( 4, 5, 0) 29 29 ( 4, 5, 0) 29 29 ( 1, 5, 0) 0 0 triangle_ijk_order_test Normal end of execution. triangle_parity_test(): triangle_parity() prints the parity of a polyiamond from its triangle list. Name Size Parity bat 6 0 butterfly 6 0 club 6 0 crown 6 0 hexagon 6 0 lobster 6 0 pistol 6 0 rhomboid 6 0 shoe 6 0 snake 6 0 sphinx 6 -2 yacht 6 -2 gort 30 -2 triangle_parity_test Normal end of execution. triangle_plot_test(): triangle_plot() plots a polyiamond from its triangle list. Graphics saved as "triangle_plot_test_gort.png" Graphics saved as "triangle_plot_test_bat.png" Graphics saved as "triangle_plot_test_butterfly.png" Graphics saved as "triangle_plot_test_club.png" Graphics saved as "triangle_plot_test_crown.png" Graphics saved as "triangle_plot_test_hexagon.png" Graphics saved as "triangle_plot_test_lobster.png" Graphics saved as "triangle_plot_test_pistol.png" Graphics saved as "triangle_plot_test_rhomboid.png" Graphics saved as "triangle_plot_test_shoe.png" Graphics saved as "triangle_plot_test_snake.png" Graphics saved as "triangle_plot_test_sphinx.png" Graphics saved as "triangle_plot_test_yacht.png" triangle_print_test(): triangle_print() prints a polyiamond from its triangles. bat 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 2 2 0 6: 2 2 1 crown 1: 1 1 1 2: 2 1 0 3: 2 1 1 4: 3 1 0 5: 3 1 1 6: 2 2 0 pistol 1: 1 1 1 2: 1 2 0 3: 1 2 1 4: 2 2 0 5: 2 2 1 6: 1 3 0 snake 1: 1 1 1 2: 1 2 0 3: 1 2 1 4: 2 2 0 5: 2 2 1 6: 2 3 0 triangle_print_test Normal end of execution. triangle_range_test(): triangle_range() finds the minimum and maximum I and J coordinates of a polyiamond drawn from its triangle list. Name Imin Imax Jmin jmax tiny 0 2 0 2 bat 0 2 0 2 butterfly 0 3 0 2 club 0 3 0 2 crown 0 3 0 2 hexagon 0 2 0 2 lobster 0 2 0 3 pistol 0 2 0 3 rhomboid 0 3 0 1 shoe 0 2 0 2 snake 0 2 0 3 sphinx 0 3 0 2 yacht 0 2 0 2 gort 0 5 0 5 triangle_range_test Normal end of execution. triangle_reflect_test(): triangle_reflect() reflects a polyiamond that is described by a triangle list. Graphics saved as "triangle_reflect_test.png" triangle_reflect Normal end of execution. triangle_snap_test(): triangle_snap() snaps a polyiamond so that it has minimum I and J node coordinates of 0. Graphics saved as "triangle_snap_test.png" triangle_snap_test Normal end of execution. triangle_sort_test(): triangle_sort() sorts the triangle list of a polyiamond. Gort: unsorted triangle list: 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 3 1 1 7: 4 1 0 8: 4 1 1 9: 5 1 0 10: 5 1 1 11: 3 2 0 12: 3 2 1 13: 4 2 0 14: 4 2 1 15: 5 2 0 16: 2 3 1 17: 3 3 0 18: 3 3 1 19: 4 3 0 20: 4 3 1 21: 1 4 0 22: 1 4 1 23: 2 4 0 24: 2 4 1 25: 3 4 0 26: 4 4 0 27: 4 4 1 28: 2 5 0 29: 4 5 0 30: 4 5 1 Gort: sorted triangle list: 1: 1 1 0 2: 1 1 1 3: 1 4 0 4: 1 4 1 5: 2 1 0 6: 2 1 1 7: 2 3 1 8: 2 4 0 9: 2 4 1 10: 2 5 0 11: 3 1 0 12: 3 1 1 13: 3 2 0 14: 3 2 1 15: 3 3 0 16: 3 3 1 17: 3 4 0 18: 4 1 0 19: 4 1 1 20: 4 2 0 21: 4 2 1 22: 4 3 0 23: 4 3 1 24: 4 4 0 25: 4 4 1 26: 4 5 0 27: 4 5 1 28: 5 1 0 29: 5 1 1 30: 5 2 0 triangle_sort_test Normal end of execution. triangle_to_boundary_test(): triangle_to_boundary() converts a triangle list to an boundary word. Tiny example: triangle list 1: 1 1 1 2: 2 1 0 3: 1 2 0 Tiny example: boundary word boundary word: "21553" base point : [ 0, 1 ] Gort: triangle list 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 3 1 1 7: 4 1 0 8: 4 1 1 9: 5 1 0 10: 5 1 1 11: 3 2 0 12: 3 2 1 13: 4 2 0 14: 4 2 1 15: 5 2 0 16: 2 3 1 17: 3 3 0 18: 3 3 1 19: 4 3 0 20: 4 3 1 21: 1 4 0 22: 1 4 1 23: 2 4 0 24: 2 4 1 25: 3 4 0 26: 4 4 0 27: 4 4 1 28: 2 5 0 29: 4 5 0 30: 4 5 1 Gort: boundary word boundary word: "111110500043355343123443" base point : [ 0, 0 ] triangle_to_boundary_test Normal end of execution. triangle_to_edge_test(): triangle_to_edge() converts a triangle list to an edge list. Tiny example: triangle list 1: 1 1 1 2: 2 1 0 3: 1 2 0 Tiny example: edge list 1: 0 1 2: 1 0 3: 2 0 4: 1 1 5: 0 2 Gort: triangle list 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 3 1 1 7: 4 1 0 8: 4 1 1 9: 5 1 0 10: 5 1 1 11: 3 2 0 12: 3 2 1 13: 4 2 0 14: 4 2 1 15: 5 2 0 16: 2 3 1 17: 3 3 0 18: 3 3 1 19: 4 3 0 20: 4 3 1 21: 1 4 0 22: 1 4 1 23: 2 4 0 24: 2 4 1 25: 3 4 0 26: 4 4 0 27: 4 4 1 28: 2 5 0 29: 4 5 0 30: 4 5 1 Gort: edge list 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 4 0 6: 5 0 7: 5 1 8: 4 2 9: 4 3 10: 4 4 11: 4 5 12: 3 5 13: 3 4 14: 3 3 15: 2 4 16: 1 5 17: 1 4 18: 0 4 19: 0 3 20: 1 3 21: 2 2 22: 2 1 23: 1 1 24: 0 1 triangle_to_edge_test Normal end of execution. triangle_to_vertex_test(): triangle_to_vertex() converts a triangle list to a vertex list. Tiny example: triangle list 1: 1 1 1 2: 2 1 0 3: 1 2 0 Tiny example: vertex list 1: 0 1 2: 1 0 3: 2 0 4: 0 2 Gort: triangle list 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 3 1 1 7: 4 1 0 8: 4 1 1 9: 5 1 0 10: 5 1 1 11: 3 2 0 12: 3 2 1 13: 4 2 0 14: 4 2 1 15: 5 2 0 16: 2 3 1 17: 3 3 0 18: 3 3 1 19: 4 3 0 20: 4 3 1 21: 1 4 0 22: 1 4 1 23: 2 4 0 24: 2 4 1 25: 3 4 0 26: 4 4 0 27: 4 4 1 28: 2 5 0 29: 4 5 0 30: 4 5 1 Gort: vertex list 1: 0 0 2: 5 0 3: 5 1 4: 4 2 5: 4 5 6: 3 5 7: 3 3 8: 1 5 9: 1 4 10: 0 4 11: 0 3 12: 1 3 13: 2 2 14: 2 1 15: 0 1 triangle_to_vertex_test Normal end of execution. triangle_translate_test(): triangle_translate() translates a polyiamond described by its triangle word. Graphics saved as "triangle_translate_test.png" triangle_translate_test Normal end of execution. vertex_contains_ijk_test(): vertex_contains_ijk() reports whether an IJK triangle is inside a polygonal region with given vertex list. Gort vertex list 1: 0 0 2: 5 0 3: 5 1 4: 4 2 5: 4 5 6: 3 5 7: 3 3 8: 1 5 9: 1 4 10: 0 4 11: 0 3 12: 1 3 13: 2 2 14: 2 1 15: 0 1 i j k inside? 1 1 0 True 1 1 1 True 2 1 0 True 2 1 1 True 3 1 0 True 3 1 1 True 4 1 0 True 4 1 1 True 5 1 0 True 5 1 1 True 1 2 0 False 1 2 1 False 2 2 0 False 2 2 1 False 3 2 0 True 3 2 1 True 4 2 0 True 4 2 1 True 5 2 0 True 5 2 1 False 1 3 0 False 1 3 1 False 2 3 0 False 2 3 1 True 3 3 0 True 3 3 1 True 4 3 0 True 4 3 1 True 5 3 0 False 5 3 1 False 1 4 0 True 1 4 1 True 2 4 0 True 2 4 1 True 3 4 0 True 3 4 1 False 4 4 0 True 4 4 1 True 5 4 0 False 5 4 1 False 1 5 0 False 1 5 1 False 2 5 0 True 2 5 1 False 3 5 0 False 3 5 1 False 4 5 0 True 4 5 1 True 5 5 0 False 5 5 1 False vertex_contains_ijk_test Normal end of execution. vertex_contains_point(): vertex_contains_point() is given a vertex list, and determines if a point is inside the polyiamond. Polygon vertex list: 1: 0 0 2: 1 0 3: 2 1 4: 1 2 5: 0 2 P Inside? 1.000000 1.000000 True 3.000000 4.000000 False 0.000000 2.000000 False 0.500000 -0.250000 False vertex_contains_point_test Normal end of execution. vertex_hexiamond_test(): vertex_hexiamond() returns the IJ parallelogram point coordinates of the vertices that bound a hexiamond, given its index between 1 and 12. bat 1: 0 0 2: 2 0 3: 2 2 4: 1 2 5: 1 1 6: 0 1 butterfly 1: 1 0 2: 3 0 3: 2 1 4: 2 2 5: 0 2 6: 1 1 club 1: 1 0 2: 3 0 3: 3 1 4: 1 1 5: 0 2 6: 0 1 crown 1: 1 0 2: 3 0 3: 3 1 4: 2 1 5: 1 2 6: 1 1 7: 0 1 hexagon 1: 1 0 2: 2 0 3: 2 1 4: 1 2 5: 0 2 6: 0 1 lobster 1: 1 0 2: 1 1 3: 2 0 4: 2 1 5: 0 3 6: 0 1 pistol 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 2 6: 0 3 7: 0 1 rhomboid 1: 0 0 2: 3 0 3: 3 1 4: 0 1 shoe 1: 0 0 2: 1 0 3: 1 1 4: 2 0 5: 2 1 6: 1 2 7: 0 2 snake 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 3 6: 1 2 7: 0 2 8: 0 1 sphinx 1: 0 0 2: 3 0 3: 2 1 4: 1 1 5: 0 2 yacht 1: 0 0 2: 2 0 3: 2 1 4: 1 2 5: 1 1 6: 0 2 vertex_hexiamond_test Normal end of execution. vertex_plot_test(): MATLAB/Octave version 9.11.0.2358333 (R2021b) Update 7 vertex_plot() plots a polyiamond from its vertex list. Graphics saved as "vertex_plot_test.png" vertex_plot_test Normal end of execution. vertex_print_test(): vertex_print() prints the vertex list of a polyiamond. bat 1: 0 0 2: 2 0 3: 2 2 4: 1 2 5: 1 1 6: 0 1 crown 1: 1 0 2: 3 0 3: 3 1 4: 2 1 5: 1 2 6: 1 1 7: 0 1 pistol 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 2 6: 0 3 7: 0 1 snake 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 3 6: 1 2 7: 0 2 8: 0 1 vertex_print_test Normal end of execution. vertex_range_test(): vertex_range() finds the minimum and maximum I and J coordinates of a polyiamond drawn from its vertex list. Name Imin Imax Jmin Jmax tiny 0 2 0 2 bat 0 2 0 2 butterfly 0 3 0 2 club 0 3 0 2 crown 0 3 0 2 hexagon 0 2 0 2 lobster 0 2 0 3 pistol 0 2 0 3 rhomboid 0 3 0 1 shoe 0 2 0 2 snake 0 2 0 3 sphinx 0 3 0 2 yacht 0 2 0 2 gort 0 5 0 5 vertex_range_test Normal end of execution. vertex_reflect_test(): vertex_reflect() reflects a polyiamond described by its vertex list. Graphics saved as "vertex_reflect_test.png" vertex_reflect_test Normal end of execution. vertex_snap_test(): vertex_snap() snaps a polyiamond so that it has minimum I and J node coordinates of 0. Graphics saved as "vertex_snap_test.png" vertex_snap_test Normal end of execution. vertex_sort_test(): vertex_sort() sorts the vertex list of a polyiamond. Since the vertices must stay in counterclockwise order, sorting can only rotate the ordering. bat 1: 0 0 2: 2 0 3: 2 2 4: 1 2 5: 1 1 6: 0 1 bat (sorted) 1: 0 0 2: 2 0 3: 2 2 4: 1 2 5: 1 1 6: 0 1 butterfly 1: 1 0 2: 3 0 3: 2 1 4: 2 2 5: 0 2 6: 1 1 butterfly (sorted) 1: 0 2 2: 1 1 3: 1 0 4: 3 0 5: 2 1 6: 2 2 club 1: 1 0 2: 3 0 3: 3 1 4: 1 1 5: 0 2 6: 0 1 club (sorted) 1: 0 1 2: 1 0 3: 3 0 4: 3 1 5: 1 1 6: 0 2 crown 1: 1 0 2: 3 0 3: 3 1 4: 2 1 5: 1 2 6: 1 1 7: 0 1 crown (sorted) 1: 0 1 2: 1 0 3: 3 0 4: 3 1 5: 2 1 6: 1 2 7: 1 1 hexagon 1: 1 0 2: 2 0 3: 2 1 4: 1 2 5: 0 2 6: 0 1 hexagon (sorted) 1: 0 1 2: 1 0 3: 2 0 4: 2 1 5: 1 2 6: 0 2 lobster 1: 1 0 2: 1 1 3: 2 0 4: 2 1 5: 0 3 6: 0 1 lobster (sorted) 1: 0 1 2: 1 0 3: 1 1 4: 2 0 5: 2 1 6: 0 3 pistol 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 2 6: 0 3 7: 0 1 pistol (sorted) 1: 0 1 2: 1 0 3: 1 1 4: 2 1 5: 2 2 6: 1 2 7: 0 3 rhomboid 1: 0 0 2: 3 0 3: 3 1 4: 0 1 rhomboid (sorted) 1: 0 0 2: 3 0 3: 3 1 4: 0 1 shoe 1: 0 0 2: 1 0 3: 1 1 4: 2 0 5: 2 1 6: 1 2 7: 0 2 shoe (sorted) 1: 0 0 2: 1 0 3: 1 1 4: 2 0 5: 2 1 6: 1 2 7: 0 2 snake 1: 1 0 2: 1 1 3: 2 1 4: 2 2 5: 1 3 6: 1 2 7: 0 2 8: 0 1 snake (sorted) 1: 0 1 2: 1 0 3: 1 1 4: 2 1 5: 2 2 6: 1 3 7: 1 2 8: 0 2 sphinx 1: 0 0 2: 3 0 3: 2 1 4: 1 1 5: 0 2 sphinx (sorted) 1: 0 0 2: 3 0 3: 2 1 4: 1 1 5: 0 2 yacht 1: 0 0 2: 2 0 3: 2 1 4: 1 2 5: 1 1 6: 0 2 yacht (sorted) 1: 0 0 2: 2 0 3: 2 1 4: 1 2 5: 1 1 6: 0 2 vertex_sort_test Normal end of execution. vertex_to_boundary_test(): vertex_to_boundary() converts a vertex list to a boundary word. Gort vertex list 1: 0 0 2: 5 0 3: 5 1 4: 4 2 5: 4 5 6: 3 5 7: 3 3 8: 1 5 9: 1 4 10: 0 4 11: 0 3 12: 1 3 13: 2 2 14: 2 1 15: 0 1 Gort boundary boundary word: "111110500043355343123443" base point : [ 0, 0 ] vertex_to_boundary_test Normal end of execution. vertex_to_edge_test(): vertex_to_edge() converts a vertex list to an edge list. Tiny vertex list 1: 0 1 2: 1 0 3: 2 0 4: 0 2 Tiny edge list 1: 0 1 2: 1 0 3: 2 0 4: 1 1 5: 0 2 Gort vertex list 1: 0 0 2: 5 0 3: 5 1 4: 4 2 5: 4 5 6: 3 5 7: 3 3 8: 1 5 9: 1 4 10: 0 4 11: 0 3 12: 1 3 13: 2 2 14: 2 1 15: 0 1 Gort edge list 1: 0 0 2: 1 0 3: 2 0 4: 3 0 5: 4 0 6: 5 0 7: 5 1 8: 4 2 9: 4 3 10: 4 4 11: 4 5 12: 3 5 13: 3 4 14: 3 3 15: 2 4 16: 1 5 17: 1 4 18: 0 4 19: 0 3 20: 1 3 21: 2 2 22: 2 1 23: 1 1 24: 0 1 vertex_to_edge_test Normal end of execution. vertex_to_triangle_test(): vertex_to_triangle() converts a vertex list to a triangle list. Gort vertex list 1: 0 0 2: 5 0 3: 5 1 4: 4 2 5: 4 5 6: 3 5 7: 3 3 8: 1 5 9: 1 4 10: 0 4 11: 0 3 12: 1 3 13: 2 2 14: 2 1 15: 0 1 Gort triangle_list 1: 1 1 0 2: 1 1 1 3: 2 1 0 4: 2 1 1 5: 3 1 0 6: 3 1 1 7: 4 1 0 8: 4 1 1 9: 5 1 0 10: 5 1 1 11: 3 2 0 12: 3 2 1 13: 4 2 0 14: 4 2 1 15: 5 2 0 16: 2 3 1 17: 3 3 0 18: 3 3 1 19: 4 3 0 20: 4 3 1 21: 1 4 0 22: 1 4 1 23: 2 4 0 24: 2 4 1 25: 3 4 0 26: 4 4 0 27: 4 4 1 28: 2 5 0 29: 4 5 0 30: 4 5 1 vertex_to_triangle_test Normal end of execution. vertex_translate_test(): vertex_translate() translates a polyiamond described by its vertex word. Graphics saved as "vertex_translate_test.png" vertex_translate_test Normal end of execution. xy_to_ij_test(): xy_to_ij() converts a point's (x,y) coordinates to (i,j). (X,Y) (I,J) (0.000000,0.000000) (0.000000,0.000000) (1.000000,0.000000) (1.000000,0.000000) (2.000000,0.000000) (2.000000,0.000000) (3.000000,0.000000) (3.000000,0.000000) (4.000000,0.000000) (4.000000,0.000000) (5.000000,0.000000) (5.000000,0.000000) (0.500000,0.866025) (0.000000,1.000000) (1.500000,0.866025) (1.000000,1.000000) (2.500000,0.866025) (2.000000,1.000000) (3.500000,0.866025) (3.000000,1.000000) (4.500000,0.866025) (4.000000,1.000000) (5.500000,0.866025) (5.000000,1.000000) (1.000000,1.732051) (0.000000,2.000000) (2.000000,1.732051) (1.000000,2.000000) (3.000000,1.732051) (2.000000,2.000000) (4.000000,1.732051) (3.000000,2.000000) (5.000000,1.732051) (4.000000,2.000000) (6.000000,1.732051) (5.000000,2.000000) (1.500000,2.598076) (-0.000000,3.000000) (2.500000,2.598076) (1.000000,3.000000) (3.500000,2.598076) (2.000000,3.000000) (4.500000,2.598076) (3.000000,3.000000) (5.500000,2.598076) (4.000000,3.000000) (6.500000,2.598076) (5.000000,3.000000) (2.000000,3.464102) (0.000000,4.000000) (3.000000,3.464102) (1.000000,4.000000) (4.000000,3.464102) (2.000000,4.000000) (5.000000,3.464102) (3.000000,4.000000) (6.000000,3.464102) (4.000000,4.000000) (7.000000,3.464102) (5.000000,4.000000) xy_to_ij_test(): Normal end of execution. polyiamonds_test(): Normal end of execution. 13-May-2025 16:41:10