Implementasi algoritma Copycat Douglas Hofstadter. Algoritme Copycat dijelaskan di Wikipedia, dan halaman tersebut memiliki banyak link untuk membaca lebih dalam. Lihat juga Farglexandria.
Implementasi ini merupakan tiruan dari implementasi Java Scott Boland. Pekerjaan terjemahan asli Java-ke-Python dilakukan oleh J Alan Brogan (@jalanb di GitHub). Versi Java memiliki GUI yang mirip dengan Lisp asli; versi Python ini tidak memiliki kode GUI bawaan tetapi dapat dimasukkan ke dalam program GUI yang lebih besar.
J.Alan Brogan menulis:
Jika saya tidak dapat menerapkan implementasi Java dengan mudah, saya mengambil ide dari implementasi LISP, atau langsung dari buku Melanie Mitchell "Analogy-Making as Perception".
Untuk mengkloning repo secara lokal, jalankan perintah berikut:
$ git clone https://github.com/fargonauts/copycat.git
$ cd copycat/copycat
$ python main.py abc abd ppqqrr --iterations 10
Naskahnya membutuhkan tiga atau empat argumen. Dua string pertama adalah sepasang string dengan beberapa perubahan, misalnya "abc" dan "abd". Yang ketiga adalah string yang skrip harus coba ubah secara analog. Yang keempat (yang defaultnya adalah "1") adalah sejumlah iterasi.
Ini mungkin menghasilkan keluaran seperti
ppqqss: 6 (avg time 869.0, avg temp 23.4)
ppqqrs: 4 (avg time 439.0, avg temp 37.3)
Angka pertama menunjukkan berapa kali Copycat memilih string tersebut sebagai jawabannya; lebih tinggi berarti "lebih jelas". Angka terakhir menunjukkan rata-rata suhu akhir ruang kerja; lebih rendah berarti "lebih elegan".
Untuk menginstal modul Python dan memulainya, jalankan perintah berikut:
$ 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}}
Hasil run
adalah dict yang berisi informasi yang sama seperti yang dicetak main.py
di atas.