Se uma linguagem compilada for usada, o programa deverá excluir o executável compilado (mas não precisará excluir o arquivo de origem). Se um idioma interpretado for usado, o programa deverá excluir o arquivo de origem.
Meu lance de abertura:
Python (29 caracteres)
import os;os.remove(__file__)
Editar: para impedir soluções como rm -rf / , o programa não deve excluir nada, exceto o arquivo executável ou de origem.
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
EMBLEMA
fonte
fonte
Respostas:
Script Bash (7 caracteres, 7 bytes)
fonte
./the\"program
,./'the"program'
,'./tha"program'
. Tudo funciona como pretendido. (Necessidades de cotações para ser escapado ou entre aspas simples de plantão.) Também trabalha com arquivos que contêm nomes com nova linha etc.rm "$0"
no shell Bash em vez de em um script em lote . Você deve editar o cabeçalho da seguinte forma:# Bash script, 7 bytes
Unix? (9):
Um clássico. Usa
rm
como intérprete, para auto-exclusão instantânea. Não é o mais curto ainda.fonte
rm
.#!
linha não é contada na pontuação.#!
linhas completamente padrão que apenas fornecem o nome do intérprete padrão do idioma contam como zero. Essa é uma#!
linha muito incomum no que diz respeito ao Bash. (Não que isso realmente funciona em Bash, embora existam outras línguas onde trabalha.)bash
, ele não excluirá nada). É um executável UNIX / Linux. (Ele também funciona em Perl, que emula manipulação de de UNIX / Linux#!
linhas de modo que ele pode ser usado para executar shellscripts em plataformas que não pode fazê-lo de forma nativa.)Lote - 6 bytes
Bem simples. Nota: Funciona mesmo que o nome contenha espaços.
fonte
%~0
.Ruby, 14 caracteres
$0
é uma variável global especial que contém o nome do script em execução no momento.fonte
BASIC-80 / BASICA / GW-BASIC / IBM BASIC / Commodore 64 BASIC / Vintage BASIC / Commodore LCD BASIC / Atari BASIC *
5 bytes
Bem, isso é o mais simples possível.
NEW
cria um novo programa, portanto, colocá-lo em qualquer lugar do programa o excluirá.Prova de conceito no IBM BASIC (colocando
NEW
na linha 40 para maior clareza):* Sim, listei todas as versões antigas do BASIC em que testei (ou praticamente já usei)
fonte
PHP, 17 caracteres
fonte
<?unlink(__FILE__);
unlink(__FILE__);
. Não exclui o arquivo.PowerShell (32)
fonte
Perl 5 (8 caracteres)
$0
é o nome do script e ounlink
remove. Normalmente, você adicionaria pelo menos um espaço intermediário para facilitar a leitura.fonte
C # (112)
Roubado descaradamente de http://www.codeproject.com/Articles/31454/How-To-Make-Your-Application-Delete-Itself-Immedia
fonte
k (8)
Ou o equivalente q para 14:
fonte
Python, 18
Abre-se no modo somente gravação, apagando-se.
fonte
R, 26 caracteres
fonte
Node.js - 22 caracteres
fonte
Julia, 13 bytes
Simples. Mas mais. : P
fonte
Vitsy + bash, 8 bytes
fonte
Mathematica, 29 bytes
fonte
Lua, 17 bytes
Na verdade, isso só funciona se você executar o programa digitando o caminho completo do arquivo, ou seja
lua ~/Scripts/removeself.lua
, funcionaria, maslua removeself.lua
não, assumindo um nome de arquivoremoveself.lua
e um diretório de trabalho atual de~/Scripts
.Até onde eu sei, não há como encontrar o caminho de arquivo real de um script, apenas os argumentos passados para ele. Eu sei
debug.getinfo(1).source
, mas nos meus testes esse jogo exatamente os mesmos resultados quearg[0]
. Se alguém souber uma maneira de encontrar o caminho do arquivo, entre em contato.fonte
Nodejs, 32 bytes
fonte
JS, 37 bytes
Isso conta? Mata javascript na página
fonte
=
tcl, 18
demo - ATENÇÃO: É apenas uma demonstração única! Somente a primeira vez que será executável. Reserve-o no pôster original da pergunta. Para tentar: pressione o
Execute
botão. A área verde não reportará nenhum erro. Depois disso, quaisquer cliques subsequentes noExecute
botão resultarão em umnot found
erro!fonte
C, 32 bytes
fonte
}
S ausentes são permitidos em C? Uau!}
mas aparentemente eu copiei / colei o trecho incorretamente. Obrigado por apontar isso!main(c,v)int**v;{remove(*v);}
char**
paraint**
é tecnicamente válida. Estou preocupado com possíveis problemas de alinhamento.JavaScript (ES6), 13 bytes
Tente
Registra a origem de
f
chamadasf
(que são excluídasf
), tenta registrarf
novamente, mas gera um erro porquef
agora está indefinido.fonte
PowerShell v3 - 17
fonte
Julia - 25 bytes
Escreva isso em um arquivo e inclua o arquivo
include("<filename here>")
e executef()
:Esta é, obviamente, uma função - não tenho certeza de como alguém poderia detectar o nome de um arquivo que está sendo executado diretamente (como uma instrução de inclusão sem uma definição de função).
fonte
C ++, 137 bytes.
Funciona na maioria das vezes no Windows
C, 90 bytes
fonte
#include <string>
espaços não utilizados , removendo espaços estranhos e criando esse C, que permite remover oint
ereturn
. Além disso, você precisa#include <stdio.h>
fazer isso funcionar, pois é ondesprintf
é declarado.MATLAB, 36 bytes
Salve o código acima como um arquivo m, seguindo as diretrizes de nome de arquivo do Matlab.
fonte
VBA,
6967 bytesSub-rotina que não recebe entrada e se exclui.
Requer que o código abaixo seja a primeira linha no painel de código ativo e que o VBA tenha acesso confiável ao modelo do Projeto VBE.
-2 bytes para substituir
ActiveCodePane
porCodePane(1)
fonte
T-SQL, 28 bytes
Ele simplesmente remove / remove o procedimento e o código ao se executar. Uso:
fonte
shortC , 10 bytes
Como funciona:
Programa C equivalente:
fonte
Código de máquina 8086/8088, 1 byte
Suposições:
A
stosb
instrução armazena o byte no registro AL no local da memória apontado por ES e DI e depois aumenta ou diminui o DI. Nesse caso, ele armazena o byte 0 no endereço de memória 0, que é onde está a própria instrução.Concedido, este programa não exclui um arquivo ou qualquer coisa. Mas se você conseguir colocar um processador 8086 em suas mãos, colocar esse programa na memória e executá-lo, ele se substituirá.
fonte