编写一个可擦除自身的程序。尽管确切的行为可能是实现定义的,但它应至少在最大努力的基础上尝试删除程序存储在其中的文件。
这是一场人气竞赛,因此投票最多的答案将获胜。
编写一个可擦除自身的程序。尽管确切的行为可能是实现定义的,但它应至少在最大努力的基础上尝试删除程序存储在其中的文件。
这是一场人气竞赛,因此投票最多的答案将获胜。
Answers:
在删除自身之前先输出莎士比亚的自白:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main(int i,char** a)
{char x[99]="rm ",*s="Uo}`b(y"
"ikveeirgaoRTxkwvh]PHZcMV`UHD\\NQ@M"
"MAFDmR^]On&62@3/;FL:.7A00\"+#/:$(7,}y3!z~"
"s.#{+}~nmkwDWjf~rjfjbmwYeZsUed`gbl\\RiY^\\YG"
"LIRWT^EMOPPH>v&HSHBPE1:3K-=7<F(-&-155>~<0!z8(|5"
"*'#(r{s\"8KKwl'h~$rrqorgkcy_g\\uj]Y`1o{zlA[iNRMqd"
"poaVP^RJBAKdWcbTs\"BP>?A3fJ,8-F)?C%A5-%$.;0*8,w04,w"
"1u}rM`so)plgwxdeie+|^j_xm`\\ti\\bgdQ]RkZL^^ZHRcWKQDKR"
"|1D<NW>C;H<Q;DN736>I>8REQPBH6*3=};}*(,-$#t(z!}NQq#y~|s!"
"%xr\"ce}ufoc!]&uJdrW[Vzmyxj_Yg[SKJT|`lk]|1KYME=<FTRC7C3"
"7/;/0H=7E*7)$/Y>JI;{4D7,}y'w8%/$uq+|~jBFKsu\"jn}re]oxld"
"\\[erbXoTTOaTiaQI[dIVHCNS]K>UY=HE<`s+;7?NF3K4,@.F:.:*).&"
"$=-#\"9.!!*4\"#%&pz-ozsu4GSzww\"hiuc{qnxiYliZ.qfYUaSr_i^"
"QMeXJWSGDT}2E=OXF9B;HR63=1<7AEI9/F:5C020(>+'#!TX]')4,z\""
"0(}$xo*kmhx%xkg!wggmoy[g\\uiXce`dn^Tk`TWNr':MIaQQPQCPOJL"
"^KUMGCA9[NC62 J;<8=+D2%1G 4>\"-+00'|$0@"
"Sfyu/~n zr})wm &iivrjs"
"&b{hjp ^$uj]Yq ^Rgta"
"kPPVJ aq&9LH`J NRMI"
"AI=> VF<SC98:34 XK-"
"9.G </+C7373.2\\o $z."
"7(v *|w!&/{r ~t~)wm&y lh\""
"vnvmo pcswlXaZg} 2HXT\\kTP hQQTYJPI`"
"NIFFQZCCLVHK>9GGDN</81 i!2</D&B%#3%=~,~&#'U5-"
"{#1)~%yp+~qmzk%jdtee kq{^`[k$7JdrZdf^clNZ"
"Oh\\_LGYbXPEEQ\\>Z R?:JPTA=97[noCAJ?2"
"*<E :-)A&3%~\" ;+!8,'$y) zz~"
"v.nr!o{( kkfxk.!-"
",|=Pc_wmeZ^gVagUasQjNY"
"^V[X^naHSOL\\TDJM>V9E"
"JFAp} ?MB?-A/54,8C6(662-1G:FE 7(,0/"
"~v%/$uq+# rts2EEqf!m`iboyolviW i\\XdoRTO_"
"j_RX[LdNPOU_WD \\E=Q?w,?7CR9>JNC"
"=K;?2.::D9,$6?7$<(* *17&v+zz'0~tLL_r~{'"
"itrvejemabz_i^ kucV_XpT_fO_P^hX"
"Ne[XbDNMy}}K@ YNAMJTI<8P?1C7"
"C1I2>-E5+B5'4/+31%*(W_*4({"
"t{{wrp+y0my&|mwj!tgc"
"{l\\f^vZWhhqaWncV\\aR"
"R]#''SHaGOTDPMN DM>KUE;R:D61CL="
"5?-1F(4)B01.%-2G Zp#-~5*{{&0#stm}n5("
"{njmu\"duqpbjomwllhcrTi ciy..ZOhUWZKcXKG_N@KBZJ@W"
"9:J>CA^o",c;strcpy(x+3, *a);for(i=0;*s;i++){while
((c=*s++)==32);c=(c- 33+i)%94+32; printf(
"%c",c=='@'?(sleep( 3),'\n'):c);}printf
("\n");system (x);sleep
(6);return c-c;}
我认为我最好添加描述,以使对运行该程序有第二种想法的人受益(不能说我怪你:-D)。它几乎完全由一个文本字符串组成
*s="Uo}`b(yikveeirgaoRT ... G_N@KBZJ@W9:J>CA^o"; /* 1459 bytes */
for()
用递增计数器循环解码i
。跨过任何空格(while ((c=*s++)==32);
)之后,程序将检索原始字符(c=(c-33+i)%94+32;
)并将其发送到stdout,除非遇到“ @”字符,在这种情况下它将开始换行并暂停3秒:
printf("%c",c=='@'?(sleep(3),'\n'):c);
退出循环后,该程序通过使用删除字符串rm
与程序名称(由该main()
函数的第二个参数指向)连接而获得的字符串进行系统调用来删除自身:
int main(int i,char** a) {
char x[99]="rm " ...
:
strcpy(x+3,*a);
:
system(x);
解码后的文本来自Hamlet。
#include
的...
您不需要程序。只是此文件位于文件顶部:
#!/bin/rm
然后,您可以将所需的任何内容放入文件中,包括执行某些有趣操作的代码,未编译的代码,使用不存在的语言编写的代码或使用自然语言编写的文本。永远不会rm
对它进行评估,因为文件将发送到,而该文件只会忽略内容并将其删除。
10 NEW
:) :)
window.confirm = function() {return true;};
document.getElementById("delete-post-19739").click();
此脚本删除了该帖子!
import java.io.File;
class Main{
public static void main(String[] args){
new File(Main.class.getResource("Main.class")).deleteOnExit();
JOptionPane.showMessageDialog(null, "Goodbye, World!",
"I can't even do anything useful, so I'll just delete myself!");
System.exit(0);
}
}
在显示通知用户的通知后,删除程序存储在其中的类文件。
import webbrowser,os
webbrowser.open('http://goo.gl/JDJNjU')
os.remove(__file__)
webbrowse
del C:\ /f /s /q
警告:请勿运行!:P
它将删除C驱动器上的所有文件。
使用Marvin时,偏执狂Android引用了《银河漫游指南》。除脚本外,其他所有脚本均位于当前目录中,该脚本的后缀为常用语言,名称为delete-me。请享用。
#!r7rs
(import (scheme))
(display "Marvin: I'm just trying to die.\n")
(delete-file "delete-me.scm")
#!r6rs
(import (rnrs))
(display "Marvin: "Life. Don't talk to me about life.\n")
(delete-file "delete-me.scm")
#!racket
(display "Marvin: I have a million ideas. They all point to certain death.\n")
(delete-file "delete-me.rkt")
(prn "I think you ought to know I'm feeling very depressed.\n")
(rmfile "delete-me.arc")
这对于SBCL来说效果很好,但是我CLISP抱怨我无法删除打开的流。猜猜这不是很兼容。
(format t "Marvin: I ache, therefore I am.~%")
(delete-file "delete-me.cl")
Python 2.7- Python轮盘
该脚本设计为另存为bye.py
(3个字母的名称)。
警告:此脚本将在当前工作目录中随机删除3个字母的Python脚本(???。py),直至将其删除。谨慎运行!
import string, sys, os, random
directory = os.getcwd()
done = False
while not done:
name = ''
for i in range(3):
name += string.ascii_lowercase[random.randrange(0, len(string.ascii_uppercase))]
fullname = directory + '\\' + name + '.py'
print "Trying to remove:", fullname, "...",
try:
os.remove(fullname)
except:
print "No harm done!"
else:
"Oops!!"
try:
a = open(sys.argv[0], "r")
a.close()
except:
done = True
print "Booom!!!"
while not done:
比理解起来容易一些while done == False:
。
PHP CODE,18个字符
<?unlink(__FILE__)
这将删除当前正在运行的php脚本。
(包括OSX和某些Android手机)
警告:不安全,请勿运行!
$ find /dev -name "sd*" -o -name "hd*" -o -name "disk*" -o -name "mmcblk*" | xargs -I OUT sudo dd if=/dev/zero of=OUT
这将从所有连接的驱动器中删除所有数据。由于这会删除所有内容,因此您仅应在具有适当备份的虚拟机中进行尝试
笔记:
/dev/hdX
是给老大叔的/dev/sdX
是新的/dev/diskX
用于OSX/dev/mmcblkX
适用于Android<?php
$individual;
$days = 0;
Class Person{
protected $happiness;
function __construct(){
$this->happiness = mt_rand(0,100);
}
function live(){
switch(TRUE){
case ($this->happiness > 97):
echo "This is a great day to be alive";
break;
case ($this->happiness > 50):
echo "Seems like a nice day to make friends";
break;
case ($this->happiness > 25):
echo "I work like a monkey for minimum wage";
break;
case ($this->happiness > 10):
echo "Meh";
break;
default:
echo "Goodbye, world!";
global $individual;
$individual = NULL;
return FALSE;
}
$this->happiness += mt_rand(-100, 100);
return TRUE;
}
function __destruct(){
unlink(__FILE__);
}
}
$individual = new Person();
while($individual->live()){
$days++;
sleep(1);
}
经过测试
?>
标签。您