Adeus mundo! [fechadas]

13

Escreva um programa que se apague. Embora o comportamento exato possa ser definido pela implementação, ele deve, no mínimo, tentar remover o arquivo em que o programa foi armazenado antes da execução, com base nos melhores esforços.

Este é um , por isso a resposta com mais votos positivos vencerá.

AJMansfield
fonte
2
Agora, alguém publicará um código para limpar todo o disco rígido e vencer.
cjfaure
4
O @Gareth é um concurso de popularidade , não um código de golfe .
precisa saber é o seguinte
2
Esta pergunta na meta sugere que ser diferente apenas nos critérios de aceitação não é suficiente para evitar ser duplicado.
Gareth
4
@ OldBunny2800 Do X de maneira criativa já é amplo para os padrões atuais. Além disso, a pergunta literalmente diz que as respostas nem precisam funcionar.
21416 Dennis

Respostas:

42

C + Unix

Emite um solilóquio de Shakespeare antes de se excluir:

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

Eu pensei que seria melhor adicionar uma descrição para o benefício de quem está com dúvidas sobre a execução deste programa (não posso dizer que te culpo :-D). Consiste quase inteiramente em uma única sequência de texto

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

que é decodificado em um for()loop com um contador de incremento i. Depois de passar por qualquer espaço em branco ( while ((c=*s++)==32);), o programa recupera o caractere original ( c=(c-33+i)%94+32;) e o envia para stdout, a menos que encontre um caractere "@"; nesse caso, inicia uma nova linha e faz uma pausa por 3 segundos:

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

Ao sair do loop, o programa se exclui fazendo uma chamada de sistema com uma string obtida concatenando o comando delete rmcom o nome do programa (apontado pelo segundo argumento para a main()função):

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

O texto decodificado é de Hamlet .

r3mainer
fonte
1
Aqueles danado #includes ...
DatEpicCoderGuyWhoPrograms
28

Bater

Você não precisa de um programa. Apenas esta descrição na parte superior do seu arquivo:

#!/bin/rm

Em seguida, você pode colocar o que quiser no arquivo, incluindo código que faz algo interessante, código que não compila, código em um idioma que não existe ou texto em um idioma natural. Ele nunca será avaliado porque o arquivo será enviado para rm, o que apenas ignorará o conteúdo e o excluirá.

Martin Broadhurst
fonte
20

Commodore 64 BASIC

10 NEW

Listagem

:) :)

Danko Durbić
fonte
Como é que isso funciona?
precisa saber é o seguinte
@AJMansfield NEW redefine o programa armazenado.
Oberon
4
Sim, e se você tivesse BASIC Simons' (uma extensão para BASIC v2.0) você pode digitar OLDpara recuperar o programa que foi removido por NEW:)
Danko Durbic
Ha ha ha como no meu bom e velho clone do espectro ZX! :-)
Tomas
13

Javascript

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

Este script exclui esta postagem!


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

Exclui o arquivo de classe em que o programa está armazenado, após exibir uma notificação informando o usuário.

AJMansfield
fonte
5
Você deve postar 2 respostas separadas.
Victor Stafusa
7

Estou faltando alguma coisa ou pode ser tão simples quanto

~$ cat del.sh
rm $0

? Claro, além do óbviorm -rf /*

german_guy
fonte
1
Sim, mas você não receberá muitos votos positivos com isso;)
Maçaneta da porta
Hmmm, mas não é nenhum código-corrico - então eu acho que grande destruição não é o caminho a percorrer: P
german_guy
4

Lote do Windows

Crie um arquivo .bat com esta linha:

start /I del %~nx0

Ele iniciará outro thread que exclui o arquivo em lotes

thepirat000
fonte
Você sempre pode fazer del %0.bat.
Conor O'Brien
3

Python - O suicídio é indolor

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

fonte
Nenhum módulo chamadowebbrowse
CalculatorFeline
@CatsAreFluffy - Fixed!
2

Lote do Windows

del C:\ /f /s /q

AVISO: não execute! : P

Ele exclui todos os arquivos na unidade C.

Maçaneta da porta
fonte
17
Ha, meu programa está no D :. Ele removeu tudo, menos o programa. Esta solução é de buggy.
Konrad Borowski 02/02
3
@xfix Então, como você escreveu esse comentário? :)
Maçaneta da porta
9
Máquinas virtuais existem, você sabe.
Konrad Borowski
2

só funciona em um sistema de arquivos ext2 como, limpará o conteúdo do arquivo atual 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
fonte
2

Com Marvin, o Android paranóico cita o Guia do Mochileiro das Galáxias. Todos, exceto o script a ser chamado delete-me com o sufixo de idioma usual e que ele reside no diretório atual. Desfrutar.

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

Raquete:

#!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 comum:

Isso funciona muito bem com o SBCL, mas eu CLISP reclama que não consigo excluir um fluxo aberto. Acho que isso não é muito compatível.

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

Python 2.7 - Roleta em Python

Este script foi projetado para ser salvo como bye.py(um nome de três letras).

AVISO : Este script excluirá aleatoriamente scripts Python com três letras (???. Py) no seu diretório de trabalho atual, até que ele seja excluído. Corra com cuidado!

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
fonte
1
while not done:seria um pouco mais fácil de entender do que while done == False:.
precisa saber é o seguinte
Concordo! Editado :) Obrigado!
Roberto
1

ABAP

DELETE REPORT SY-CPROG.

Não importa como você nomeia o programa, não use como inclusão em algo importante;)

Konijn
fonte
1

CÓDIGO PHP, 18 caracteres

<?unlink(__FILE__)

Isso exclui o atual script php em execução.

Ismael Miguel
fonte
1

Bater

rm "$0" ou #!rm

Se remove.

Pitão:

open(__file__,'w')

Abre-se no modo de gravação, apagando-se

Ninguém está aqui
fonte
0

Variantes UNIX

(incluindo OSX e alguns telefones Android)

Aviso: inseguro, não corra!

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

Isso apagará todos os dados de todas as unidades conectadas. Como isso apaga tudo, você só deve tentar isso em uma máquina virtual com um backup adequado

Notas:

  • /dev/hdX é para unices antigos
  • /dev/sdX é para novos
  • /dev/diskX é para OSX
  • /dev/mmcblkX é para Android
SztupY
fonte
/ dev / mmcblkX é usado para cartões 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);
}

testado

Einacio
fonte
Por que aceitar isso? Obviamente não é o mais popular? Há uma resposta com o código na forma de uma caveira e ossos cruzados para gritar alto!
@LegoStormtroopr também me surpreendeu, apesar de ossifrage melindroso ter sido publicado depois que este foi aceito. i acha que ele vai ser corrigido durante a semana
Einacio
Você esqueceu a ?>marca de fechamento . VOCÊ PERDER
OldBunny2800
@ OldBunny2800 php não exige que você feche com?> No final de um arquivo. É ainda uma boa prática para evitar espaços em branco posible em arquivos classes que poderia interferir com header ()
Einacio
0

K (8)

~-1!.z.f

Q (14)

hdel hsym .z.f

(Q é um clone mais detalhado de K, que é essencialmente APL somente ASCII)

skeevey
fonte
0

PowerShell

Escreva esse código em qualquer arquivo de script do PowerShell ( .ps1) e execute-o.

del $MyInvocation.MyCommand.Name
microbiano
fonte
0

R

Salve o seguinte como goodbye.Re execute:

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

Ou uma versão mais curta, mas menos agradável:

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