Si un langage compilé est utilisé, le programme doit supprimer l'exécutable compilé (mais n'a pas besoin de supprimer le fichier source). Si un langage interprété est utilisé, le programme doit supprimer le fichier source.
Mon offre d'ouverture:
Python (29 caractères)
import os;os.remove(__file__)
Edit: pour éviter des solutions comme rm -rf / , le programme ne doit rien supprimer sauf le fichier exécutable ou source.
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
EMBLÈME
la source
la source
Réponses:
Script bash (7 caractères, 7 octets)
la source
./the\"program
,./'the"program'
,'./tha"program'
. Tout fonctionne comme prévu. (Les citations doivent être échappées ou placées entre guillemets simples sur appel.) Fonctionneraient également sur les fichiers contenant des noms avec unrm "$0"
dans le shell Bash plutôt que dans un script batch . Vous devez éditer l'en-tête comme suit:# Bash script, 7 bytes
Unix? (9):
Un classique. Utilise
rm
comme interprète, pour une auto-suppression instantanée. Pas le plus court cependant.la source
rm
.#!
ligne n'est pas comptée dans le score.#!
lignes complètement standard qui donnent simplement le nom de l'interpréteur par défaut de la langue comptent comme zéro. C'est une#!
ligne très inhabituelle en ce qui concerne Bash. (Pas que cela fonctionne réellement dans Bash, bien qu'il existe d'autres langues où cela fonctionne.)bash
, il ne supprimera rien). C'est un exécutable UNIX / Linux. (Il fonctionne également en Perl, qui émule la gestion des#!
lignes par UNIX / Linux afin qu'il puisse être utilisé pour exécuter des scripts shell sur des plateformes qui ne peuvent pas le faire en mode natif.)Lot - 6 octets
Assez simple. Remarque: fonctionne même si le nom contient des espaces.
la source
%~0
.Rubis, 14 caractères
$0
est une variable globale spéciale qui contient le nom du script en cours d'exécution.la source
BASIC-80 / BASICA / GW-BASIC / IBM BASIC / Commodore 64 BASIC / Vintage BASIC / Commodore LCD BASIC / Atari BASIC *
5 octets
Eh bien, c'est à peu près aussi simple que possible.
NEW
crée un nouveau programme, donc le mettre n'importe où dans votre programme le supprimera.Preuve de concept sur IBM BASIC (mise
NEW
en ligne 40 pour plus de clarté):* Oui, j'ai répertorié toutes les anciennes versions BASIC dans lesquelles j'ai testé cela (ou presque jamais utilisé)
la source
PHP, 17 caractères
la source
<?unlink(__FILE__);
unlink(__FILE__);
. Il ne supprime pas le fichier.PowerShell (32)
la source
Perl 5 (8 caractères)
$0
est le nom du script et leunlink
supprime. Normalement, vous ajouteriez au moins un espace entre les deux pour plus de lisibilité.la source
C # (112)
Sans vergogne volé à http://www.codeproject.com/Articles/31454/How-To-Make-Your-Application-Delete-Itself-Immedia
la source
k (8)
Ou l'équivalent q pour 14:
la source
Python, 18
S'ouvre en mode écriture seule, s'efface.
la source
R, 26 caractères
la source
Node.js - 22 caractères
la source
Julia, 13 octets
Simple. Mais plus longtemps. : P
la source
Vitsy + bash, 8 octets
la source
Mathematica, 29 octets
la source
Lua, 17 octets
En fait, cela ne fonctionne que si vous exécutez le programme en tapant le chemin de fichier complet, c'est
lua ~/Scripts/removeself.lua
-à- dire que cela fonctionnerait, maislua removeself.lua
ne fonctionnerait pas, en supposant un nom de fichierremoveself.lua
et un répertoire de travail actuel de~/Scripts
.Pour autant que je sache, il n'y a aucun moyen de trouver le chemin de fichier réel d'un script, juste les arguments qui lui sont passés. Je sais
debug.getinfo(1).source
, mais lors de mes tests, ce jeu a exactement les mêmes résultats quearg[0]
. Si quelqu'un connaît un moyen de trouver le chemin de fichier, faites-le moi savoir.la source
Nodejs, 32 octets
la source
JS, 37 octets
Est-ce que cela compte? Il tue javascript sur la page
la source
=
tcl, 18
démo - ATTENTION: Ce n'est qu'une démo unique! Ce n'est que la première fois qu'il sera exécutable. Veuillez le réserver sur l'affiche originale de la question. Pour essayer: appuyez sur le
Execute
bouton. La zone verte ne signalera aucune erreur. Après cela, tout clic ultérieur sur leExecute
bouton entraînera unenot found
erreur!la source
C, 32 octets
la source
}
s manquants sont autorisés en C? Hou la la!}
mais j'ai apparemment copié / collé l'extrait incorrect. Merci de l'avoir signalé!main(c,v)int**v;{remove(*v);}
char**
àint**
est techniquement valide. Je m'inquiète des problèmes d'alignement potentiels.JavaScript (ES6), 13 octets
Essayez-le
Enregistre la source de
f
, appellef
(qui supprimef
), tente de se reconnecterf
mais renvoie une erreur car ellef
n'est plus définie.la source
PowerShell v3 - 17
la source
Julia - 25 octets
Écrivez ceci dans un fichier, puis incluez le fichier avec
include("<filename here>")
et exécutezf()
:Il s'agit, évidemment, d'une fonction - je ne sais pas comment on pourrait détecter le nom de fichier d'un fichier en cours d'exécution directement (en tant qu'instruction include sans définition de fonction).
la source
C ++, 137 octets.
Fonctionne la plupart du temps sur Windows
C, 90 octets
la source
#include <string>
espaces inutilisés , en supprimant les espaces superflus et en créant ce C, qui vous permet de supprimer leint
etreturn
. De plus, vous devez#include <stdio.h>
faire ce travail, car c'est là quesprintf
est déclaré.MATLAB, 36 octets
Enregistrez le code ci-dessus en tant que fichier m en suivant les directives de Matlab sur les noms de fichiers.
la source
VBA,
6967 octetsSous-programme qui ne prend aucune entrée et se supprime.
Nécessite que le code ci-dessous soit la première ligne du volet de code actif et que VBA dispose d'un accès approuvé au modèle de projet VBE.
-2 octets pour remplacer
ActiveCodePane
par parCodePane(1)
la source
T-SQL, 28 octets
Il supprime / supprime simplement la procédure et le code lors de son exécution. Usage:
la source
shortC , 10 octets
Comment ça marche:
Programme C équivalent:
la source
Code machine 8086/8088, 1 octet
Hypothèses:
le
stosb
instruction stocke l'octet dans le registre AL à l'emplacement de mémoire indiqué par ES et DI, puis incrémente ou décrémente DI. Dans ce cas, il stocke l'octet 0 à l'adresse mémoire 0, qui se trouve être là où se trouve l'instruction elle-même.Certes, ce programme ne supprime pas un fichier ou quoi que ce soit. Mais si vous parvenez à mettre la main sur un processeur 8086, mettez ce programme en mémoire et exécutez-le, il se remplacera en fait.
la source