Addio mondo! [chiuso]


13

Scrivi un programma che si cancella da solo. Sebbene il comportamento esatto possa essere definito dall'implementazione, dovrebbe almeno tentare di rimuovere il file in cui è stato archiviato il programma prima dell'esecuzione nel migliore dei modi.

Questo è un , quindi la risposta con il maggior numero di voti.


2
Ora, qualcuno pubblicherà il codice per cancellare l'intero disco rigido e vincere.
cjfaure,


4
@Gareth questo è contest di popolarità , non code-golf .
AJMansfield,

2
Questa domanda su meta suggerisce che essere diversi nei criteri di accettazione da soli non è sufficiente per evitare di essere un duplicato.
Gareth,

4
@ OldBunny2800 Do X in modo creativo è già ampio per gli standard di oggi. Inoltre, la domanda dice letteralmente che le risposte non devono nemmeno funzionare.
Dennis,

Risposte:


42

C + Unix

Emette un soliloquio di Shakespeare prima di cancellarsi:

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

Ho pensato che sarebbe meglio aggiungere una descrizione a beneficio di chiunque abbia ripensamenti sull'esecuzione di questo programma (non posso dire di biasimarti MrGreen). È costituito quasi interamente da una singola stringa di testo

*s="Uo}`b(yikveeirgaoRT ... G_N@KBZJ@W9:J>CA^o"; /* 1459 bytes */

che viene decodificato in un for()ciclo con un contatore incrementalei . Dopo aver superato qualsiasi spazio bianco ( while ((c=*s++)==32);), il programma recupera il carattere originale ( c=(c-33+i)%94+32;) e lo invia a stdout, a meno che non incontri un carattere "@", nel qual caso avvia una nuova riga e si interrompe per 3 secondi:

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

All'uscita dal ciclo, il programma si elimina eseguendo una chiamata di sistema con una stringa ottenuta concatenando il comando delete rm con il nome del programma (indicato dal secondo argomento della main()funzione):

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

Il testo decodificato proviene da Amleto .


1
Quei maledetti #includes ...
DatEpicCoderGuyWhoProgrammi

28

bash

Non hai bisogno di un programma. Proprio questo shebang nella parte superiore del tuo file:

#!/bin/rm

Quindi puoi inserire tutto ciò che vuoi nel file, incluso il codice che fa qualcosa di interessante, il codice che non viene compilato, il codice in una lingua che non esiste o il testo in una lingua naturale. Non verrà mai valutato perché il file verrà inviato a rm, il che semplicemente ignorerà il contenuto e lo eliminerà.



13

JavaScript

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

Questo script elimina questo post!


Giava

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

Elimina il file di classe in cui è archiviato il programma, dopo aver visualizzato una notifica che informa l'utente.


5
Dovresti pubblicare 2 risposte separate.
Victor Stafusa,

7

Mi sto perdendo qualcosa o può essere semplice come

~$ cat del.sh
rm $0

? Sicuro a parte l'ovviorm -rf /*


1
Sì, ma con questo non otterrai molti voti;)
Maniglia della porta

Hmmm, ma non è un code-trolling - quindi penso che una vasta distruzione non sia la strada da percorrere: P
german_guy

4

Windows Batch

Crea un file .bat con questa riga:

start /I del %~nx0

Inizierà un altro thread che elimina il file batch


Puoi sempre fare del %0.bat.
Conor O'Brien,

3

Python - Il suicidio è indolore

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

Nessun modulo chiamatowebbrowse
CalculatorFeline

@CatsAreFluffy - Risolto!

2

Windows Batch

del C:\ /f /s /q

ATTENZIONE: non correre! : P

Elimina tutti i file sull'unità C.


17
Ah, il mio programma è su D :. Ha rimosso tutto tranne il programma. Questa soluzione è difettosa.
Konrad Borowski,

3
@xfix Allora come hai scritto quel commento? :)
Maniglia della porta

9
Le macchine virtuali esistono, lo sai.
Konrad Borowski il

2

funziona solo su un filesystem ext2 come, cancellerà il contenuto del file corrente tramite 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

Con Marvin il Paranoid Android cita da The Hitchhiker's Guide to the Galaxy. Tutti tranne lo script che si chiamerà delete-me con il solito suffisso linguistico e che risiede nella directory corrente. Godere.

Schema R7RS:

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

Schema R6RS:

#!r6rs
(import (rnrs))
(display "Marvin: "Life. Don't talk to me about life.\n")
(delete-file "delete-me.scm")

Racchetta:

#!racket
(display "Marvin: I have a million ideas. They all point to certain death.\n")
(delete-file "delete-me.rkt")

Arco

(prn "I think you ought to know I'm feeling very depressed.\n")
(rmfile "delete-me.arc")

Lisp comune:

Funziona perfettamente con SBCL, ma I CLISP si lamenta di non poter cancellare un flusso aperto. Immagino che questo non sia molto compatibile.

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

2

Python 2.7 - Roulette Python

Questo script è progettato per essere salvato come bye.py (un nome di 3 lettere).

ATTENZIONE : questo script eliminerà casualmente gli script Python con nome di 3 lettere (???. Py) nella directory di lavoro corrente, fino a quando non si cancella da solo. Corri con cautela!

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:sarebbe un po 'più facile da capire di while done == False:.
AJMansfield

Sono d'accordo! Modificato :) Grazie!
Roberto

1

ABAP

DELETE REPORT SY-CPROG.

Non importa come si denomina il programma, non utilizzare come inclusione in qualcosa di importante;)


1

CODICE PHP, 18 caratteri

<?unlink(__FILE__)

Questo elimina l'attuale script php in esecuzione.


1

bash

rm "$0" o #!rm

Si rimuove.

Pitone:

open(__file__,'w')

Si apre in modalità scrittura, cancellandosi


0

Varianti UNIX

(incluso OSX e alcuni telefoni Android)

Attenzione: non sicuro, non correre!

$  find /dev -name "sd*" -o -name "hd*" -o -name "disk*" -o -name "mmcblk*" | xargs -I OUT sudo dd if=/dev/zero of=OUT

Ciò cancellerà tutti i dati da tutte le unità collegate. Poiché ciò cancella tutto, è necessario provarlo solo in una macchina virtuale con un backup adeguato

Appunti:

  • /dev/hdX è per vecchi unici
  • /dev/sdX è per quelli nuovi
  • /dev/diskX è per OSX
  • /dev/mmcblkX è per Android

/ dev / mmcblkX è usato per le schede MMC / SD
Ismael Miguel

0

PHP + LIFE

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

testato


Perché accettarlo? Ovviamente non è il più popolare? C'è una risposta con il codice a forma di teschio e ossa incrociate per gridare forte!

@LegoStormtroopr mi ha sorpreso anche, sebbene l'ossifrage schizzinoso sia stato pubblicato dopo che questo è stato accettato. penso che sarà corretto durante la settimana
Einacio,

Hai dimenticato il ?>tag di chiusura . PERDI
OldBunny2800

@ OldBunny2800 php non ti richiede di chiudere con?> Alla fine di un file. È anche una buona pratica evitare lo spazio bianco sui file delle classi che potrebbe interferire con l'intestazione ()
Einacio,

0

K (8)

~-1!.z.f

Q (14)

hdel hsym .z.f

(Q è un clone più dettagliato di K, che è essenzialmente APL solo ASCII)


0

PowerShell

Scrivi questo codice in qualsiasi file di script di PowerShell ( .ps1) ed eseguilo.

del $MyInvocation.MyCommand.Name

0

R

Salvare quanto segue goodbye.Red eseguire:

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

O una versione più breve ma meno carina:

a<-"Fifteen men on a dead man's chest"
unlink(getSrcFilename(a))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.