All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars    
perplexus dot info

Home > Shapes
Double Coverage (Posted on 2009-09-29) Difficulty: 2 of 5
The two pentominos pictured below cannot tile any rectangle.
+--+  +--+   +--+--+
|  |  |  |   |  |  |
+--+--+--+   +--+--+--+--+
|  |  |  |      |  |  |  | 
+--+--+--+      +--+--+--+
Take eight copies of one pentomino and place them on a 4x5 rectangle such that each 1x1 subsquare of the rectangle has exactly two pentominos covering it.

No Solution Yet Submitted by Brian Smith    
No Rating

Comments: ( Back to comment list | You must be logged in to post comments.)
Solution re(2): considering second pentomino Comment 4 of 4 |
(In reply to re: considering second pentomino by Brian Smith)

The new version takes into consideration flipping a piece over.

Orientation 4 is the same as 0 but reflected about the long axis.
Orientation 5 is that shape rotated 90 CW, etc.

Again, when the top-left grid position is given for a piece, it may or may not be occupied by part of the pentomino as it may be part of one of the two cutouts.

top-left
 corner
row col     orientation
 3   2           0
 1   1           1
 1   1           2
 1   4           3
 1   2           4
 1   4           5
 3   1           6
 1   1           7

Presented as a grid, with the row number of the piece (1 - 8 from the above table), they are covered as follows:


+---+---+---+---+---+
| 8 | 2 | 5 | 5 | 4 |
| 3 | 3 | 3 | 6 | 5 |
+---+---+---+---+---+
| 2 | 2 | 5 | 6 | 4 |
| 8 | 5 | 3 | 3 | 6 |
+---+---+---+---+---+
| 2 | 1 | 1 | 4 | 4 |
| 8 | 8 | 7 | 7 | 6 |
+---+---+---+---+---+
| 2 | 8 | 1 | 1 | 1 |
| 7 | 7 | 7 | 4 | 6 |
+---+---+---+---+---+

The fact that some given number appears sometimes above and sometimes below the other number in the square only reflects the fact they will not occupy just two levels, but there will be gaps. I didn't see the need to put three possible rows of numbers in each grid square.

DECLARE SUB place (pc!)

CLEAR , , 25000

DIM SHARED bd(4, 5)
DIM SHARED row(8), col(8), orient(8), chkProg(8)
'orient: 0 = top up; 1 = top to right; 2 = top down; 3 = top to left

CLS

place 1

SUB place (pc)
  FOR o1 = 0 TO 7
   o = o1 MOD 4
   ref = ABS(o1 > 3)
   v = o MOD 2
   FOR r = 1 TO 3 - 2 * v
     FOR c = 1 TO 2 + 2 * v
       IF pc = 1 THEN PRINT o1, r, c
       orc = 100 * o1 + 10 * r + c

       IF orc >= chkProg(pc - 1) THEN
         good = 1
         FOR r2 = r TO r + 1 + 2 * v
           FOR c2 = c TO c + 3 - 2 * v
            chk = 1
            IF o = 0 AND r2 = r + ref AND c2 = c + 2 THEN chk = 0
            IF o = 0 AND r2 = r + ref AND c2 = c + 3 THEN chk = 0
            IF o = 0 AND r2 = r + 1 - ref AND c2 = c THEN chk = 0

            IF o = 1 AND r2 = r AND c2 = c + ref THEN chk = 0
            IF o = 1 AND r2 = r + 2 AND c2 = c + 1 - ref THEN chk = 0
            IF o = 1 AND r2 = r + 3 AND c2 = c + 1 - ref THEN chk = 0

            IF o = 2 AND r2 = r + ref AND c2 = c + 3 THEN chk = 0
            IF o = 2 AND r2 = r + 1 - ref AND c2 = c THEN chk = 0
            IF o = 2 AND r2 = r + 1 - ref AND c2 = c + 1 THEN chk = 0

            IF o = 3 AND r2 = r AND c2 = c + ref THEN chk = 0
            IF o = 3 AND r2 = r + 1 AND c2 = c + ref THEN chk = 0
            IF o = 3 AND r2 = r + 3 AND c2 = c + 1 - ref THEN chk = 0

            IF chk THEN
              IF bd(r2, c2) > 1 THEN good = 0
            END IF
           NEXT
         NEXT
         IF good THEN
           FOR r2 = r TO r + 1 + 2 * v
             FOR c2 = c TO c + 3 - 2 * v
              chk = 1
            IF o = 0 AND r2 = r + ref AND c2 = c + 2 THEN chk = 0
            IF o = 0 AND r2 = r + ref AND c2 = c + 3 THEN chk = 0
            IF o = 0 AND r2 = r + 1 - ref AND c2 = c THEN chk = 0

            IF o = 1 AND r2 = r AND c2 = c + ref THEN chk = 0
            IF o = 1 AND r2 = r + 2 AND c2 = c + 1 - ref THEN chk = 0
            IF o = 1 AND r2 = r + 3 AND c2 = c + 1 - ref THEN chk = 0

            IF o = 2 AND r2 = r + ref AND c2 = c + 3 THEN chk = 0
            IF o = 2 AND r2 = r + 1 - ref AND c2 = c THEN chk = 0
            IF o = 2 AND r2 = r + 1 - ref AND c2 = c + 1 THEN chk = 0

            IF o = 3 AND r2 = r AND c2 = c + ref THEN chk = 0
            IF o = 3 AND r2 = r + 1 AND c2 = c + ref THEN chk = 0
            IF o = 3 AND r2 = r + 3 AND c2 = c + 1 - ref THEN chk = 0
              IF chk THEN
                bd(r2, c2) = bd(r2, c2) + 1
              END IF
             NEXT
           NEXT
           row(pc) = r: col(pc) = c: orient(pc) = o1
           chkProg(pc) = orc

           IF pc < 8 THEN
            place pc + 1
           ELSE
            FOR i = 1 TO 8
              PRINT row(i); col(i); orient(i)
            NEXT
            PRINT
            DO: LOOP UNTIL INKEY$ > ""
           END IF

          
           FOR r2 = r TO r + 1 + 2 * v
             FOR c2 = c TO c + 3 - 2 * v
              chk = 1
            IF o = 0 AND r2 = r + ref AND c2 = c + 2 THEN chk = 0
            IF o = 0 AND r2 = r + ref AND c2 = c + 3 THEN chk = 0
            IF o = 0 AND r2 = r + 1 - ref AND c2 = c THEN chk = 0

            IF o = 1 AND r2 = r AND c2 = c + ref THEN chk = 0
            IF o = 1 AND r2 = r + 2 AND c2 = c + 1 - ref THEN chk = 0
            IF o = 1 AND r2 = r + 3 AND c2 = c + 1 - ref THEN chk = 0

            IF o = 2 AND r2 = r + ref AND c2 = c + 3 THEN chk = 0
            IF o = 2 AND r2 = r + 1 - ref AND c2 = c THEN chk = 0
            IF o = 2 AND r2 = r + 1 - ref AND c2 = c + 1 THEN chk = 0

            IF o = 3 AND r2 = r AND c2 = c + ref THEN chk = 0
            IF o = 3 AND r2 = r + 1 AND c2 = c + ref THEN chk = 0
            IF o = 3 AND r2 = r + 3 AND c2 = c + 1 - ref THEN chk = 0
              IF chk THEN
                bd(r2, c2) = bd(r2, c2) - 1
              END IF
             NEXT
           NEXT
         END IF
       END IF
     NEXT
   NEXT r
  NEXT o1
END SUB


 


  Posted by Charlie on 2009-09-30 01:48:37
Please log in:
Login:
Password:
Remember me:
Sign up! | Forgot password


Search:
Search body:
Forums (0)
Newest Problems
Random Problem
FAQ | About This Site
Site Statistics
New Comments (4)
Unsolved Problems
Top Rated Problems
This month's top
Most Commented On

Chatterbox:
Copyright © 2002 - 2017 by Animus Pactum Consulting. All rights reserved. Privacy Information