การใช้งานอัลกอริธึม Copycat ของ Douglas Hofstadter อัลกอริธึม Copycat ได้รับการอธิบายไว้ใน Wikipedia และหน้านั้นมีลิงก์มากมายสำหรับการอ่านเชิงลึก ดูเพิ่มเติมที่ ฟาร์เกิลแซนเดรีย
การใช้งานนี้เลียนแบบการใช้งาน Java ของ Scott Boland งานแปล Java-to-Python ต้นฉบับทำโดย J Alan Brogan (@jalanb บน GitHub) เวอร์ชัน Java มี GUI คล้ายกับ Lisp ดั้งเดิม Python เวอร์ชันนี้ไม่มีโค้ด GUI ในตัว แต่สามารถรวมเข้ากับโปรแกรม GUI ที่ใหญ่กว่าได้
เจ. อลัน โบรแกน เขียนว่า:
ในกรณีที่ฉันไม่สามารถใช้งาน Java ได้อย่างง่ายดาย ฉันนำแนวคิดมาจากการนำ LISP ไปใช้ หรือโดยตรงจากหนังสือ "Analogy-Making as Perception" ของ Melanie Mitchell
หากต้องการโคลน repo ในเครื่อง ให้รันคำสั่งเหล่านี้:
$ 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
คือ dict ที่มีข้อมูลเดียวกับที่พิมพ์โดย main.py
ด้านบน