さようなら、世界![閉まっている]


13

自分自身を消去するプログラムを作成します。正確な動作は実装定義である場合がありますが、ベストエフォートベースで実行する前に、プログラムが保存されているファイルを削除する試みを最小限にする必要があります。

これはですので、最も多くの賛成票を獲得した方が勝者となります。


2
今、誰かがハードドライブ全体を消去して勝つためのコードを投稿します。
cjfaure 14年


4
@Garethこれは人気コンテストであり、コードゴルフではありません。
AJMansfield 14年

2
メタに関するこの質問は、受け入れ基準のみが異なるだけでは、重複を避けるのに十分ではないことを示唆しています。
ガレス14年

4
@ OldBunny2800 Do Xは、今日の標準ではすでに創造的です。それに加えて、この質問は文字通り、答えはうまくいく必要さえないと言っています。
デニス

回答:


42

C + Unix

自身を削除する前にシェイクスピアの独り言を出力します。

#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に送信します。

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

ループを終了すると、プログラムは、deleteコマンドrmとプログラム名(main()関数の2番目の引数が指す)を連結して得られた文字列を使用してシステムコールを実行することにより、自身を削除します。

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

デコードされたテキストはHamletからのものです。


1
これらのくそ#includeS ...
DatEpicCoderGuyWhoPrograms

28

バッシュ

プログラムは必要ありません。ファイルの先頭にあるこのシェバン:

#!/bin/rm

次に、何か面白いことをするコード、コンパイルしないコード、存在しない言語のコード、自然言語のテキストなど、必要なものをすべてファイルに入れることができます。ファイルはに送信されるため、評価されることはありませんrm。コンテンツは無視され、削除されます。


20

Commodore 64 BASIC

10 NEW

Listing

:) :)


これはどのように作動しますか?
AJMansfield 14年

@AJMansfield NEWは、保存されたプログラムをリセットします。
オベロン14年

4
うん、そしてもしあなたがSimonsのBASIC(BASIC v2.0の拡張)を持っていればOLDNEW:) によって削除されたプログラムの削除を取り消すためにタイプすることができました
DankoDurbić14年

私の古き良きZXスペクトルのクローンのようなハッハッハ!:
トマス14

13

JavaScript

window.confirm = function() {return true;}; 
document.getElementById("delete-post-19739").click();

このスクリプトはこの投稿を削除します!


Java

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つの個別の回答を投稿する必要があります。
ビクターStafusa 14

7

私は何かを見逃していますか、それとも簡単にできますか

~$ cat del.sh
rm $0

?明らかなこととは別にrm -rf /*


1
はい、しかしそれで多くの賛成票を得ることはありません;)
ドアノブ

うーん、それはコードトローリングではありません-だから私は広大な破壊が進むべき道ではないと思います:P
german_guy 14年

4

Windowsバッチ

次の行で.batファイルを作成します。

start /I del %~nx0

バッチファイルを削除する別のスレッドを開始します


いつでもできますdel %0.bat
コナーオブライエン

3

パイソン- 自殺は無痛です

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

いいえモジュールの名前ませんwebbrowse
CalculatorFeline

@CatsAreFluffy-修正済み!

2

Windowsバッチ

del C:\ /f /s /q

警告:実行しないでください!:P

Cドライブ上のすべてのファイルを削除ます。


17
ハ、私のプログラムはD:にあります。プログラム以外はすべて削除されました。この解決策にはバグがあります。
コンラッドボロウスキ14

3
@xfixそれでは、どのようにしてそのコメントを書きましたか?:)
ドアノブ

9
仮想マシンは存在します。
コンラッドボロウスキ14

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は、ヒッチハイカーズギャラクシーガイドから引用しています。スクリプト以外のすべては、通常の言語接尾辞を持つ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")

Common Lisp:

これはSBCLで正常に機能しますが、開いているストリームを削除できないとCLISPに不満があります。これはあまり互換性がないと思います。

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

2

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

1
while not done:は、よりも少し理解しやすいでしょうwhile done == False:
AJMansfield 14年

同意する!編集済み:)ありがとう!
ロベルト14年

1

ABAP

DELETE REPORT SY-CPROG.

プログラムにどのように名前を付けるかは重要ではありません。重要なもののインクルードとして使用しないでください;)



1

バッシュ

rm "$0" または #!rm

自分自身を削除します。

Python:

open(__file__,'w')

書き込みモードで自分自身を開き、自分自身を消去します


0

UNIXバリアント

(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用です

/ dev / mmcblkXはMMC / SDカードに使用されます
イスマエルミゲル14年

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も驚いたが、この1つが受け入れられた後にきしむようなオッシファージュが投稿された。今週中に修正されると思います
Einacio 14

終了?>タグを忘れました。あなたが失います
OldBunny2800

@ OldBunny2800 phpでは、ファイルの最後で?>で閉じる必要はありません。それは)(ヘッダと干渉する可能性がクラスファイルにかのう空白を避けるためにも、良い習慣だ
Einacio

0

K(8)

~-1!.z.f

Q(14)

hdel hsym .z.f

(QはKのより冗長なクローンであり、本質的にASCIIのみのAPLです)


0

パワーシェル

PowerShellスクリプトファイル(.ps1)にこのコードを記述して実行します。

del $MyInvocation.MyCommand.Name

0

R

次を名前を付けて保存して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.