Skip to content

Commit e2e251f

Browse files
committed
fix: incorrect fizz buzz
1 parent 1a114de commit e2e251f

File tree

4 files changed

+28
-8
lines changed

4 files changed

+28
-8
lines changed

readme.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ Eg 👉
8787

8888
## Documentation
8989

90-
Is hosted on [Deno Doc](https://doc.deno.land/https://deno.land/x/eloq/mod.ts) 📄
90+
Is hosted on [Deno Doc](https://doc.deno.land/https://deno.land/x/eloq/mod.ts)
91+
📄
9192

9293
## Support
9394

src/program_structure/buzzfizz.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function fizzBuzzExpected(max: number) {
2+
return Array.from({ length: max }, (_, i) => {
3+
const n = i + 1;
4+
5+
if (n % 15 === 0) return "FizzBuzz";
6+
if (n % 3 === 0) return "Fizz";
7+
if (n % 5 === 0) return "Buzz";
8+
9+
return n;
10+
});
11+
}

src/program_structure/fizzbuzz.test.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,21 @@ Deno.test("[fizzBuzz]", () => {
1717
FIZZ,
1818
13,
1919
14,
20-
FIZZ,
2120
FIZZ_BUZZ,
2221
];
2322

2423
assertEquals(fizzBuzz(15), expected);
2524
});
2625

26+
Deno.test("[fizzBuzz] spot check", () => {
27+
const result = fizzBuzz(20);
28+
29+
assertEquals(result[2], FIZZ);
30+
assertEquals(result[4], BUZZ);
31+
assertEquals(result[14], FIZZ_BUZZ);
32+
assertEquals(result[19], BUZZ);
33+
});
34+
2735
Deno.test("[isDivisbleBy]", () => {
2836
assert(divisibleBy(15, 3));
2937
assert(divisibleBy(15, 5));

src/program_structure/fizzbuzz.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,24 @@ export const FIZZ = "Fizz";
77
export const BUZZ = "Buzz";
88
export const FIZZ_BUZZ = "FizzBuzz";
99

10+
export type FizzBuzz = typeof FIZZ | typeof BUZZ | typeof FIZZ_BUZZ | number;
11+
1012
export function fizzBuzz(max = 100) {
11-
const result: (typeof FIZZ | typeof BUZZ | typeof FIZZ_BUZZ | number)[] = [];
13+
const result: FizzBuzz[] = [];
1214

1315
for (let number = 1; number <= max; number++) {
1416
const fizz = divisibleBy(number, 3);
1517
const buzz = divisibleBy(number, 5);
1618

17-
if (fizz) {
19+
if (fizz && buzz) {
20+
result.push(FIZZ_BUZZ);
21+
} else if (fizz) {
1822
result.push(FIZZ);
1923
} else if (buzz) {
2024
result.push(BUZZ);
2125
} else {
2226
result.push(number);
2327
}
24-
25-
if (fizz && buzz) {
26-
result.push(FIZZ_BUZZ);
27-
}
2828
}
2929

3030
return result;

0 commit comments

Comments
 (0)