趣味程式:列印自己代碼的程式

來源:互聯網
上載者:User
在CSDN上看到了這道題http://community.csdn.net/Expert/topic/4654/4654528.xml
是寫一小段程式,列印自己的代碼。按我的理解,這裡應當不能利用中繼資料或者檔案操作,要完全使用程式碼產生一段和自己的代碼一模一樣的字串。我寫了幾個版本,這些程式運行出來的結果都是列印所貼代碼本身,大家可以試試看,娛樂一下,僅此而已。

C#版,為簡化字串操作,該程式只有一行。class P{static void Main(){string s="class P{{static void Main(){{string s={1}{0}{1};System.Console.WriteLine(s,s,(char)34);}}}}";System.Console.WriteLine(s,s,(char)34);}}

我已經寫不出比這個還短,同時能列印自己代碼的C#程式了。

VB版Module M:Dim c$ = "Module M:Dim c$ = {2}{0}{2}{1}Sub Main(){1}Console.WriteLine(c,c,vbCrLf,Chr(34)){1}End Sub:End Module"
Sub Main()
Console.WriteLine(c,c,vbCrLf,Chr(34))
End Sub:End Module

同樣,為了簡化字串操作,壓縮了空格和換行。這也是我能寫出最短的VB版本。

Python版print (lambda s: s.replace(chr(042),chr(047))%s)('print (lambda s: s.replace(chr(042), chr(047))%%s)("%s")')

我的Python用的不是十分熟練,因此這個Python版本恐怕還不是最短的版本。不知道在座Python高手們能不能寫出更精妙的列印自己代碼的程式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.