前兩天總算把 Functional Programming Principles in Scala 最後一週的課程影片看完了,倒數第二個影片是利用 Functional Programming 的方式來解經典的倒水問題,影片裡解釋的很清楚,不過為了加深印象,所以用自己的理解方式幫程式碼加上一些註解。
/**
* 用 Scala 解很難死第三集裡的倒水問題!
*
* 程式碼是從 Functional Programming Principles in Scala 出來的,加上一些註解
* 方便理解,免得自己忘記。XD
*
* 原始問題:
*
* 現在有一個5加倫的水桶和3加倫的水桶,一個水池可以讓你填滿水桶或倒空水桶,
* 要如何才能量出4加倫的水來阻止炸彈?
*
* 擴充版:
*
* 現在有N個水桶,一個水池可以讓你填滿或倒空水桶,你如何透過一連串的行動在
* 某個水桶中裝剛剛好的水量X?
*
* 程式演算法核心:
*
* 暴力法 BFS Search,假設今天有5加倫和3加倫的水桶,我們有以下六個動作可以選擇:
*
* - 清空5加倫的水桶
* - 清空3加倫的水桶
* - 裝滿5加倫的水桶
* - 裝滿3加倫的水桶
* - 把5加倫的水桶裡的水倒到3加倫的水桶
* - 把3加倫的水桶裡的水倒到5加倫的水桶
*
* 列出第 ...