範囲は、1つまたは複数の連続した整数の並びを表します。2つの整数を..でつなげて作ります。
1..5
範囲は昇順にも降順にもできます。最初と最後の値は必ず含まれます。
範囲は_Enumerableプロトコル_を実装しているので、Enumモジュールの関数を使って範囲を扱うことができます。
チェスの愛好家なら、このゲームの自分だけのバージョンを書いてみたくなるでしょう。ええ、すでにオンラインにはたくさんのチェスの実装があるかもしれませんが、自分だけのものは唯一無二です!
しかし、想像力を存分に働かせる前に、基本を押さえる必要があります。まずは盤面を生成するところから始めましょう。
チェス盤の各マスは、文字と数字の組み合わせで識別されます。マスの縦の列はファイルと呼ばれ、AからHまでのラベルが付いています。マスの横の行はランクと呼ばれ、1から8までの番号が付いています。
rank_range/0関数を実装してください。1から8までの整数の範囲を返す必要があります。
Chessboard.rank_range()
file_range/0関数を実装してください。大文字のAのコードポイントから、大文字のHのコードポイントまでの整数の範囲を返す必要があります。
Chessboard.file_range()
ranks/0関数を実装してください。1から8までの整数の配列を返す必要があります。配列を手で書かず、rank_range/0関数が返す範囲から生成してください。
Chessboard.ranks()
# => [1, 2, 3, 4, 5, 6, 7, 8]
files/0関数を実装してください。"A"から"H"までの文字(文字列)の配列を返す必要があります。配列を手で書かず、file_range/0関数が返す範囲から生成してください。
Chessboard.files()
# => ["A", "B", "C", "D", "E", "F", "G", "H"]