copycat
1.0.0
Douglas Hofstadter 的 Copycat 演算法的實作。 Copycat 演算法在維基百科上有解釋,該頁面有許多深入閱讀的連結。另見法格萊桑德里亞。
這個實作是 Scott Boland 的 Java 實作的模仿者。最初的 Java 到 Python 的翻譯工作是由 J Alan Brogan(GitHub 上的@jalanb)完成的。 Java 版本有一個類似原始 Lisp 的 GUI;該Python版本沒有內建GUI程式碼,但可以合併到更大的GUI程式中。
J.艾倫‧布羅根寫道:
在我無法輕鬆理解 Java 實作的情況下,我會從 LISP 實作中獲取想法,或直接從 Melanie Mitchell 的書「Analogy-Making as Perception」中獲取想法。
若要在本機複製儲存庫,請執行以下命令:
$ git clone https://github.com/fargonauts/copycat.git
$ cd copycat/copycat
$ python main.py abc abd ppqqrr --iterations 10
該腳本需要三個或四個參數。前兩個是一對有一些變化的字串,例如“abc”和“abd”。第三個是腳本應嘗試進行類似更改的字串。第四個(預設為「1」)是迭代次數。
這可能會產生以下輸出
ppqqss: 6 (avg time 869.0, avg temp 23.4)
ppqqrs: 4 (avg time 439.0, avg temp 37.3)
第一個數字表示 Copycat 選擇該字串作為答案的次數;更高意味著「更明顯」。最後一個數字表示工作空間的平均最終溫度;較低意味著“更優雅”。
要安裝 Python 模組並開始使用它,請執行以下命令:
$ pip install -e git+git://github.com/fargonauts/copycat.git#egg=copycat
$ python
>>> from copycat import Copycat
>>> Copycat().run('abc', 'abd', 'ppqqrr', 10)
{'ppqqrs': {'count': 4, 'avgtime': 439, 'avgtemp': 37.3}, 'ppqqss': {'count': 6, 'avgtime': 869, 'avgtemp': 23.4}}
run
的結果是一個字典,其中包含與上面main.py
打印的資訊相同的資訊。