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
打印的信息相同的信息。