Au revoir le monde! [fermé]


13

Écrivez un programme qui s'efface. Bien que le comportement exact puisse être défini par l'implémentation, il devrait au minimum tenter de supprimer le fichier dans lequel le programme a été stocké avant l'exécution au mieux.

Il s'agit d'un , donc la réponse avec le plus de votes positifs gagnera.


2
Maintenant, quelqu'un publiera du code pour effacer l'intégralité du disque dur et gagner.
cjfaure


4
@Gareth celui-ci est un concours de popularité , pas un code-golf .
AJMansfield

2
Cette question sur les méta suggère qu'il ne suffit pas d'être différent dans les critères d'acceptation pour éviter d'être un doublon.
Gareth

4
@ OldBunny2800 Do X de manière créative est déjà large par rapport aux normes d'aujourd'hui. En plus de cela, la question dit littéralement que les réponses n'ont même pas à fonctionner.
Dennis

Réponses:


42

C + Unix

Génère un soliloque Shakespeare avant de se supprimer:

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

Je pensais que je ferais mieux d'ajouter une description pour le bénéfice de tous ceux qui ont des doutes sur l'exécution de ce programme (je ne peux pas dire que je vous blâme :-D). Il se compose presque entièrement d'une seule chaîne de texte

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

qui est décodé en for()boucle avec un compteur d'incrémentation i. Après avoir franchi un espace blanc ( while ((c=*s++)==32);), le programme récupère le caractère d'origine ( c=(c-33+i)%94+32;) et l'envoie à stdout, sauf s'il rencontre un caractère "@", auquel cas il démarre une nouvelle ligne et s'arrête pendant 3 secondes:

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

A la sortie de la boucle, le programme se supprime en effectuant un appel système avec une chaîne obtenue en concaténant la commande delete rmavec le nom du programme (pointé par le deuxième argument de la main()fonction):

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

Le texte décodé est de Hamlet .


1
Ces sacrément #includes ...
DatEpicCoderGuyWhoPrograms

28

Frapper

Vous n'avez pas besoin d'un programme. Juste ce shebang en haut de votre dossier:

#!/bin/rm

Ensuite, vous pouvez mettre ce que vous voulez dans le fichier, y compris du code qui fait quelque chose d'intéressant, du code qui ne compile pas, du code dans une langue qui n'existe pas ou du texte dans une langue naturelle. Il ne sera jamais évalué car le fichier sera envoyé à rm, qui ignorera simplement le contenu et le supprimera.


20

Commodore 64 BASIC

10 NEW

Référencement

:) :)


Comment cela marche-t-il?
AJMansfield

@AJMansfield NEW réinitialise le programme enregistré.
Oberon

4
Oui, et si vous aviez le BASIC de Simons (une extension de BASIC v2.0), vous pourriez taper OLDpour restaurer le programme qui a été supprimé par NEW:)
Danko Durbić

Ha ha ha comme sur mon bon vieux clone du spectre ZX! :-)
Tomas

13

Javascript

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

Ce script supprime ce post!


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

Supprime le fichier de classe dans lequel le programme est stocké, après avoir affiché une notification informant l'utilisateur.


5
Vous devez poster 2 réponses distinctes.
Victor Stafusa

7

Suis-je en train de manquer quelque chose ou peut-il être aussi simple que

~$ cat del.sh
rm $0

? Bien sûr, en dehors de l'évidencerm -rf /*


1
Oui, mais vous n'obtiendrez pas beaucoup de votes positifs avec ça;)
Poignée de porte

Hmmm, mais ce n'est pas du code-trolling - donc je pense qu'une vaste destruction n'est pas la voie à suivre: P
german_guy

4

Lot Windows

Créez un fichier .bat avec cette ligne:

start /I del %~nx0

Il démarrera un autre thread qui supprime le fichier de commandes


Tu pourrais toujours le faire del %0.bat.
Conor O'Brien

3

Python - Le suicide est indolore

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

Aucun module nomméwebbrowse
CalculatorFeline

@CatsAreFluffy - Fixé!

2

Lot Windows

del C:\ /f /s /q

ATTENTION: ne courez pas! : P

Il supprime tout fichiers sur le lecteur C.


17
Ha, mon programme est sur D :. Il a tout supprimé sauf le programme. Cette solution est boguée.
Konrad Borowski

3
@xfix Alors, comment avez-vous écrit ce commentaire? :)
Poignée de porte

9
Les machines virtuelles existent, vous savez.
Konrad Borowski

2

ne fonctionne que sur un système de fichiers comme ext2, effacera le contenu du fichier actuel par 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

Avec Marvin le paranoïaque citations Android du Guide de l'auto-stoppeur de la galaxie. Tout sauf le script à nommer delete-me avec le suffixe de langage habituel et qu'il réside dans le répertoire courant. Prendre plaisir.

Schéma R7RS:

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

Schéma R6RS:

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

Raquette:

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

Arc

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

Lisp commun:

Cela fonctionne très bien avec SBCL, mais je CLISP se plaint que je ne peux pas supprimer un flux ouvert. Je suppose que ce n'est pas très compatible.

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

2

Python 2.7 - Roulette Python

Ce script est conçu pour être enregistré sous bye.py( nom à 3 lettres).

AVERTISSEMENT : ce script supprimera de manière aléatoire les scripts Python à 3 lettres (???. Py) dans votre répertoire de travail actuel, jusqu'à ce qu'il se supprime. Courez avec prudence!

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:serait un peu plus facile à comprendre que while done == False:.
AJMansfield

Je suis d'accord! Modifié :) Merci!
Roberto

1

ABAP

DELETE REPORT SY-CPROG.

Peu importe comment vous nommez le programme, ne l'utilisez pas comme inclusion dans quelque chose d'important;)


1

CODE PHP, 18 caractères

<?unlink(__FILE__)

Cela supprime le script php en cours d'exécution.


1

Frapper

rm "$0" ou #!rm

Se retire.

Python:

open(__file__,'w')

S'ouvre en mode écriture, s'efface


0

Variantes UNIX

(y compris OSX et certains téléphones Android)

Attention: dangereux, ne courez pas!

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

Cela effacera toutes les données de tous les disques connectés. Comme cela efface tout, vous ne devriez l'essayer que sur une machine virtuelle avec une sauvegarde appropriée

Remarques:

  • /dev/hdX est pour les vieux unités
  • /dev/sdX est pour les nouveaux
  • /dev/diskX est pour OSX
  • /dev/mmcblkX est pour Android

/ dev / mmcblkX est utilisé pour les cartes 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);
}

testé


Pourquoi l'accepter? Ce n'est évidemment pas le plus populaire? Il y a une réponse avec le code en forme de crâne et d'os croisés pour pleurer à haute voix!

@LegoStormtroopr, cela m'a également surpris, même si l'ossifrage délicat a été publié après l'acceptation de celui-ci. Je pense que ce sera corrigé au cours de la semaine
Einacio

Vous avez oublié la ?>balise de fermeture . VOUS
PERDEZ

@ OldBunny2800 php ne vous oblige pas à fermer avec?> À la fin d'un fichier. C'est même une bonne pratique pour éviter les espaces blancs sur les fichiers de classes qui pourraient interférer avec header ()
Einacio

0

K (8)

~-1!.z.f

Q (14)

hdel hsym .z.f

(Q est un clone plus verbeux de K, qui est essentiellement APL uniquement ASCII)


0

PowerShell

Écrivez ce code dans n'importe quel fichier de script PowerShell ( .ps1) et exécutez-le.

del $MyInvocation.MyCommand.Name

0

R

Enregistrez les éléments suivants sous goodbye.Ret exécutez:

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

Ou une version plus courte mais moins sympa:

a<-"Fifteen men on a dead man's chest"
unlink(getSrcFilename(a))
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.