Fix Zeckendorf game: add more Fibonacci numbers (up to 55) to ensure targets are reachable
This commit is contained in:
parent
c8d3475104
commit
179e247f71
1 changed files with 6 additions and 6 deletions
|
|
@ -4,8 +4,8 @@ import { Card, CardContent } from '@/components/ui/card';
|
||||||
import { Badge } from '@/components/ui/badge';
|
import { Badge } from '@/components/ui/badge';
|
||||||
import SocialShare from '@/components/SocialShare';
|
import SocialShare from '@/components/SocialShare';
|
||||||
|
|
||||||
// First 8 Fibonacci numbers: 1, 1, 2, 3, 5, 8, 13, 21
|
// First 10 Fibonacci numbers: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
|
||||||
const FIBONACCI_NUMBERS = [21, 13, 8, 5, 3, 2, 1, 1];
|
const FIBONACCI_NUMBERS = [55, 34, 21, 13, 8, 5, 3, 2, 1, 1];
|
||||||
|
|
||||||
interface ZeckendorfGameProps {
|
interface ZeckendorfGameProps {
|
||||||
showSocialShare?: boolean;
|
showSocialShare?: boolean;
|
||||||
|
|
@ -13,7 +13,7 @@ interface ZeckendorfGameProps {
|
||||||
|
|
||||||
const ZeckendorfGame: React.FC<ZeckendorfGameProps> = ({ showSocialShare = true }) => {
|
const ZeckendorfGame: React.FC<ZeckendorfGameProps> = ({ showSocialShare = true }) => {
|
||||||
const [targetNumber, setTargetNumber] = useState<number>(0);
|
const [targetNumber, setTargetNumber] = useState<number>(0);
|
||||||
const [flippedCards, setFlippedCards] = useState<boolean[]>(new Array(8).fill(false));
|
const [flippedCards, setFlippedCards] = useState<boolean[]>(new Array(10).fill(false));
|
||||||
const [currentSum, setCurrentSum] = useState<number>(0);
|
const [currentSum, setCurrentSum] = useState<number>(0);
|
||||||
const [timer, setTimer] = useState<number>(0);
|
const [timer, setTimer] = useState<number>(0);
|
||||||
const [isGameActive, setIsGameActive] = useState<boolean>(false);
|
const [isGameActive, setIsGameActive] = useState<boolean>(false);
|
||||||
|
|
@ -39,7 +39,7 @@ const ZeckendorfGame: React.FC<ZeckendorfGameProps> = ({ showSocialShare = true
|
||||||
for (let i = 0; i < numTerms; i++) {
|
for (let i = 0; i < numTerms; i++) {
|
||||||
let index;
|
let index;
|
||||||
do {
|
do {
|
||||||
index = Math.floor(Math.random() * 8);
|
index = Math.floor(Math.random() * 10);
|
||||||
} while (usedIndices.has(index));
|
} while (usedIndices.has(index));
|
||||||
|
|
||||||
usedIndices.add(index);
|
usedIndices.add(index);
|
||||||
|
|
@ -53,7 +53,7 @@ const ZeckendorfGame: React.FC<ZeckendorfGameProps> = ({ showSocialShare = true
|
||||||
const startNewGame = useCallback(() => {
|
const startNewGame = useCallback(() => {
|
||||||
const newTarget = generateValidTarget();
|
const newTarget = generateValidTarget();
|
||||||
setTargetNumber(newTarget);
|
setTargetNumber(newTarget);
|
||||||
setFlippedCards(new Array(8).fill(false));
|
setFlippedCards(new Array(10).fill(false));
|
||||||
setCurrentSum(0);
|
setCurrentSum(0);
|
||||||
setTimer(0);
|
setTimer(0);
|
||||||
setIsGameActive(true);
|
setIsGameActive(true);
|
||||||
|
|
@ -135,7 +135,7 @@ const ZeckendorfGame: React.FC<ZeckendorfGameProps> = ({ showSocialShare = true
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Cards representing Fibonacci numbers */}
|
{/* Cards representing Fibonacci numbers */}
|
||||||
<div className="grid grid-cols-8 gap-3">
|
<div className="grid grid-cols-10 gap-3">
|
||||||
{FIBONACCI_NUMBERS.map((fib, index) => (
|
{FIBONACCI_NUMBERS.map((fib, index) => (
|
||||||
<div key={fib} className="flex flex-col items-center space-y-2">
|
<div key={fib} className="flex flex-col items-center space-y-2">
|
||||||
<Card
|
<Card
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue