Home > Logic
Girls Just Wanna Have Fun (Posted on 2003-11-06) |
|
5 Girls (named Alice, Betty, Carol, Diane, Emily) visit a mall to shop. They come upon a clothing shop and they decide to buy clothing.
But, for some strange reason, different colored shirts cost different amounts, which now came in increments of 10 dollars. (Every shirt of the same color costs the same amount.) This store doesn't carry very many shirts; the most expensive one is 50 dollars, and they only come in red, green, blue, yellow, and orange.
Each girl goes into the store and finds two different shirts. No two girls got the same pair of shirts, and no girl got a shirt for free. It ended up that each color shirt was bought exactly twice.
Using the following clues, can you figure out the two colors of shirts each girl bought, and how much each color bought, as well as how much each girl spent?
1) When the 5 girls were comparing their purchases, they found that Diane spent the most money, 2 girls tied for second most money spent, and the other 2 girls spent the same amount of money as well.
2) When Carol bought the blue shirt, she was mad that the it was more expensive than the 10-dollar price it was last week, and didn't buy the green shirt because of this.
3) Diane's and Emily's different styles resulted in them not buying any shirts the same color as each other's.
4) Alice and Emily both decided not to buy the orange shirt, but instead, Alice went with Carol to pick out the same color shirt to buy, noting that it didn't cost 20 dollars like last week.
5) As Betty was waiting to buy a red shirt (which she did end up buying), she saw Carol buy a shirt that cost 40 dollars.
re: Each shirt purchased twice
|
| Comment 20 of 37 |
|
(In reply to Each shirt purchased twice by Gamer)
With the added rule, the solution set is indeed reduced to one. The revised program is:
DECLARE SUB varyGirl (which!)
DECLARE SUB permute (a$)
CLS
DIM SHARED colr$, gs$(2, 5), total(5)
colr$ = "rgbyo"
OPEN "shirts.txt" FOR OUTPUT AS #2
FOR costs = 1 TO 120
varyGirl 1
permute colr$
NEXT
CLOSE
SUB permute (a$)
DEFINT A-Z
x$ = ""
FOR i = LEN(a$) TO 1 STEP -1
l$ = x$
x$ = MID$(a$, i, 1)
IF x$ < l$ THEN EXIT FOR
NEXT
IF i = 0 THEN
FOR j = 1 TO LEN(a$) \ 2
x$ = MID$(a$, j, 1)
MID$(a$, j, 1) = MID$(a$, LEN(a$) - j + 1, 1)
MID$(a$, LEN(a$) - j + 1, 1) = x$
NEXT
ELSE
FOR j = LEN(a$) TO i + 1 STEP -1
IF MID$(a$, j, 1) > x$ THEN EXIT FOR
NEXT
MID$(a$, i, 1) = MID$(a$, j, 1)
MID$(a$, j, 1) = x$
FOR j = 1 TO (LEN(a$) - i) \ 2
x$ = MID$(a$, i + j, 1)
MID$(a$, i + j, 1) = MID$(a$, LEN(a$) - j + 1, 1)
MID$(a$, LEN(a$) - j + 1, 1) = x$
NEXT
END IF
END SUB
DEFSNG A-Z
SUB varyGirl (which)
DIM t(5)
DIM colrCt(5)
FOR shirt1 = 1 TO 4
gs$(1, which) = MID$(colr$, shirt1, 1)
FOR shirt2 = shirt1 + 1 TO 5
gs$(2, which) = MID$(colr$, shirt2, 1)
total(which) = shirt1 + shirt2
SELECT CASE which
CASE 1
IF gs$(1, which) = "o" OR gs$(2, which) = "o" THEN GOTO notThis
CASE 2
IF gs$(1, which) <> "r" AND gs$(2, which) <> "r" THEN GOTO notThis
CASE 3
IF gs$(1, which) <> "b" AND gs$(2, which) <> "b" THEN GOTO notThis
IF gs$(1, which) = "b" AND shirt1 = 1 OR gs$(2, which) = "b" AND shirt2 = 1 THEN GOTO notThis
IF gs$(1, which) = "g" OR gs$(2, which) = "g" THEN GOTO notThis
IF gs$(1, which) <> gs$(1, 1) AND gs$(1, which) <> gs$(2, 1) AND gs$(2, which) <> gs$(1, 1) AND gs$(2, which) <> gs$(2, 1) THEN GOTO notThis
IF gs$(1, which) = gs$(1, 1) OR gs$(1, which) = gs$(2, 1) THEN
IF shirt1 = 2 THEN GOTO notThis
ELSE
IF shirt2 = 2 THEN GOTO notThis
END IF
IF shirt1 <> 4 AND shirt2 <> 4 THEN GOTO notThis
CASE 5
IF gs$(1, which) = "o" OR gs$(2, which) = "o" THEN GOTO notThis
END SELECT
FOR j = 1 TO which - 1
IF gs$(1, j) = gs$(1, which) AND gs$(2, j) = gs$(2, which) THEN GOTO notThis
NEXT
IF which < 5 THEN
varyGirl which + 1
ELSE
GOSUB evaluate
END IF
notThis:
NEXT
NEXT
EXIT SUB
evaluate:
IF total(4) > total(1) AND total(4) > total(2) AND total(4) > total(3) AND total(4) > total(5) THEN
t(1) = total(1): t(2) = total(2): t(3) = total(3): t(4) = total(5)
DO
fl = 0
FOR i = 1 TO 3
IF t(i) > t(i + 1) THEN SWAP t(i), t(i + 1): fl = 1
NEXT
LOOP UNTIL fl = 0
gs1$ = gs$(1, 1) + gs$(1, 2) + gs$(1, 3) + gs$(1, 4) + gs$(1, 5)
gs2$ = gs$(2, 1) + gs$(2, 2) + gs$(2, 3) + gs$(2, 4) + gs$(2, 5)
IF t(3) = t(4) AND t(1) = t(2) THEN
IF gs$(1, 4) <> gs$(1, 5) AND gs$(1, 4) <> gs$(2, 5) AND gs$(2, 4) <> gs$(1, 5) AND gs$(2, 4) <> gs$(2, 5) THEN
bad = 0
FOR i = 1 TO 2
FOR j = 1 TO 5
ix = INSTR(colr$, gs$(i, j))
colrCt(ix) = colrCt(ix) + 1
IF colrCt(ix) > 2 THEN bad = 1
NEXT
NEXT
IF bad = 0 THEN
PRINT
PRINT colr$
PRINT gs1$
PRINT gs2$
FOR g = 1 TO 5
PRINT 10 * total(g);
NEXT
PRINT
END IF
END IF
END IF
END IF
RETURN
END SUB
and it finds the one solution
yrobg (order of colors from $10 to $50 value)
yryor (girls' less expensive shirts: Alice to Emily)
gobgb (girls' more expensive shirts: Alice to Emily)
60 50 50 80 60 (amounts spent: Alice to Emily)
|
Posted by Charlie
on 2003-11-07 21:18:54 |
|
|
Please log in:
Forums (1)
Newest Problems
Random Problem
FAQ |
About This Site
Site Statistics
New Comments (6)
Unsolved Problems
Top Rated Problems
This month's top
Most Commented On
Chatterbox:
|