在資訊科學課堂上,學生們正在撰寫一段小函數來處理一串數字。這一串數字包含一個有順序性的五個數字並表示成[a, b, c, d, e]
。而每一個函數個功能就是把原來的數字順序經過函數轉換後成為另一種順序。
Anna寫了一個函數 anna([a, b, c, d, e])
功能是把數字順序轉換成 [e, b, c, d, a]
。 Bob也寫了一個函數 bob([a, b, c, d, e])
功能是把數字順序轉換成 [e, d, c, b, a]
。
老師檢查他們的函數都可以正確轉換後也寫了一個新函數Shaker([a, b, c, d, e])
這個函數的功能是組合了Anna與Bob的函數成為 anna(bob(anna([a, b, c, d, e])))
。
老師也展示了這個函數的運作方式:
anna(bob(anna([a, b, c, d, e])))
首先是括號內最內層的anna函數結果轉換出來
anna(bob([e, b, c, d, a]))
接者把剛剛的結果再進行內層bob函數的轉換
anna([a, d, c, b, e])
結果再次進行anna函數的轉換
[e, d, c, b, a]
最後的結果
現在老師又寫了一個新的函數 test([a, b, c, d, e]) ,其運作的方式如下:
bob(shaker(anna([a, b, c, d, e])))
請問經過這個函數的轉換後,原來的數字順序[a, b, c, d, e]會變成如何呢?