
192
|
第 6 章
幾乎完成了!只剩下字串要處理。
字串
字串很容易處理:只要我們同意哪個數值用來表示哪個字元的編碼,就可以將它們表示
成數值串列。
我們可以選擇我們的任何編碼,所以接著就來設計一個比較方便的 FizzBuzz 新方式。
我們只需要對數字和字串
'FizzBuzz'
、
'Fizz'
、
'Buzz'
進行編碼,所以可以使用數值
0
到
9
來表示字元的
'0'
到
'9'
,而以數值
10
到
14
來編碼
'B'
、
'F'
、
'i'
、
'u'
、
'z'
等字
元。
這已經提供我們能表示所需字串常值的方式(請小心不要誤使 Z 組合器無法使用):
TEN = MULTIPLY[TWO][FIVE]
B = TEN
F = INCREMENT[B]
I = INCREMENT[F]
U = INCREMENT[I]
ZED = INCREMENT[U]
FIZZ = UNSHIFT[UNSHIFT[UNSHIFT[UNSHIFT[EMPTY][ZED]][ZED]][I]][F]
BUZZ = UNSHIFT[UNSHIFT[UNSHIFT[UNSHIFT[EMPTY][ZED]][ZED]][U]][B]
FIZZBUZZ = UNSHIFT[UNSHIFT[UNSHIFT[UNSHIFT[BUZZ][ZED]][ZED]][I]][F]
為了檢查這些工作,我們可以編寫一些外部方法,將它們轉換成 Ruby 字串:
def to_char(c)
'0123456789BFiuz'.slice(to_integer(c)) ...