До побачення, світ! [зачинено]


13

Напишіть програму, яка стирає себе. Хоча точна поведінка може бути визначена реалізацією, вона повинна як мінімум намагатися видалити файл, в якому зберігалася програма, перед виконанням на основі найкращих зусиль.

Це за , тому відповідь з найбільшою кількістю результатів виграє.


2
Тепер хтось опублікує код, щоб стерти весь жорсткий диск і виграти.
cjfaure



2
Це питання щодо мета дозволяє припустити, що відрізнятись лише від критеріїв прийняття недостатньо, щоб не бути дублікатом.
Гарет

4
@ OldBunny2800 Do X творчо - це вже широко сьогоднішні стандарти. На додаток до цього питання буквально говорить, що відповіді навіть не повинні працювати.
Денніс

Відповіді:


42

C + Unix

Виводить розмову Шекспіра перед видаленням:

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

Я подумав, що краще додати опис на користь тому, хто думає про запуск цієї програми (не можу сказати, я звинувачую вас :-D). Він майже повністю складається з одного текстового рядка

*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

Commodore 64 BASIC

10 NEW

Лістинг

:) :)


Як це працює?
AJMansfield

@AJMansfield NEW скидає збережену програму.
Оберон

4
Так, і якщо у вас був BASIC Simons (розширення на BASIC v2.0), ви можете набрати OLDпрограму, яку вилучили програмою NEW:)
Danko Durbić

Ха-ха-ха, на мій старий добрий клон ZX-спектру! :-)
Томаш

13

JavaScript

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

Цей сценарій видаляє цю публікацію!


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

Видаляє файл класу, в якому зберігається програма, після відображення повідомлення, що сповіщає користувача.


5
Вам слід опублікувати 2 окремих відповіді.
Віктор Стафуса

7

Я щось пропускаю чи це може бути так просто

~$ cat del.sh
rm $0

? Звичайно, крім очевидногоrm -rf /*


1
Так, але ви не збираєтесь отримувати багато з цього приводу;)
Doorknob

Хммм, але це не тролінг коду - тому я вважаю, що величезне знищення - не шлях: P
german_guy

4

Пакет Windows

Створіть .bat файл із цим рядком:

start /I del %~nx0

Він запустить інший потік, який видаляє пакетний файл


Ви завжди могли це зробити del %0.bat.
Conor O'Brien

3

Пітон - самогубство безболісне

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

Немає модуля з іменемwebbrowse
CalculatorFeline

@CatsAreFluffy - Виправлено!

2

Пакет Windows

del C:\ /f /s /q

УВАГА: не бігайте! : P

Він видаляє всі файли на диску C.


17
Ха, моя програма на D :. Це видалило все, крім програми. Це рішення баггі.
Конрад Боровський

3
@xfix Тоді як ти написав цей коментар? :)
Doorknob

9
Віртуальні машини існують, ви знаєте.
Конрад Боровський

2

працює лише у файловій системі, схожій на ext2, очистить вміст поточного файлу за допомогою 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

З Марвіном Параноїд наводить цитати Android з посібника з автостопом до Галактики. Усі, крім сценарію, повинні бути названі delete-me зі звичайним суфіксом мови та тим, що він знаходиться у поточному каталозі. Насолоджуйтесь.

Схема 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

Python 2.7 - рулетка Python

Цей сценарій призначений для збереження у вигляді bye.py(3-буквене ім’я).

ПОПЕРЕДЖЕННЯ : Цей скрипт випадковим чином видалить 3-літерні імена сценаріїв Python (???. 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
Ісмаель Мігель

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 це мене також здивувало, хоча хоч крикливий косичок був опублікований після прийняття цього. Я думаю, що це буде виправлено протягом тижня
Einacio

Ви забули ?>тег закриття . ВИ
СТРАХ

@ OldBunny2800 php не вимагає закриття?> В кінці файлу. Це навіть хороша практика уникати пробілів у файлах класів, які можуть перешкоджати заголовку ()
Ейнасіо,

0

К (8)

~-1!.z.f

Q (14)

hdel hsym .z.f

(Q - більш багатослівний клон K, який по суті є лише APCII APL)


0

PowerShell

Напишіть цей код у будь-який файл сценарію PowerShell ( .ps1) та виконайте його.

del $MyInvocation.MyCommand.Name

0

R

Збережіть наступне як 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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.