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


2
Agora, alguém publicará um código para limpar todo o disco rígido e vencer.
cjfaure



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 .


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



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.


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


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


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

Nenhum módulo chamadowebbrowse
CalculatorFeline

@CatsAreFluffy - Fixed!


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

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

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

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


1

CÓDIGO PHP, 18 caracteres

<?unlink(__FILE__)

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


1

Bater

rm "$0" ou #!rm

Se remove.

Pitão:

open(__file__,'w')

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


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

/ 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


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)


0

PowerShell

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

del $MyInvocation.MyCommand.Name

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))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.