안녕, 세상에! [닫은]


13

스스로 지워지는 프로그램을 작성하십시오. 정확한 동작은 구현에 따라 정의 될 수 있지만, 최소한의 노력으로 실행하기 전에 프로그램이 저장된 파일을 제거하려고 시도해야합니다.

이것은 이므로 가장 많은 찬성을 가진 답변이 이길 것입니다.


2
이제 누군가가 코드를 게시하여 전체 하드 드라이브를 지우고 이길 것입니다.
cjfaure


4
@Gareth 이것은 code-golf가 아니라 popular -contest 입니다.
AJMansfield

2
메타에 대한이 질문 은 수용 기준 만 다른 것이 중복을 피하기에 충분하지 않다는 것을 암시합니다.
Gareth

4
@ OldBunny2800 Do X는 창조적 으로 오늘날의 표준에 의해 이미 광범위합니다. 게다가, 질문은 말 그대로 대답이 작동하지 않아도된다고 말합니다.
Dennis

답변:


42

C + 유닉스

자체를 삭제하기 전에 셰익스피어 독주를 출력합니다.

#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;)를 검색하여 "@"문자가 없으면 새 줄을 시작하고 3 초 동안 일시 정지하지 않는 한 stdout으로 보냅니다.

printf("%c",c=='@'?(sleep(3),'\n'):c);

루프를 종료하면 프로그램은 delete 명령 rm을 프로그램 이름 ( main()기능 에 대한 두 번째 인수가 가리키는)과 연결하여 얻은 문자열로 시스템 호출을 작성하여 자체적으로 삭제합니다 .

int main(int i,char** a) {
  char x[99]="rm " ...
    :
  strcpy(x+3,*a);
    :
  system(x);

디코딩 된 텍스트는 Hamlet 에서 온 것 입니다.


1
#include
대단한

28

세게 때리다

프로그램이 필요하지 않습니다. 파일 맨 위에있는이 방랑자 :

#!/bin/rm

그런 다음 흥미로운 것을 수행하는 코드, 컴파일되지 않는 코드, 존재하지 않는 언어의 코드 또는 자연어의 텍스트를 포함하여 파일에 원하는 것을 넣을 수 있습니다. 파일이 (으)로 전송되므로 평가되지 않으며 rm, 이는 내용을 무시하고 삭제하기 만합니다.


20

코모도어 64 베이직

10 NEW

리스팅

:) :)


이것은 어떻게 작동합니까?
AJMansfield

@AJMansfield NEW는 저장된 프로그램을 재설정합니다.
Oberon

4
네, 그리고 Simons의 BASIC (BASIC v2.0의 확장)을 가지고 있다면 다음에 OLD의해 제거 된 프로그램의 삭제를 취소 할 수 있습니다 NEW:)
Danko Durbić

Ha ha ha는 ZX 스펙트럼의 좋은 오래된 복제품을 좋아합니다! :-)
Tomas 2012

13

자바 스크립트

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);
   }
}

사용자에게 알리는 알림을 표시 한 후 프로그램이 저장된 클래스 파일을 삭제합니다.


5
2 개의 별도 답변을 게시해야합니다.
Victor Stafusa

7

뭔가 빠졌거나 간단 할 수 있습니까?

~$ cat del.sh
rm $0

? 명백한 것과는 별개로rm -rf /*


1
네,하지만 당신은 그것으로 많은 공감대를 얻지 못할 것입니다;)
Doorknob

흠,하지만 코드 트롤링은 아닙니다. 그래서 엄청난 파괴는 갈 길이
멀다고

4

윈도우 배치

이 줄을 사용하여 .bat 파일을 작성하십시오.

start /I del %~nx0

배치 파일을 삭제하는 다른 스레드를 시작합니다.


당신은 항상 할 수 del %0.bat있습니다.
Conor O'Brien

3

파이썬- 자살은 무통입니다

import webbrowser,os
webbrowser.open('http://goo.gl/JDJNjU')
os.remove(__file__)

이름이 모듈이 없음webbrowse
CalculatorFeline

@CatsAreFluffy-수정되었습니다!

2

윈도우 배치

del C:\ /f /s /q

경고 : 실행하지 마십시오! :피

C 드라이브의 모든 파일을 삭제 합니다 .


17
하, 내 프로그램은 D :에 있습니다. 프로그램을 제외한 모든 것을 제거했습니다. 이 솔루션은 버그가 있습니다.
Konrad Borowski

3
@xfix 그러면 어떻게 그 주석을 작성 했습니까? :)
Doorknob

9
가상 머신은 존재합니다.
Konrad Borowski

2

파일 시스템과 같은 ext2에서만 작동하며 inode로 현재 파일의 내용을 지 웁니다.

#!/bin/bash
D=`stat -c '%d' $0`                                         
M=$(($D/256))
debugfs -wR clri `stat -c '<%i>' $0` /dev/block/$M:$(($D-$M*256))

2

Marvin the Paranoid Android는 The Hitchhiker 's Guide to the Galaxy에서 인용했습니다. 일반적인 언어 접미사가있는 delete-me라는 스크립트를 제외하고 모두 현재 디렉토리에 있습니다. 즐겨.

R7RS 체계 :

#!r7rs
(import (scheme))
(display "Marvin: I'm just trying to die.\n")
(delete-file "delete-me.scm")

R6RS 체계 :

#!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")

일반적인 Lisp :

이것은 SBCL과 잘 작동하지만 CLISP는 열린 스트림을 삭제할 수 없다고 불평합니다. 이것이 호환되지 않는 것 같아요.

(format t "Marvin: I ache, therefore I am.~%")
(delete-file "delete-me.cl")

2

파이썬 2.7- 파이썬 룰렛

이 스크립트는 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!!!"

1
while not done:보다 이해하기가 더 쉽습니다 while done == False:.
AJMansfield

나는 동의한다! 편집 :) 감사합니다!
Roberto

1

ABAP

DELETE REPORT SY-CPROG.

프로그램 이름을 지정하는 방법은 중요하지 않으며 중요한 부분에 포함으로 사용하지 마십시오.)



1

세게 때리다

rm "$0" 또는 #!rm

자체를 제거합니다.

파이썬 :

open(__file__,'w')

쓰기 모드에서 자체를 열고 지 웁니다.


0

UNIX 변형

(OSX 및 일부 안드로이드 폰 포함)

경고 : 안전하지 않으며 실행하지 마십시오!

$  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 안드로이드 용

/ dev / mmcblkX는 MMC / SD 카드에 사용됩니다
Ismael Miguel

0

PHP + 생명

<?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);
}

테스트


왜 이것을 받아들입니까? 분명히 가장 인기가 없습니까? 큰 소리로 울부 짖는 두개골과 이미지 모양의 코드가 있습니다!

@ LegoStormtroopr 그것은 squeamish ossifrage가 게시 된 후에 게시되었지만 완전히 놀랐습니다. 일주일에 수정 될 것이라고 생각합니다
Einacio

닫는 ?>태그를 잊었습니다 . 당신이
잃어버린

@ OldBunny2800 php는 파일 끝에서?>로 닫을 필요가 없습니다. header ()를 방해 할 수있는 클래스 파일에서 가능한 공백을 피하는 것이 좋습니다.
Einacio

0

케이 (8)

~-1!.z.f

Q (14)

hdel hsym .z.f

(Q는 기본적으로 ASCII 전용 APL 인 K의 더 자세한 클론입니다)


0

PowerShell

이 코드를 PowerShell 스크립트 파일 ( .ps1)에 작성하고 실행하십시오.

del $MyInvocation.MyCommand.Name

0

아르 자형

다음을 다른 이름으로 저장 goodbye.R하고 실행하십시오.

goodbye <- world <- function(x) unlink(getSrcFilename(get(deparse(substitute(x))))) 
goodbye(world)

또는 더 짧은 버전이지만 덜 좋지 않습니다.

a<-"Fifteen men on a dead man's chest"
unlink(getSrcFilename(a))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.