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.)
considering second pentomino | Comment 2 of 4 |

The following program is a modification to refer to the configuration of the second pentomino in the puzzle.  It finds no solution.  Either there is no solution for that pentomino, or there's a flaw in the program:

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 o = 0 TO 3
   v = o MOD 2
   FOR r = 1 TO 3 - 2 * v
     FOR c = 1 TO 2 + 2 * v
       IF pc = 1 THEN PRINT o, r, c
       orc = 100 * o + 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 AND c2 = c + 2 THEN chk = 0
            IF o = 0 AND r2 = r AND c2 = c + 3 THEN chk = 0
            IF o = 0 AND r2 = r + 1 AND c2 = c THEN chk = 0

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

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

            IF o = 3 AND r2 = r AND c2 = c THEN chk = 0
            IF o = 3 AND r2 = r + 1 AND c2 = c THEN chk = 0
            IF o = 3 AND r2 = r + 3 AND c2 = c + 1 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 AND c2 = c + 2 THEN chk = 0
            IF o = 0 AND r2 = r AND c2 = c + 3 THEN chk = 0
            IF o = 0 AND r2 = r + 1 AND c2 = c THEN chk = 0

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

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

            IF o = 3 AND r2 = r AND c2 = c THEN chk = 0
            IF o = 3 AND r2 = r + 1 AND c2 = c THEN chk = 0
            IF o = 3 AND r2 = r + 3 AND c2 = c + 1 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) = o
           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 AND c2 = c + 2 THEN chk = 0
            IF o = 0 AND r2 = r AND c2 = c + 3 THEN chk = 0
            IF o = 0 AND r2 = r + 1 AND c2 = c THEN chk = 0

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

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

            IF o = 3 AND r2 = r AND c2 = c THEN chk = 0
            IF o = 3 AND r2 = r + 1 AND c2 = c THEN chk = 0
            IF o = 3 AND r2 = r + 3 AND c2 = c + 1 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 o
END SUB

 


  Posted by Charlie on 2009-09-29 13:51:53
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