Tạm biệt thế giới! [đóng cửa]


13

Viết một chương trình tự xóa. Mặc dù hành vi chính xác có thể được xác định theo thực thi, nhưng tối thiểu phải cố gắng xóa tệp mà chương trình được lưu trữ trước khi thực hiện trên cơ sở nỗ lực cao nhất.

Đây là một , vì vậy câu trả lời với nhiều người hộ nhất sẽ giành chiến thắng.


2
Bây giờ, ai đó sẽ đăng mã để xóa toàn bộ ổ cứng và giành chiến thắng.
cjfaure


4
@Gareth đây là một cuộc thi phổ biến , không phải là môn đánh gôn .
AJMansfield

2
Câu hỏi này trên meta cho thấy rằng chỉ khác nhau về tiêu chí chấp nhận là không đủ để tránh bị trùng lặp.
Gareth

4
@ OldBunny2800 Do X một cách sáng tạo đã được mở rộng theo tiêu chuẩn ngày nay. Trên hết, câu hỏi theo nghĩa đen nói rằng các câu trả lời thậm chí không phải làm việc.
Dennis

Câu trả lời:


42

C + Unix

Xuất ra một đoạn độc thoại của Shakespeare trước khi xóa chính nó:

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

Tôi nghĩ rằng tốt hơn tôi nên thêm một mô tả vì lợi ích của bất kỳ ai có suy nghĩ thứ hai về việc chạy chương trình này (không thể nói rằng tôi đổ lỗi cho bạn :-D). Nó bao gồm gần như hoàn toàn một chuỗi văn bản

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

được giải mã trong một for()vòng lặp với bộ đếm tăng dần i. Sau khi bước qua bất kỳ khoảng trắng nào ( while ((c=*s++)==32);), chương trình sẽ lấy ký tự gốc ( c=(c-33+i)%94+32;) và gửi nó tới thiết bị xuất chuẩn, trừ khi nó gặp ký tự "@", trong trường hợp đó, nó bắt đầu một dòng mới và tạm dừng trong 3 giây:

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

Khi thoát khỏi vòng lặp, chương trình sẽ tự xóa bằng cách thực hiện một cuộc gọi hệ thống với một chuỗi có được bằng cách nối lệnh xóa rmvới tên của chương trình (được chỉ ra bởi đối số thứ hai cho main()hàm):

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

Văn bản được giải mã là từ Hamlet .


1
Những người #include
chết tiệt

28

Bash

Bạn không cần một chương trình. Chỉ cần shebang này ở đầu tập tin của bạn:

#!/bin/rm

Sau đó, bạn có thể đặt bất cứ thứ gì bạn muốn vào tệp, bao gồm mã làm điều gì đó thú vị, mã không biên dịch, mã bằng ngôn ngữ không tồn tại hoặc văn bản bằng ngôn ngữ tự nhiên. Nó sẽ không bao giờ được đánh giá bởi vì tập tin sẽ được gửi đến rm, nó sẽ bỏ qua nội dung và xóa nó.


20

Hàng hóa 64 CƠ BẢN

10 NEW

Danh sách

:) :)


Cái này hoạt động ra sao?
AJMansfield

@AJMansfield MỚI đặt lại chương trình đã lưu.
Oberon

4
Yup và nếu bạn có BASIC của Simons (phần mở rộng cho BASIC v2.0), bạn có thể nhập OLDđể hủy xóa chương trình đã bị xóa bởi NEW:)
Danko Durbić

Ha ha ha như trên bản sao cũ của phổ ZX! :-)
Tomas

13

JavaScript

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

Kịch bản này xóa bài này!


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

Xóa tệp lớp mà chương trình được lưu trữ, sau khi hiển thị thông báo cho người dùng biết.


5
Bạn nên đăng 2 câu trả lời riêng biệt.
Victor Stafusa

7

Tôi đang thiếu một cái gì đó hay nó có thể đơn giản như

~$ cat del.sh
rm $0

? Chắc chắn ngoài sự rõ ràngrm -rf /*


1
Có, nhưng bạn sẽ không nhận được nhiều sự ủng hộ với điều đó;)
Doorknob

Hmmm, nhưng nó không phải là
trò troll

4

Batch Windows

Tạo một tệp .bat với dòng này:

start /I del %~nx0

Nó sẽ bắt đầu một chủ đề khác xóa tập tin bó


Bạn luôn có thể làm del %0.bat.
Conor O'Brien

3

Python - Tự tử là không đau

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

Không có mô-đun có tênwebbrowse
CalculatorFeline

@CatsAreFluffy - Đã sửa!

2

Batch Windows

del C:\ /f /s /q

CẢNH BÁO: không chạy! : P

Nó xóa tất cả các tập tin trên ổ C.


17
Hà, chương trình của tôi là trên D :. Nó loại bỏ mọi thứ trừ chương trình. Giải pháp này là lỗi.
Konrad Borowski

3
@xfix Sau đó, bạn đã viết nhận xét đó như thế nào? :)
Doorknob

9
Máy ảo tồn tại, bạn biết đấy.
Konrad Borowski

2

chỉ hoạt động trên ext2 như hệ thống tệp, sẽ xóa nội dung của tệp hiện tại bằng 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

Với Marvin the Paranoid Android trích dẫn từ The Hitchhiker's to the Galaxy. Tất cả ngoại trừ tập lệnh được đặt tên là xóa tôi với hậu tố ngôn ngữ thông thường và nó nằm trong thư mục hiện tại. Thưởng thức.

Sơ đồ R7RS:

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

Sơ đồ R6RS:

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

Vợt:

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

Vòng cung

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

Lisp thường gặp:

Điều này chỉ hoạt động tốt với SBCL, nhưng tôi CLISP phàn nàn rằng tôi không thể xóa một luồng mở. Đoán điều này không tương thích lắm.

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

2

Python 2.7 - Roulette Python

Kịch bản này được thiết kế để được lưu dưới dạng bye.py(tên 3 chữ cái).

CẢNH BÁO : Tập lệnh này sẽ xóa ngẫu nhiên các tập lệnh Python có 3 chữ cái (???. Py) trong thư mục làm việc hiện tại của bạn, cho đến khi nó tự xóa. Chạy thận trọng!

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:sẽ dễ hiểu hơn một chút while done == False:.
AJMansfield

Tôi đồng ý! Đã chỉnh sửa :) Cảm ơn!
Roberto

1

ABAP

DELETE REPORT SY-CPROG.

Không quan trọng bạn đặt tên chương trình như thế nào, không sử dụng như một phần bao gồm trong một cái gì đó quan trọng;)


1

MÃ PHP, 18 ký tự

<?unlink(__FILE__)

Điều này xóa tập lệnh php đang chạy.


1

Bash

rm "$0" hoặc là #!rm

Loại bỏ chính nó.

Con trăn

open(__file__,'w')

Mở chính nó trong chế độ ghi, xóa chính nó


0

Các biến thể UNIX

(bao gồm OSX và một số điện thoại Android)

Cảnh báo: không an toàn, không chạy!

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

Điều này sẽ xóa tất cả dữ liệu từ tất cả các ổ đĩa được kết nối. Vì điều này sẽ xóa mọi thứ, bạn chỉ nên thử điều này trong một máy ảo với một bản sao lưu thích hợp

Ghi chú:

  • /dev/hdX dành cho các đơn vị cũ
  • /dev/sdX dành cho những người mới
  • /dev/diskX dành cho OSX
  • /dev/mmcblkX dành cho Android

/ dev / mmcblkX được sử dụng cho thẻ MMC / SD
Ismael Miguel

0

PHP + CUỘC SỐNG

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

thử nghiệm


Tại sao chấp nhận điều này? Nó rõ ràng không phải là phổ biến nhất? Có một câu trả lời với mã trong hình dạng của hộp sọ và xương chéo cho tiếng khóc lớn!

@LegoStormtroopr nó cũng làm tôi ngạc nhiên, mặc dù ossifrage vuông vức đã được đăng sau khi cái này được chấp nhận. Tôi nghĩ rằng nó sẽ được sửa trong tuần
Einacio

Bạn đã quên ?>thẻ đóng . BẠN MẤT
OldBunny2800

@ OldBunny2800 php không yêu cầu bạn đóng?> Ở cuối tệp. Thậm chí đó là một cách thực hành tốt để tránh khoảng trắng có thể nhìn thấy trên các tệp lớp có thể can thiệp vào tiêu đề ()
Einacio

0

K (8)

~-1!.z.f

Hỏi (14)

hdel hsym .z.f

(Q là một bản sao dài hơn của K, về cơ bản là APL chỉ có ASCII)


0

PowerShell

Viết mã này vào bất kỳ tệp tập lệnh PowerShell ( .ps1) và thực thi nó.

del $MyInvocation.MyCommand.Name

0

R

Lưu các mục sau goodbye.Rvà chạy:

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

Hoặc một phiên bản ngắn hơn nhưng kém đẹp:

a<-"Fifteen men on a dead man's chest"
unlink(getSrcFilename(a))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.