缺少的quines:Visual Basic(用于应用程序)

时间:2011-04-21 13:07:36

标签: vba quine

今天我在维基百科上浏览了一些随机的极客文章,以获取我日常无用的知识。我偶然发现了quines,这是打印自己的源代码的程序。我发现这是让我的大脑受伤的好方法,所以我开始在VBA中使用quine。我有两个很好的理由:

  1. 我找不到用VBA写的quine
  2. VBA鼓励你写出让你的大脑受伤的尴尬代码
  3. 这是我的杰作:

    Sub q()
    c = "Sub q();c = #;Debug.Print Replace(Replace(c, Chr(59), vbNewLine), Chr(35), Chr(34) & c & Chr(34));End Sub"
    Debug.Print Replace(Replace(c, Chr(59), vbNewLine), Chr(35), Chr(34) & c & Chr(34))
    End Sub
    

    我的挑战:你能让它变得更短(最好更尴尬)吗?

3 个答案:

答案 0 :(得分:7)

怎么样

Sub q() '//in mdl1
Debug.Print Workbooks(1).VBProject.VBComponents(5).CodeModule.Lines(1, 3)
End Sub

答案 1 :(得分:3)

我不知道是否有人读过这个帖子,但是根据das_weezul的优势,这里有一个更短的帖子。它独立于" Option Explicit" (与das_weezul不同),它独立于您正在使用的Office App(即Excel,Access,Word等) - 与Alex K&s不同。在即时窗口中使用它(Ctrl + G):

c="c=#:?replace(c,chr(35),chr(34) &c &chr(34))":?replace(c,chr(35),chr(34) &c &chr(34))

答案 2 :(得分:2)

@Dorian I响应的一些其他修改使VBA quin的字节数减少到77个字节

 
c=Chr(34):q="c=Chr(34):q=:?Replace(q,Chr(7),c+q+c)":?Replace(q,Chr(7),c+q+c)

允许这种情况发生的关键技巧是使用字符7,,超过字符35,#,并使用字符串加法而不是字符串连接。