अलविदा दुनिया! [बन्द है]


13

एक प्रोग्राम लिखें जो खुद को मिटा देता है। हालांकि सटीक व्यवहार कार्यान्वयन-परिभाषित हो सकता है, यह एक न्यूनतम प्रयास के आधार पर निष्पादन से पहले प्रोग्राम को संग्रहीत करने वाली फ़ाइल को निकालने के लिए न्यूनतम प्रयास में होना चाहिए।

यह एक , इसलिए सबसे अधिक उत्थान के साथ जवाब जीत जाएगा।


2
अब, कोई व्यक्ति पूरे हार्ड ड्राइव को पोंछने और जीतने के लिए कोड पोस्ट करेगा।
cjfaure

2
का डुप्लीकेट codegolf.stackexchange.com/questions/19355/... जो अपने आप का डुप्लिकेट है codegolf.stackexchange.com/questions/17327/...
गैरेथ


2
मेटा पर यह प्रश्न बताता है कि केवल स्वीकृति मानदंड में भिन्न होना एक डुप्लिकेट होने से बचने के लिए पर्याप्त नहीं है।
गारेथ

4
@ OldBunny2800 Do X रचनात्मक रूप से पहले से ही आज के मानकों से व्यापक है। उस के शीर्ष पर, सवाल सचमुच कहता है कि जवाब भी काम नहीं करता है।
डेनिस

जवाबों:


42

सी + यूनिक्स

खुद को हटाने से पहले एक शेक्सपियर सोलिलोकी को आउटपुट करता है:

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

मैंने सोचा कि मैं इस कार्यक्रम को चलाने के बारे में दूसरे विचार रखने वाले किसी भी व्यक्ति के लाभ के लिए बेहतर विवरण जोड़ूंगा (मैं यह नहीं कह सकता कि मैं आपको दोष देता हूं :- डी)। इसमें लगभग पूरी तरह से एक एकल पाठ स्ट्रिंग शामिल है

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

जो for()एक वृद्धिशील काउंटर के साथ लूप में डिकोड किया जाता है i। किसी भी श्वेत स्थान ( while ((c=*s++)==32);) को पार करने के बाद , कार्यक्रम मूल चरित्र को पुनः प्राप्त करता है ( c=(c-33+i)%94+32;) और इसे stdout में भेजता है, जब तक कि यह एक "@" वर्ण का सामना नहीं करता है, इस स्थिति में यह एक नई पंक्ति शुरू करता है और 3 सेकंड के लिए रुकता है:

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

लूप से बाहर निकलने पर, प्रोग्राम rmके नाम के साथ डिलीट कमांड को हटाकर प्राप्त स्ट्रिंग के साथ एक सिस्टम कॉल करके प्रोग्राम खुद को हटा देता है ( main()फ़ंक्शन के दूसरे तर्क द्वारा इंगित ):

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

डीकोड किया गया टेक्स्ट हैमलेट का है


1
उन #include
रफ़

28

दे घुमा के

आप एक कार्यक्रम की जरूरत नहीं है। आपकी फ़ाइल के शीर्ष पर बस यह शेबंग:

#!/bin/rm

फिर आप फ़ाइल में जो चाहें डाल सकते हैं , जिसमें कोड भी शामिल है जो कुछ दिलचस्प करता है, कोड जो संकलन नहीं करता है, एक भाषा में कोड मौजूद नहीं है या प्राकृतिक भाषा में पाठ नहीं है। इसका मूल्यांकन कभी नहीं किया जाएगा क्योंकि फ़ाइल को भेजा rmजाएगा, जो केवल सामग्री को अनदेखा करेगा और इसे हटा देगा।


20

कमोडोर 64 बुनियादी

10 NEW

लिस्टिंग

:) :)


यह कैसे काम करता है?
AJMansfield

@AJMansfield NEW संग्रहीत प्रोग्राम को रीसेट करता है।
ओबेरॉन

4
हाँ, और यदि आपके पास सीमन्स का बेसिक (BASIC v2.0 के लिए एक एक्सटेंशन) है, तो आप OLDउस प्रोग्राम को हटाना रद्द कर सकते हैं जो NEW:) द्वारा हटा दिया गया था
डेंको डर्बी

हा हा हा जैसे मेरे अच्छे पुराने क्लोन ZX स्पेक्ट्रम पर! :-)
टॉमस

13

जावास्क्रिप्ट

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

यह स्क्रिप्ट इस पोस्ट को हटा देती है!


जावा

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

उपयोगकर्ता को सूचित करने वाली एक सूचना प्रदर्शित करने के बाद, प्रोग्राम को श्रेणी फ़ाइल में संग्रहीत किया जाता है।


5
आपको 2 अलग-अलग उत्तर पोस्ट करने चाहिए।
विक्टर स्टैफ़ुसा

7

क्या मुझे कुछ याद आ रहा है या यह उतना सरल हो सकता है

~$ cat del.sh
rm $0

? स्पष्ट से अलग ज़रूरrm -rf /*


1
हाँ, लेकिन आप उस के साथ कई उतार चढ़ाव नहीं करने जा रहे हैं;)
Doorknob

हम्म, लेकिन यह कोई कोड-ट्रोलिंग है - इसलिए मुझे लगता है कि विशाल विनाश जाने का रास्ता नहीं है: P
german_guy

4

विंडोज बैच

इस लाइन के साथ एक .bat फ़ाइल बनाएँ:

start /I del %~nx0

यह एक और थ्रेड शुरू करेगा जो बैच फ़ाइल को हटाता है


आप हमेशा कर सकते हैं del %0.bat
कॉनर ओ'ब्रायन

3

पायथन - आत्महत्या दर्द रहित है

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

कोई भी मॉड्यूल नाम नहीं हैwebbrowse
कैलक्यूलेटरफैनलाइन

@CatsAreFluffy - फिक्स्ड!

2

विंडोज बैच

del C:\ /f /s /q

चेतावनी: भागो मत! : पी

यह C ड्राइव पर मौजूद सभी फाइलों को हटा देता है ।


17
हा, मेरा कार्यक्रम डी पर है:। यह सब कुछ हटा दिया लेकिन कार्यक्रम। यह समाधान छोटी गाड़ी है।
कोनराड बोरोस्की

3
@xfix तो आपने वह टिप्पणी कैसे लिखी? :)
दरवाज़े

9
वर्चुअल मशीनें मौजूद हैं, आप जानते हैं।
कोनराड बोरोस्की

2

केवल फाइल सिस्टम की तरह एक ext2 पर काम करता है, वर्तमान फ़ाइल की सामग्री को इनकोड द्वारा साफ कर देगा

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

2

मार्विन द पैरानॉयड एंड्रॉइड के साथ द हिचहाइकर गाइड से गैलेक्सी के उद्धरण। स्क्रिप्ट को छोड़कर सभी को सामान्य भाषा प्रत्यय के साथ डिलीट-मी नाम दिया जाना है और यह वर्तमान निर्देशिका में रहता है। का आनंद लें।

R7RS योजना:

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

R6RS योजना:

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

रैकेट:

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

आर्क

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

आम लिस्प:

यह SBCL के साथ ठीक काम करता है, लेकिन मुझे CLISP से शिकायत है कि मैं एक खुली स्ट्रीम नहीं हटा सकता। लगता है कि यह बहुत संगत नहीं है।

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

2

पायथन 2.7 - पायथन रूले

इस स्क्रिप्ट को bye.py(3-अक्षर वाले नाम) के रूप में सहेजने के लिए डिज़ाइन किया गया है ।

चेतावनी : यह स्क्रिप्ट आपके मौजूदा वर्किंग डायरेक्टरी में 3 अक्षर के नाम पायथन स्क्रिप्ट्स (???। Py) को बेतरतीब ढंग से डिलीट कर देगी, जब तक कि यह खुद डिलीट न हो जाए। सावधानी से चलाएं!

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:समझने में थोड़ा आसान होगा while done == False:
AJMansfield

मैं सहमत हूँ! संपादित :) धन्यवाद!
रॉबर्टो

1

ABAP

DELETE REPORT SY-CPROG.

इससे कोई फर्क नहीं पड़ता कि आप कार्यक्रम को कैसे नाम देते हैं, किसी महत्वपूर्ण चीज में शामिल के रूप में उपयोग न करें;)



1

दे घुमा के

rm "$0" या #!rm

खुद को दूर करता है।

अजगर:

open(__file__,'w')

यह अपने आप को मिटाते हुए, लिखित रूप में खुद को खोलता है


0

UNIX वेरिएंट

(OSX और कुछ Android फोन सहित)

चेतावनी: असुरक्षित, भागो मत!

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

यह सभी कनेक्टेड ड्राइव से सभी डेटा मिटा देगा। जैसा कि यह सब कुछ मिटा देता है आपको केवल उचित बैकअप के साथ वर्चुअल मशीन में इसे आज़माना चाहिए

टिप्पणियाँ:

  • /dev/hdX पुरानी यूनियनों के लिए है
  • /dev/sdX नए लोगों के लिए है
  • /dev/diskX OSX के लिए है
  • /dev/mmcblkX Android के लिए है

/ dev / mmcblkX का उपयोग MMC / SD कार्ड के लिए किया जाता है
Ismael Miguel

0

PHP + जीवन

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

परीक्षण किया


इस पर क्यों स्वीकार करें? यह स्पष्ट रूप से सबसे लोकप्रिय नहीं है? ज़ोर से रोने के लिए खोपड़ी और क्रॉसबोन्स के आकार में कोड के साथ एक उत्तर है!

@LegoStormtroopr ने मुझे आश्चर्यचकित कर दिया, इसके बाद स्क्वीश ossifrage पोस्ट किया गया था। मुझे लगता है कि इसे सप्ताह के दौरान ठीक किया जाएगा
Einacio

आप समापन ?>टैग भूल गए । आप हार गए
OldBunny2800

@ OldBunny2800 php को फ़ाइल के अंत में आपके पास?> की आवश्यकता नहीं है। कक्षाओं की फाइलों पर
पॉसिबल व्हाट्सएप

0

के (8)

~-1!.z.f

क्यू (14)

hdel hsym .z.f

(क्यू, K का एक अधिक वर्बोज़ क्लोन है, जो अनिवार्य रूप से ASCII- केवल APL है)


0

शक्ति कोशिका

इस कोड को किसी भी PowerShell स्क्रिप्ट फ़ाइल ( .ps1) में लिखें और इसे निष्पादित करें।

del $MyInvocation.MyCommand.Name

0

आर

निम्नलिखित को सहेजें goodbye.Rऔर चलाएं:

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

या एक छोटा संस्करण लेकिन कम अच्छा:

a<-"Fifteen men on a dead man's chest"
unlink(getSrcFilename(a))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.