今天我在维基百科上浏览了一些随机的极客文章,以获取我日常无用的知识。我偶然发现了quines,这是打印自己的源代码的程序。我发现这是让我的大脑受伤的好方法,所以我开始在VBA中使用quine。我有两个很好的理由:
这是我的杰作:
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
我的挑战:你能让它变得更短(最好更尴尬)吗?
答案 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,
#
,并使用字符串加法而不是字符串连接。