একটি প্রোগ্রাম যা নিজেকে মুছে দেয়


22

যদি কোনও সংকলিত ভাষা ব্যবহৃত হয় তবে প্রোগ্রামটি অবশ্যই সংকলিত নির্বাহযোগ্যকে মুছে ফেলতে হবে (তবে উত্স ফাইলটি মোছার দরকার নেই)। যদি কোনও ব্যাখ্যামূলক ভাষা ব্যবহার করা হয় তবে প্রোগ্রামটি অবশ্যই উত্স ফাইলটি মুছবে।

আমার খোলার বিড:

পাইথন (29 টি অক্ষর)

import os;os.remove(__file__)

সম্পাদনা করুন: আরএম-আরএফ / এর মতো সমাধানগুলি প্রতিরোধ করার জন্য , প্রোগ্রামটি কার্যকর করা বা উত্স ফাইল ছাড়া অন্য কোনও কিছু মুছে ফেলতে পারে না।

html,body{margin:0;padding:0;height:100%;overflow:hidden}
 <iframe src="https://xmikee1.github.io/ppcg-leaderboard/?id=19355" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe>



2
@ জনডভোরাক এই প্রশ্নটি আরও কঠোর ছিল, একটি .exe ফাইলের প্রয়োজন। এটি আরও শিথিল।
EMBLEM

হুম ... আমি যদি বিপরীত দিকে বন্ধ করতে ভোট দিই, তবে?
জন ডিভোরাক


10
@ কুইনকংস আমি জনপ্রিয়তা প্রতিযোগিতায় বিশ্বাস করি না। রিয়েল কোডটি প্রথমে তার কমনীয়তার সাথে বৈধ নয়, তবে এটির সঠিকতা।
এমবিলেম

উত্তর:


21

বাশ স্ক্রিপ্ট (7 অক্ষর, 7 বাইট)

rm "$0"

1
স্ক্রিপ্ট ফাইলের নাম ফাঁকা থাকলে কাজ করে না।
ব্যবহারকারী 80551

শুভ চোখ! আমি ফাঁকা ফাঁকা ফাইলগুলির সাথে স্ক্রিপ্ট আপডেট করেছি updated কেবলমাত্র দুটি আরও অক্ষর যুক্ত করুন। ধন্যবাদ!
anthony.c

যদি ফাইলের নামটিতে ডাবল কোট থাকে তবে এটি কাজ করে?
জন ডিভোরাক

1
@ জনডভোরাক: হ্যাঁ মৃত্যুদন্ড যে হবে যেমন করে ./the\"program, ./'the"program', './tha"program'। সমস্ত ইচ্ছাকৃত কাজ করে। (কল এ উদ্ধৃত হওয়া বা একক উদ্ধৃতিতে আবদ্ধ হওয়া দরকার)) নতুন লাইন ইত্যাদি যুক্ত ফাইলগুলিতেও কাজ করবে
রানিয়াম

1
@ স্টাফেন গৌরিচন সম্ভবত 'কারণ তিনি ব্যাচের স্ক্রিপ্টের পরিবর্তে rm "$0"বাশ শেলের মধ্যে চলছে । আপনার মতো # Bash script, 7 bytes
শিরোনামটি

15

ইউনিক্স? (9):

#!/bin/rm

একটি ক্লাসিক. rmতাত্ক্ষণিক স্ব-মোছার জন্য দোভাষী হিসাবে ব্যবহার করে । যদিও খুব সংক্ষিপ্ততম না।


5
বা যদি আপনি প্রতারণামূলক হতে চান: একটি 0-বাইট rmপ্রোগ্রাম।
nyuszika7h

1
#!লাইন স্কোর গণনা করা হয় না।
পাভেল

@ ফিনিক্স: আপনি যে ভাষাটি ব্যবহার করছেন তা যদি অস্বাভাবিক হয়; শুধুমাত্র সম্পূর্ণ মানক #!রেখাগুলি যা কেবলমাত্র ভাষাটির ডিফল্ট ইন্টারপ্রেটার গণনার নাম শূন্য হিসাবে দেয়। #!বাশ যতদূর যায় এটি একটি খুব অস্বাভাবিক লাইন। (এটি আসলে বাশে কাজ করে না, যদিও এটি অন্যান্য ভাষাগুলি যেখানে কাজ করে সেখানেও এটি ব্যবহার করা হয়))

1
এটি আসলে কোনও বাশ প্রোগ্রাম নয় (যদি আপনি স্পষ্টভাবে এটি ব্যবহার করে চালান তবে এটি bashকিছুই মুছে ফেলবে না)। এটি একটি ইউনিক্স / লিনাক্স এক্সিকিউটেবল। (এটি পার্লেও কাজ করে যা ইউনিক্স / লিনাক্সের #!লাইনগুলি পরিচালনা করার অনুকরণ করে যাতে এটি প্ল্যাটফর্মগুলিতে

@ পাভেল হুম ... 0 বাইট?
ɐɔıʇǝɥʇuʎs

10

ব্যাচ - 6 বাইট

Del %0

বেশ সহজ. দ্রষ্টব্য: নামটিতে স্পেস থাকলেও কাজ করে।


কেবলমাত্র যদি ফাইলের নামের ফাঁকা স্থান না থাকে।
ইসিয়া মিডোস 30'14

@ আইফিনবল, দুঃখিত?
চাচাবিশেষ

একটু বাগ দেখিয়ে দিচ্ছি। আপনি যদি ডস নির্দিষ্ট করে থাকেন তবে তা নয় তবে এটি উইন্ডোজে খুব সহজেই ভেঙে যাবে (উদাহরণস্বরূপ প্রোগ্রাম ফাইলগুলিতে)। কোন ক্ষমা প্রয়োজন।
ইসিয়া মিডোস

আমার খারাপ ... ঠিক আছে। আমি ভুলভাবে লিখেছি যে এই ক্ষেত্রে উদ্ধৃতিগুলির দরকার নেই কারণ সেগুলি স্বয়ংক্রিয়ভাবে এর মধ্যে অন্তর্ভুক্ত রয়েছে।
ইসিয়া মিডোস

সব ভালো. টিলড যোগ করা আশেপাশের উদ্ধৃতিগুলি সরিয়ে দেয়। %~0
চাচাবিশেষ

9

রুবি, 14 টি অক্ষর

File.delete $0

$0 একটি বিশেষ গ্লোবাল ভেরিয়েবল যা বর্তমানে চলমান স্ক্রিপ্টের নাম ধারণ করে।


আমি নিশ্চিত যে আপনি স্থানটি ফেলে দিতে পারবেন।
ড্যারেন স্টোন 8

এই কারণেই আমি আমার সংস্করণটির প্রশ্নটি আরও কঠোর করে তুলেছি। অনুবাদিত ভাষাগুলি কোনও সমস্যা ছাড়াই এটি করতে পারে। ধারণাটি হ'ল একটি স্থানীয়ভাবে চলমান অ্যাপ্লিকেশনটি কেবল নিজের নীচ থেকে
কম্বলকে

6

বেসিক -৮০ / বেসিক / জিডাব্লু-বেসিক / আইবিএম বেসিক / কমোডোর B৪ বেসিক / ভিনটেজ বেসিক / কমোডোর এলসিডি বেসিক / আতারি বেসিক *

5 বাইট

1 NEW

ঠিক আছে, এটি এটি হিসাবে প্রায় সহজ। NEWএকটি নতুন প্রোগ্রাম তৈরি করে, তাই এটি আপনার প্রোগ্রামের যে কোনও জায়গায় রাখলে তা মুছে ফেলা হবে।

আইবিএম বেসিকের ধারণার প্রমাণ ( NEWস্পষ্টতার জন্য 40 লাইনে রাখা):

* হ্যাঁ, আমি এটি পরীক্ষা করেছি এমন প্রতিটি পুরাতন বেসিক সংস্করণ তালিকাভুক্ত করেছি (বা এর আগেও ব্যবহৃত হয়েছে)


2
+1, এটি সম্পর্কে বরং কাব্যিক কিছু আছে। অস্তিত্বহীন এমনকি।
উইসনেম

5

পিএইচপি, 17 টি অক্ষর

unlink(__FILE__);

6
আমি নিশ্চিত না যে কেন কেউ এটিকে হ্রাস করবেন; এটা পুরোপুরি বৈধ। আপনি একটি উন্মুক্ত ট্যাগ অন্তর্ভুক্ত করতে চাইতে পারেন, যদিও<?unlink(__FILE__);
প্রিমো

4
এই পিএইচপি প্রোগ্রাম প্রিন্ট unlink(__FILE__);। এটি ফাইল মুছে না।
ডানফোল্ড

1
@rightfold it works as described if you include an opening tag, which I would have assumed to add
Darren H


3

Perl 5 (8 characters)

unlink$0

$0 is the script name, and unlink removes it. Normally, you'd at least add a space in between for readability.








1

Vitsy + bash, 8 bytes

iG' mr',

iG       Get the name of the use declaration at the top item (-1) (returns the current one)
  ' mr'  Concatenate "rm " to the front of it.
       , Execute via shell.


1

Lua, 17 bytes

os.remove(arg[0])

This actually only works if you run the program by typing out the full filepath, i.e.
lua ~/Scripts/removeself.lua would work, but lua removeself.lua would not, assuming a filename of removeself.lua and a current working directory of ~/Scripts.

As far as I know, there's no way to find the actual filepath of a script, just the arguments passed to it. I do know about debug.getinfo(1).source, but in my testing that game exactly the same results as arg[0]. If anyone knows of a way to find the filepath, please let me know.



1

জেএস, 37 বাইট

document.documentElement.innerHTML=""

এই কি গণনা? এটি পৃষ্ঠায় জাভাস্ক্রিপ্ট হত্যা করে


আপনার চারপাশের স্পেস প্রয়োজন হবে না=
programmer5000

1

tcl, 18

file delete $argv0

ডেমো - মনোযোগ: এটি কেবলমাত্র এক সময়ের ডেমো! এটি প্রথমবারের মতো চালানো হবে। দয়া করে এটি প্রশ্নের মূল পোস্টারে সংরক্ষণ করুন। চেষ্টা করার জন্য: Executeবোতাম টিপুন। সবুজ অঞ্চল কোনও ত্রুটির খবর দেবে না। এর পরে, Executeবোতামে পরবর্তী কোনও ক্লিকের ফলে কোনও not foundত্রুটি হবে!


1

C, 32 bytes

main(c,v)char**v;{remove(v[0]);}

1
}সি গায়েব কি অনুমোদিত? কি দারুন!
ক্যালকুলেটরফলাইন

নাহ, কেবল একটি টাইপো! আমার চরিত্রের গণনা সমাপ্তি অন্তর্ভুক্ত করেছে }তবে আমি স্পষ্টতই স্নিপেটটি অনুলিপি করে অনুলিপি / আটকানো করেছি। এটা ইশারা জন্য ধন্যবাদ!
জোশ

ঠিক আছে, যেহেতু বেনাম জনতা কোনও মন্তব্য রেখে বা তাদের ভোট প্রত্যাহার করে না বলে মনে হয় না, তাই আমি আমার উত্তরটি মুছে ফেলেছি, যা আমি আপনার ভিত্তিতে ভিত্তি করে রেখেছি। আপনি এটিকে 29 বাইটে নামতে পারেন:main(c,v)int**v;{remove(*v);}
এমডি এক্সএফ

@MDXF আমি নিশ্চিত নই যদি পরিবর্তন char**করতে int**টেকনিক্যালি বৈধ। আমি সম্ভাব্য প্রান্তিককরণ সংক্রান্ত সমস্যা নিয়ে উদ্বিগ্ন।
জোশ

1
@ জোশ ওয়েল; এটি কাজ করে ... তাই আমি কেন দেখছি না। কোড গল্ফ প্রযুক্তিগতভাবে বৈধ নয় এমন ভয়ঙ্কর পদ্ধতিগুলি ব্যবহার করার মতো।
এমডি এক্সএফ

1

জাভাস্ক্রিপ্ট (ES6), 13 বাইট

f=_=>delete f

এটি চেষ্টা করুন

এর উত্স লগ করে f, কলগুলি f(যা মুছে দেয় f) fআবার লগ করার চেষ্টা করে তবে একটি ত্রুটি নিক্ষেপ করে কারণ fএখন অপরিজ্ঞাত is

f=_=>delete f
console.log(f)
f()
console.log(f)



0

জুলিয়া - 25 বাইট

এটিকে একটি ফাইলে লিখুন এবং তারপরে ফাইলটি অন্তর্ভুক্ত করুন include("<filename here>")এবং রান করুন f():

f()=rm(functionloc(f)[1])

এটি স্পষ্টতই একটি ফাংশন - আমি নিশ্চিত না যে কেউ সরাসরি চালিত কোনও ফাইলের ফাইলের নাম সনাক্ত করতে যাবেন (এটিতে কোনও ফাংশন সংজ্ঞা ব্যতীত বিবৃতি অন্তর্ভুক্ত হিসাবে)।


0

সি ++, 137 বাইট।

উইন্ডোজে বেশিরভাগ সময় কাজ করে

#include <stdlib.h> 
#include <string>
int main(int, char*v[]){char c[99];sprintf(c,"start cmd /C del \"%s\"/Q", *v);return system(c);}

সি, 90 বাইট

void main(int n,char**v){char c[99];sprintf(c,"start cmd /C del \"%s\"/Q", *v);system(c);} 

অধিকাংশ সময়?
অ্যাডিসন ক্রম্প 8

1
অব্যবহৃত #include <string>স্থানগুলি অপসারণ করে এবং এই সি তৈরি করে আপনি প্রচুর বাইট সংরক্ষণ করতে পারেন যা আপনাকে intএবং সরিয়ে দেয় return। অতিরিক্তভাবে, আপনাকে #include <stdio.h>এই কাজটি করা দরকার, যেহেতু sprintfএটিই ঘোষণা করা হয়েছে।
মেগো

0

ম্যাটল্যাব, 36 বাইট

delete([mfilename('fullpath'),'.m'])

মতলবের ফাইল নামের নির্দেশিকা অনুসরণ করে উপরের কোডটিকে এম-ফাইল হিসাবে সংরক্ষণ করুন।


0

ভিবিএ, 69 67 বাইট

সাববুটিন যা কোনও ইনপুট নেয় না এবং নিজেকে মুছে দেয়।

সক্রিয় কোড ফলকে নীচের কোডটি প্রথম লাইন হওয়া আবশ্যক এবং ভিবিএ ভিবিই প্রকল্পের মডেলটিতে বিশ্বাসযোগ্য অ্যাক্সেস পেয়েছে।

Sub a:Application.VBE.CodePanes(1).CodeModule.DeleteLines 1:End Sub

-2 প্রতিস্থাপন জন্য বাইট ActiveCodePaneসঙ্গেCodePane(1)


0

টি এসকিউএল, 28 বাইট

CREATE PROC d AS DROP PROC d

এটি নিজে কার্যকর করার সময় প্রক্রিয়া এবং কোডটি কেবল ড্রপ / মুছে ফেলে। ব্যবহার:

EXECUTE d

0

শর্টসি , 10 বাইট

Aremove(*@

কিভাবে এটা কাজ করে:

A           main function
 remove(    delete file specified in next string
        *@  program name

সমতুল্য সি প্রোগ্রাম:

int main(int argc, char **argv){remove(*argv);}

0

8086/8088 মেশিন কোড, 1 বাইট

aa    stosb

অনুমিতি:

  • রেজিস্টার সিএস, আইপি, ইএস, ডিআই, এবং আলে সবগুলি প্রাথমিকভাবে 0 হয়।
  • এই কোড ঠিকানা 0 এ স্থাপন করা হয়।

stosbনির্দেশ দোকানে মেমরির অবস্থানে আওয়ামী লীগ রেজিস্টারে বাইট ইএস এবং Di দ্বারা প্রতি ইঙ্গিত বাড়তি তারপর, বা দ্বি decrements। এই ক্ষেত্রে, এটি বাইট 0 মেমোরি ঠিকানা 0 এ সঞ্চয় করে, যা নির্দেশ নিজেই যেখানে সেখানে ঘটে।

মঞ্জুর, এই প্রোগ্রামটি কোনও ফাইল বা কিছু মুছবে না। তবে আপনি যদি কোনও ৮ process8686 প্রসেসরের হাত পেতে পরিচালিত হন তবে এই প্রোগ্রামটিকে মেমরির মধ্যে ঝাঁকুনি করুন এবং এটি চালান, এটি আসলে নিজেই ওভাররাইট হয়ে যাবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.