Bingo Winner
Mix.install([
{:youtube, github: "brooklinjazz/youtube"},
{:hidden_cell, github: "brooklinjazz/hidden_cell"},
{:tested_cell, github: "brooklinjazz/tested_cell"},
{:utils, path: "#{__DIR__}/../utils"}
])
Navigation
Bingo Winner
Bingo is a game where players are given a board of numbers.
Provided a bingo board, determine if the board is a winner.
Numbers are called, and players fill out the matching numbers on their board.
A board is a winner if it has any row, column, or diagonal completely filled.
For example, let’s say we have an empty board like so:
[
[nil, nil, nil],
[nil, nil, nil],
[nil, nil, nil],
]
We’ll mark matching numbers using "X"
.
A winning board would look like:
# example win on row
[
["X", "X", "X"],
[nil, nil, nil],
[nil, nil, nil]
]
# example win on column.
[
["X", nil, nil],
["X", nil, nil],
["X", nil, nil],
]
# example win on diagonal
[
["X", nil, nil],
[nil, "X", nil],
[nil, nil, "X"],
]
Determine the Winner
Create a Bingo.is_winner?/1
function that accepts a board and returns true
if the board is a winner.
winning_board = [
[nil, nil, "X"],
[nil, "X", nil],
["X", nil, nil],
]
losing_board = [
["X", nil, "X"],
[nil, nil, nil],
["X", "X", nil],
]
Bingo.is_winner?(winning_board)
true
Bingo.is_winner?(losing_board)
false
Play the Game
Create a Bingo.play/2
function which accepts a board of numbers and a list of called numbers.
The board should return an output we can use with the Bingo.is_winner?/1
function to determine if the player won.
board = [
[3, 2, 5],
[1, 6, 7],
[4, 8, 9]
]
called_numbers = [1, 2, 3]
completed_board = Bingo.play(board, called_numbers)
[
["X", "X", nil],
["X", nil, nil],
[nil, nil, nil],
]
Bingo.is_winner?(completed_board)
false
Enter your answer below.
defmodule Bingo do
@doc """
Determine if a completed bingo board is a winner.
## Examples
iex> Bingo.is_winner?([["X", "X", "X"], ["X", "X", "X"], ["X", "X", "X"]])
Row Cases
iex> Bingo.is_winner?([["X", "X", "X"], [nil, nil, nil], [nil, nil, nil]])
true
iex> Bingo.is_winner?([[nil, nil, nil], ["X", "X", "X"], [nil, nil, nil]])
true
iex> Bingo.is_winner?([[nil, nil, nil], [nil, nil, nil], ["X", "X", "X"]])
true
Diagonal Cases
iex> Bingo.is_winner?([["X", nil, nil], [nil, "X", nil], [nil, nil, "X"]])
true
iex> Bingo.is_winner?([[nil, nil, "X"], [nil, "X", nil], ["X", nil, nil]])
Column Cases
iex> Bingo.is_winner?([["X", nil, nil], ["X", nil, nil], ["X", nil, nil]])
true
iex> Bingo.is_winner?([[nil, "X", nil], [nil, "X", nil], [nil, "X", nil]])
true
iex> Bingo.is_winner?([[nil, nil, "X"], [nil, nil, "X"], [nil, nil, "X"]])
true
Losing Cases
iex> Bingo.is_winner?([[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]])
false
iex> Bingo.is_winner?([["X", nil, "X"], ["X", nil, nil], [nil, nil, "X"]])
false
iex> Bingo.is_winner?([["X", nil, "X"], [nil, nil, nil], ["X", nil, "X"]])
false
"""
def is_winner?(completed_board) do
end
@doc """
Fill called numbers in a board with `"X"` and not called numbers with `nil`.
## Examples
iex> Bingo.play([[1, 1, 1], [1, 1, 1], [1, 1, 1]], [])
[[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
iex> Bingo.play([[1, 1, 1], [1, 1, 1], [1, 1, 1]], [1])
[["X", "X", "X"], ["X", "X", "X"], ["X", "X", "X"]]
iex> Bingo.play([[3, 2, 5], [1, 6, 7], [4, 8, 9]], [1, 2, 3])
[["X", "X", nil], ["X", nil, nil], [nil, nil, nil]]
iex> Bingo.play([[3, 2, 5], [1, 6, 7], [4, 8, 9]], [1, 2, 3, 6, 8, 9])
[["X", "X", nil], ["X", "X", nil], [nil, "X", "X"]]
"""
def play(numbered_board, called_numbers) do
end
end
Commit Your Progress
Run the following in your command line from the beta_curriculum folder to track and save your progress in a Git commit.
$ git add .
$ git commit -m "finish bingo winner exercise"
Up Next
Previous | Next |
---|---|
Filter Values By Type | Number Wordle |