
244
|
第 7 章
ccdddddddd ( 數值 4)
❶
ddddddddeeff
ddddddeeffff
ddddeeffffff
ddeeffffffff
eeffffffffff ( 數值 5)
❷
=> nil
❶
加倍規則以字元
c
和
d
編碼將 2 轉換成 4。
❷
遞增規則將 4 轉換成 5,這次是以
e
和
f
編碼。
除了將數值改成其他數值,標籤系統還可以檢查它們的數學屬性。以下的標籤系統會測
試數值是奇數還是偶數:
>> rulebook = TagRulebook.new(2, [
TagRule.new('a', 'cc'), TagRule.new('b', 'd'),
TagRule.new('c', 'eo'), TagRule.new('d', ''), TagRule.new('e', 'e')
])
=> #<struct TagRulebook …>
如果它的輸入表示為偶數,這個系統會停在單字元字串
e
(這是偶數 "even" 的縮寫):
>> system = TagSystem.new('aabbbbbbbb', rulebook)
=> #<struct TagSystem …>
>> system.run
aabbbbbbbb ( 數值 4)
bbbbbbbbcc
bbbbbbccd
bbbbccdd
bbccddd
ccdddd
❶
ddddeo
❷
ddeo
eo
❸
e
❹
=> nil
❶
規則
a
和
b
將輸入減半;
ccdddd
表示數值 2。
❷
規則
c
刪除開頭的
cc
對組,並附加字元
eo ...