Task 003: FizzBuzz Switch Statement - MrKiplin/learn-typescript GitHub Wiki
Task description
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. Using a switch statement, find all multiples of 3 & 5 within a range of 1000. Return multiples of 3 as Fizz
, multiples of 5 as Buzz
and multiples of both as FizzBuzz
.
Step by step guide
Coming soon......
Completed solution
003-fizzbuzz-switch-statement.ts
export const fizzBuzzSwitchStatement = (value: number) => {
const isFizz = value % 3 === 0;
const isBuzz = value % 5 === 0;
switch (true) {
case isFizz && isBuzz:
return "FizzBuzz";
case isFizz:
return "Fizz";
case isBuzz:
return "Buzz";
default:
return value;
}
};
export const fizzBuzzSwitchStatementLogger = (range: number) =>
Array(range)
.fill(0)
.map((_, index) => fizzBuzzSwitchStatement(index));
003-fizzbuzz-switch-statement.spec.ts
import {
fizzBuzzSwitchStatement,
fizzBuzzSwitchStatementLogger,
} from "./002-fizzbuzz-switch-statement";
describe("fizzBuzzSwitchStatement", () => {
it.each([
[fizzBuzzSwitchStatement(3), "Fizz"],
[fizzBuzzSwitchStatement(5), "Buzz"],
[fizzBuzzSwitchStatement(0), "FizzBuzz"],
[fizzBuzzSwitchStatement(1), 1],
])("Should return %s", (result, expected) => {
expect(result).toBe(expected);
});
it.each`
result | expected
${fizzBuzzSwitchStatementLogger(6)} | ${"Fizz"}
${fizzBuzzSwitchStatementLogger(6)} | ${"Buzz"}
${fizzBuzzSwitchStatementLogger(6)} | ${"FizzBuzz"}
${fizzBuzzSwitchStatementLogger(6)} | ${1}
`("Should return an array containing $expected", ({ result, expected }) => {
expect(result).toContain(expected);
});
});