区间表示一个或多个连续整数组成的序列。用..把两个整数连接起来,就能创建一个区间。
1..5
区间可以递增,也可以递减。它始终包含首尾两个值。
区间实现了 Enumerable 协议,这意味着可以使用Enum模块中的函数来处理区间。
作为一名国际象棋爱好者,你想写出属于自己的版本。没错,网上可能已经有很多现成的国际象棋实现,但你的版本一定会独一无二!
不过,在放飞想象力之前,得先把基础打好。我们先从生成棋盘开始吧。
棋盘的每一格都由一个字母和一个数字的组合来标识。竖直方向的各列(file)用 A 到 H 标记,水平方向的各行(rank)用 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"]