zoukankan      html  css  js  c++  java
  • 趣味程序:打印自己代码的程序

    在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高手们能不能写出更精妙的打印自己代码的程序。
  • 相关阅读:
    HDU 2852 KiKi's K-Number (主席树)
    HDU 2089 不要62
    Light oj 1140 How Many Zeroes?
    Bless You Autocorrect!
    HDU 6201 transaction transaction transaction
    HDU1561 The more ,The better (树形背包Dp)
    CodeForces 607B zuma
    POJ 1651 Mulitiplication Puzzle
    CSUOJ 1952 合并石子
    Uva 1599 Ideal path
  • 原文地址:https://www.cnblogs.com/Ninputer/p/366554.html
Copyright © 2011-2022 走看看