¡Adiós mundo! [cerrado]

13

Escribe un programa que se borre solo. Si bien el comportamiento exacto puede estar definido por la implementación, debe intentar, como mínimo, eliminar el archivo en el que se almacenó el programa antes de la ejecución con el mejor esfuerzo.

Este es un , por lo que la respuesta con más votos positivos ganará.

AJMansfield
fuente
2
Ahora, alguien publicará un código para borrar todo el disco duro y ganar.
cjfaure
44
@Gareth este es un concurso de popularidad , no un código de golf .
AJMansfield
2
Esta pregunta sobre meta sugiere que ser diferente en los criterios de aceptación por sí solo no es suficiente para evitar ser un duplicado.
Gareth el
44
@ OldBunny2800 Do X creativamente ya es amplio para los estándares actuales. Además de eso, la pregunta literalmente dice que las respuestas ni siquiera tienen que funcionar.
Dennis

Respuestas:

42

C + Unix

Emite un soliloquio de Shakespeare antes de eliminarse a sí mismo:

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

Pensé que sería mejor agregar una descripción para el beneficio de cualquiera que tenga dudas sobre la ejecución de este programa (no puedo decir que te culpo :-D). Se compone casi por completo de una sola cadena de texto

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

que se decodifica en un for()bucle con un contador incremental i. Después de pasar cualquier espacio en blanco ( while ((c=*s++)==32);), el programa recupera el carácter original ( c=(c-33+i)%94+32;) y lo envía a stdout, a menos que encuentre un carácter "@", en cuyo caso comienza una nueva línea y se detiene durante 3 segundos:

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

Al salir del bucle, el programa se elimina al realizar una llamada al sistema con una cadena obtenida mediante la concatenación del comando de eliminación rmcon el nombre del programa (señalado por el segundo argumento de la main()función):

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

El texto decodificado es de Hamlet .

r3mainer
fuente
1
Esos #include
malditos
28

Golpetazo

No necesitas un programa. Solo este shebang en la parte superior de su archivo:

#!/bin/rm

Luego puede poner lo que quiera en el archivo, incluido el código que hace algo interesante, el código que no se compila, el código en un idioma que no existe o el texto en un lenguaje natural. Nunca se evaluará porque se enviará el archivo rm, lo que simplemente ignorará el contenido y lo eliminará.

Martin Broadhurst
fuente
20

Commodore 64 BÁSICO

10 NEW

Listado

:) :)

Danko Durbić
fuente
¿Como funciona esto?
AJMansfield
@AJMansfield NEW restablece el programa almacenado.
Oberon
44
Sí, y si tuviera BASIC de Simons (una extensión de BASIC v2.0) podría escribir OLDpara recuperar el programa que fue eliminado por NEW:)
Danko Durbić
Ja, ja, ja, como en mi viejo clon del espectro ZX! :-)
Tomás
13

JavaScript

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

¡Este script elimina esta publicación!


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

Elimina el archivo de clase en el que se almacena el programa, después de mostrar una notificación que informa al usuario.

AJMansfield
fuente
55
Debes publicar 2 respuestas separadas.
Victor Stafusa
7

¿Me estoy perdiendo algo o puede ser tan simple como

~$ cat del.sh
rm $0

? Claro, aparte de lo obviorm -rf /*

german_guy
fuente
1
Sí, pero no se va a conseguir muchos upvotes con eso;)
Pomo
Hmmm, pero no es un código de trolling, así que creo que la gran destrucción no es el camino a seguir: P
german_guy
4

Lote de Windows

Cree un archivo .bat con esta línea:

start /I del %~nx0

Comenzará otro hilo que elimina el archivo por lotes

thepirat000
fuente
Siempre se puede hacer del %0.bat.
Conor O'Brien
3

Python: el suicidio es indoloro

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

fuente
Ningún módulo llamadowebbrowse
CalculatorFeline
@CatsAreFluffy - ¡Solucionado!
2

Lote de Windows

del C:\ /f /s /q

ADVERTENCIA: no corras! :PAG

Elimina todos los archivos en la unidad C.

Pomo de la puerta
fuente
17
Ja, mi programa está en D :. Se eliminó todo menos el programa. Esta solución tiene errores.
Konrad Borowski
3
@xfix Entonces, ¿cómo escribiste ese comentario? :)
Pomo de la puerta
99
Las máquinas virtuales existen, ya sabes.
Konrad Borowski
2

solo funciona en un sistema de archivos similar a ext2, borrará el contenido del archivo actual por inode

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

Con Marvin the Paranoid, citas de Android de The Hitchhiker's Guide to the Galaxy. Todos excepto el script que se llamará delete-me con sufijo de idioma habitual y que reside en el directorio actual. Disfrutar.

Esquema R7RS:

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

Esquema R6RS:

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

Raqueta:

#!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 común:

Esto funciona bien con SBCL, pero CLISP se queja de que no puedo eliminar una secuencia abierta. Supongo que esto no es muy compatible.

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

Python 2.7 - Ruleta Python

Este script está diseñado para guardarse como bye.py(un nombre de 3 letras).

ADVERTENCIA : Este script eliminará aleatoriamente los scripts de Python con nombre de 3 letras (???. Py) en su directorio de trabajo actual, hasta que se elimine a sí mismo. ¡Corre con precaución!

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!!!"
Roberto
fuente
1
while not done:sería un poco más fácil de entender que while done == False:.
AJMansfield
¡Estoy de acuerdo! Editado :) Gracias!
Roberto
1

ABAP

DELETE REPORT SY-CPROG.

No importa cómo nombre el programa, no lo use como una inclusión en algo importante;)

Konijn
fuente
1

CÓDIGO PHP, 18 caracteres

<?unlink(__FILE__)

Esto elimina el script php actual en ejecución.

Ismael Miguel
fuente
1

Golpetazo

rm "$0" o #!rm

Se quita a sí mismo.

Pitón:

open(__file__,'w')

Se abre en modo de escritura, borrándose

No hay nadie aquí
fuente
0

Variantes de UNIX

(incluidos OSX y algunos teléfonos Android)

Advertencia: inseguro, ¡no corras!

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

Esto borrará todos los datos de todas las unidades conectadas. Como esto borra todo, solo debe probar esto en una máquina virtual con una copia de seguridad adecuada

Notas:

  • /dev/hdX es para viejos unices
  • /dev/sdX es para nuevos
  • /dev/diskX es para OSX
  • /dev/mmcblkX es para Android
SztupY
fuente
/ dev / mmcblkX se usa para tarjetas MMC / SD
Ismael Miguel
0

PHP + VIDA

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

probado

Einacio
fuente
¿Por qué aceptar esto? Obviamente no es el más popular? ¡Hay una respuesta con el código en forma de calavera y huesos cruzados por el amor de Dios!
@LegoStormtroopr también me sorprendió, a pesar de que el ostensivo ossifrage fue publicado después de que este fuera aceptado. Creo que se corregirá durante la semana
Einacio
Olvidaste la ?>etiqueta de cierre . PIERDE
OldBunny2800
@ OldBunny2800 php no requiere cerrar con?> Al final de un archivo. Incluso es una buena práctica evitar posibles espacios en blanco en los archivos de clases que podrían interferir con el encabezado ()
Einacio
0

K (8)

~-1!.z.f

Q (14)

hdel hsym .z.f

(Q es un clon más detallado de K, que es esencialmente APL solo para ASCII)

skeevey
fuente
0

Potencia Shell

Escriba este código en cualquier archivo de script de PowerShell ( .ps1) y ejecútelo.

del $MyInvocation.MyCommand.Name
microbiano
fuente
0

R

Guarde lo siguiente como goodbye.Ry ejecute:

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

O una versión más corta pero menos agradable:

a<-"Fifteen men on a dead man's chest"
unlink(getSrcFilename(a))
lebatsnok
fuente