最開始一個能在代碼上面玩貪吃蛇的創意
Quinesnake
吸引了我。經過研究發現,它不僅僅是一個經典的貪吃蛇遊戲,它同時是一個自產生程序。What?什麼是自產生程序?自產生程序是一個能夠將程序本身的源代碼作為輸出的程序。
Quinesnake
貪吃蛇遊戲執行時通過自己的編譯程序編譯並執行,將源代碼打印到屏幕,然後就可以在代碼上面玩貪吃蛇遊戲了。此處應該有動圖 Gif,但是微信傳不上來,點擊
小程序
查看關於自產生程序可能用文字解釋起來比較困難,我們看一下下面這個例子,打開 Python 交互式的命令行。
>>> s = "'s = ' + repr(s) + '\\nprint(' + s + ')'"
>>> print('s = ' + repr(s) + '\nprint(' + s + ')')
s = "'s = ' + repr(s) + '\\nprint(' + s + ')'"
print('s = ' + repr(s) + '\nprint(' + s + ')')
可以看到沒有任何輸入的兩行代碼,他們的輸出是源代碼自己。為什麼要強調沒有任何輸入呢,因為通過輸入輸出的話,是可以作弊的。比如如下程序的輸出也是源代碼本身,但是是通過讀取代碼文件實現的。
#!/bin/sh
cat $0
是不是迫不及待想要研究一下了?自產生程序也稱為 Quine,可以參考 http://www.nyx.net/~gthompso/quine.htm 。
項目地址:
https://github.com/taylorconor/quinesnake
今天的推薦不知道大家喜歡嗎?如果你喜歡,請在文章底部留言和點贊,以表示對我的支持,你們的留言、點贊和轉發關注是我持續更新的動力哦!
關注公眾號:非著名程序員,對話框回覆關鍵字 “1024”,免費領取 30 本經典編程書籍。
相關推薦
'PyQt5 GUI程序的基本框架'
"本節先通過一個簡單的示例程序介紹PyQt5 GUI應用程序的基本框架。啟動Python自帶的編程和交互式環境IDLE,點擊“File”→“New File”菜單項,打開一個文件編輯窗口,在此窗口中輸入下面的程序,並保存為文件demo2_1Hello.py,此文件保存在隨書...
Python
2019-09-19
'中秋佳節:沒編程合集大團圓!318本編出電子書籍➕視頻資料項目'
"中秋節佳節,小夥伴們都放假開心的回家團圓去了吧?這不、小編給你們帶來了更開心的事情、那就是給你們準備好了編程合集大團圓!全網最全編程語言視頻教程(從零基礎到大牛哦!)包含java、python、web、大數據、人工智能、等視頻教程+項目+源碼,現在免費分享給各位![領取方...
'阿里巴巴Python工程師推出了的一份Python學習清單,絕對經典'
"站在風口上,豬都能飛起來。人工智能風口,讓Pyhon這門膠水語言轉變成非常火的網紅語言。編程功力深厚的程序員花一兩個星期就能上手Python,而一些新手程序員花幾個月就可以上手。學編程,用Python確實是一個相當不錯的選擇。不過,面對Python網上有紛雜的資料,一些程...
'GitHub C#項目推薦|太吾繪卷遊戲Mod|遊戲修改或增強程序'
"GitHub C#項目推薦|太吾繪卷遊戲Mod項目分析倉庫名稱:Taiwu_mods標星(star):554 (不錯哦,潛力股項目)標星趨勢關注(watch):62拷貝(fork):441貢獻人數:34倉庫大小:7 MB主要開發語言:C#語言分佈:C#:97.42%、CM...
'阿里巴巴程序員推出了的一份Linux 學習清單,這一定是你最需要的'
"第一階段Linux+搜索+hadoop體系Linux基礎→shell編程→高併發架構→lucene,solr搜索→hadoop體系→HDFS→mapreduce→hbase→zookeeper→hive→flume→sqoop→項目實戰第二階段機器學習R語言→mahout...
'Python入門編程題庫20--輸出二進制、十進制、八進制和十六進制'
"一、題目0x4DC0 是一個十六進制數,它對應的 Unicode 編碼是中國古老的《易經》六十四卦的第一卦,請輸出第 51 卦(震卦)對應的 Unicode 編碼的二進制、十進制、八進制和十六進制格式。二、分析方式①利用python的內置函數:bin()、int()、oc...
推薦中...