Prove it
Small tests. Run them in the browser. Passing marks the challenge complete.
Write a function `greet(name)` that returns the string `Hello, {name}!`.
Write `fizzbuzz(n)` that returns a list of strings for 1..n. Multiples of 3 become 'Fizz', of 5 'Buzz', of both 'FizzBuzz', otherwise the number as a string.
Write `is_palindrome(text)` that ignores case and non-alphanumeric characters.
Write `word_count(text)` returning a dict of lowercase word -> count. Words are alphanumeric runs.
Implement class `Counter` with increment(), decrement(), and a value property starting at 0. decrement() must not go below 0.
Write `safe_divide(a, b)` that returns a/b, or None if b is 0.
Export function `fizzbuzz(n)` returning an array of strings for 1..n with Fizz/Buzz/FizzBuzz rules.
Export `unique(arr)` that returns a new array with duplicates removed, preserving first-seen order.
Export `area(shape: {kind:'circle', r:number} | {kind:'rect', w:number, h:number}): number`. Circles use Math.PI * r * r.
Return title and author name for books published in 2020 or later, alphabetically by title. Columns must be named title, author.
Build a profile card with a heading (h1) 'Ada Lovelace', a paragraph, and a link to https://en.wikipedia.org/wiki/Ada_Lovelace whose accessible name includes 'Wikipedia'.
Write `sumEvens(nums)` returning the sum of only the even numbers.
Write `shout(text: string): string` returning the text uppercased with a trailing '!'.
Return each borrower with their loan count, sorted by count descending. Columns: borrower, loans.
Build a profile card: an h1 with a name, a paragraph bio, and a link whose href contains 'github'.