Если используется скомпилированный язык, программа должна удалить скомпилированный исполняемый файл (но не нужно удалять исходный файл). Если используется интерпретированный язык, программа должна удалить исходный файл.
Моя начальная ставка:
Python (29 символов)
import os;os.remove(__file__)
Редактировать: для предотвращения таких решений, как rm -rf / , программа не должна удалять ничего, кроме исполняемого файла или исходного файла.
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>
code-golf
file-system
ЭМБЛЕМА
источник
источник
Ответы:
Скрипт Bash (7 символов, 7 байтов)
источник
./the\"program
,./'the"program'
,'./tha"program'
. Все работает как задумано. (Кавычки должны быть экранированы или заключены в одинарные кавычки при вызове.) Также будет работать с файлами, содержащими имена с новойrm "$0"
в оболочке Bash, а не в пакетном скрипте . Вы должны изменить заголовок следующим образом:# Bash script, 7 bytes
Unix? (9):
Классика Используется
rm
как переводчик, для мгновенного самоудаления. Не самый короткий, хотя.источник
rm
.#!
Линии не учитываются в счете.#!
строки, которые просто дают имя интерпретатора языка по умолчанию, считаются равными нулю. Это очень необычная#!
линия для Bash. (Не то, чтобы это на самом деле работало в Bash, хотя есть и другие языки, на которых это работает.)bash
, она ничего не удалит). Это исполняемый файл UNIX / Linux. (Он также работает в Perl, который эмулирует обработку#!
строк в UNIX / Linux, так что его можно использовать для запуска сценариев оболочки на платформах, которые не могут сделать это изначально.)Пакет - 6 байт
Довольно просто Примечание: работает, даже если имя содержит пробелы.
источник
%~0
,Рубин, 14 знаков
$0
это специальная глобальная переменная, которая содержит имя запущенного в данный момент скрипта.источник
Бейсик-80 / Бейсика / GW-Бейсик / IBM Бейсик / Коммодор 64 Бейсик / Винтаж Бейсик / Коммодор ЖК Бейсик / Atari Бейсик *
5 байт
Ну, это так просто, как только может.
NEW
создает новую программу, поэтому, поместив это в любое место в вашей программе, вы удалите ее.Подтверждение концепции IBM BASIC (
NEW
для ясности в строке 40):* Да, я перечислил каждую старую версию BASIC, в которой я проверял это (или почти всегда использовал)
источник
PHP, 17 символов
источник
<?unlink(__FILE__);
unlink(__FILE__);
. Это не удаляет файл.PowerShell (32)
источник
Perl 5 (8 символов)
$0
имя скрипта иunlink
удаляет его. Обычно, вы бы хотя бы добавили пробел между ними для удобства чтения.источник
C # (112)
Бесстыдно похищенный из http://www.codeproject.com/Articles/31454/How-To-Make-Your-Application-Delete-Itself-Immedia
источник
к (8)
Или q эквивалент для 14:
источник
Python, 18
Открывает себя в режиме только для записи, стирая себя.
источник
R, 26 символов
источник
Node.js - 22 символа
источник
Юлия, 13 байт
Просто. Но дольше. :П
источник
Витси + Баш, 8 байт
источник
Mathematica, 29 байт
источник
Lua, 17 байт
На самом деле это работает, только если вы запустите программу, введя полный путь к файлу, то есть
lua ~/Scripts/removeself.lua
сработает, ноlua removeself.lua
не сработает, предполагая имя файлаremoveself.lua
и текущий рабочий каталог~/Scripts
.Насколько я знаю, нет никакого способа найти фактический путь к файлу скрипта, только передаваемые ему аргументы. Я знаю об этом
debug.getinfo(1).source
, но в моем тестировании эта игра показала те же результаты, что иarg[0]
. Если кто-нибудь знает способ найти путь к файлу, пожалуйста, дайте мне знать.источник
Нодейс, 32 байта
источник
JS, 37 байт
Это считается? Это убивает JavaScript на странице
источник
=
ткл, 18
демо - ВНИМАНИЕ: Это только одноразовая демонстрация! Только в первый раз он будет запущен. Пожалуйста, зарезервируйте его для оригинального постера вопроса. Чтобы попробовать: нажмите
Execute
кнопку. Зеленая область не сообщит ни об одной ошибке. После этого любые последующие нажатия наExecute
кнопку приведут кnot found
ошибке!источник
C, 32 байта
источник
}
s разрешены в C? Вот Это Да!}
но я, видимо, неправильно скопировал / вставил фрагмент. Спасибо за указание на это!main(c,v)int**v;{remove(*v);}
char**
наint**
технически действителен. Я беспокоюсь о возможных проблемах выравнивания.JavaScript (ES6), 13 байт
Попытайся
Регистрирует источник
f
вызовов,f
(который удаляетf
), пытается войтиf
снова, но выдает ошибку, потому чтоf
теперь не определено.источник
PowerShell v3 - 17
источник
Юлия - 25 байт
Запишите это в файл, а затем включите файл
include("<filename here>")
и запуститеf()
:Это, очевидно, функция - я не уверен, как можно определить имя файла для запускаемого файла (как оператора включения без определения функции в нем).
источник
C ++, 137 байт.
Работает большую часть времени на окнах
C, 90 байтов
источник
#include <string>
, удаляя лишние пробелы, и создавая этот C, который позволяет вам удалятьint
иreturn
. Кроме того, вам нужно#include <stdio.h>
сделать эту работу, так как это, гдеsprintf
объявлено.MATLAB, 36 байт
Сохраните приведенный выше код в виде m-файла, следуя указаниям Matlab по именам файлов.
источник
VBA,
6967 байтПодпрограмма, которая не требует ввода и удаляет себя.
Требует, чтобы приведенный ниже код был первой строкой в активной области кода, и чтобы VBA имел доверенный доступ к модели проекта VBE.
-2 байта для замены
ActiveCodePane
наCodePane(1)
источник
T-SQL, 28 байт
Он просто удаляет / удаляет процедуру и код при выполнении себя. Использование:
источник
shortC , 10 байт
Как это работает:
Эквивалентная программа C:
источник
8086/8088 машинный код, 1 байт
Предположения:
В
stosb
магазинах команд байт в регистре AL в ячейке памяти , на которую указывает ES и DI, а затем увеличивает или уменьшает DI. В этом случае он хранит байт 0 по адресу памяти 0, который находится там, где находится сама инструкция.Конечно, эта программа не удаляет файл или что-либо еще. Но если вам удастся заполучить процессор 8086, вставить эту программу в память и запустить ее, она фактически перезапишет себя.
источник