¡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á.


2
Ahora, alguien publicará un código para borrar todo el disco duro y ganar.
cjfaure



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 .


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á.



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.


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 /*


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


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__)

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.


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

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

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

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


1

CÓDIGO PHP, 18 caracteres

<?unlink(__FILE__)

Esto elimina el script php actual en ejecución.


1

Golpetazo

rm "$0" o #!rm

Se quita a sí mismo.

Pitón:

open(__file__,'w')

Se abre en modo de escritura, borrándose


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

/ 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


¿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)


0

Potencia Shell

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

del $MyInvocation.MyCommand.Name

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))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.