Explain pebble removal logic

This commit is contained in:
gpt-engineer-app[bot] 2025-08-21 10:49:15 +00:00
parent d57837d286
commit 3b66a78800

View file

@ -71,18 +71,8 @@ const PebblePlacementGame: React.FC<PebblePlacementGameProps> = ({ showSocialSha
if (canRemovePebble(position)) { if (canRemovePebble(position)) {
const newPlacedPebbles = new Set(placedPebbles); const newPlacedPebbles = new Set(placedPebbles);
newPlacedPebbles.delete(position); newPlacedPebbles.delete(position);
// Cascade removal: remove any pebbles that become invalid
const sortedPebbles = Array.from(newPlacedPebbles).sort((a, b) => a - b);
for (const pebblePos of sortedPebbles) {
if (pebblePos > 1 && !newPlacedPebbles.has(pebblePos - 1)) {
newPlacedPebbles.delete(pebblePos);
}
}
const pebblesRemoved = placedPebbles.size - newPlacedPebbles.size;
setPlacedPebbles(newPlacedPebbles); setPlacedPebbles(newPlacedPebbles);
setPebblesInHand(pebblesInHand + pebblesRemoved); setPebblesInHand(pebblesInHand + 1);
} }
} else { } else {
// Try to place pebble // Try to place pebble
@ -171,7 +161,6 @@ const PebblePlacementGame: React.FC<PebblePlacementGameProps> = ({ showSocialSha
<li> You can place a pebble on position i only if position (i-1) has a pebble</li> <li> You can place a pebble on position i only if position (i-1) has a pebble</li>
<li> You can remove a pebble from position i only if position (i-1) has a pebble</li> <li> You can remove a pebble from position i only if position (i-1) has a pebble</li>
<li> The pebble on position 1 is always removable</li> <li> The pebble on position 1 is always removable</li>
<li> Removing a pebble may cascade and remove other pebbles that become invalid</li>
<li> Goal: Place a pebble on the largest possible position</li> <li> Goal: Place a pebble on the largest possible position</li>
</ul> </ul>
</div> </div>