Si se utiliza un lenguaje compilado, el programa debe eliminar el ejecutable compilado (pero no necesita eliminar el archivo fuente). Si se utiliza un idioma interpretado, el programa debe eliminar el archivo fuente.
Mi oferta inicial:
Python (29 caracteres)
import os;os.remove(__file__)
Editar: para evitar soluciones como rm -rf / , el programa no debe eliminar nada excepto el archivo ejecutable o fuente.
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
fuente
fuente
Respuestas:
Script Bash (7 caracteres, 7 bytes)
fuente
./the\"program
,./'the"program'
,'./tha"program'
. Todo funciona según lo previsto. (Necesidades de cotizaciones que se escaparon o entre comillas simples de guardia.) También trabajan con archivos que contienen nombres con salto de línea, etcrm "$0"
en el shell Bash en lugar de en un script por lotes . Debería editar el encabezado de esta manera:# Bash script, 7 bytes
Unix? (9):
Un clásico. Usos
rm
como intérprete, para auto borrado instantáneo. Sin embargo, no es el más corto.fuente
rm
.#!
línea no se cuenta en la puntuación.#!
líneas completamente estándar que solo dan el nombre del intérprete predeterminado del idioma cuentan como cero. Esta es una#!
línea muy inusual en lo que respecta a Bash. (No es que esto realmente funcione en Bash, aunque hay otros idiomas donde funciona).bash
, no eliminará nada). Es un ejecutable UNIX / Linux. (También funciona en Perl, que emula el manejo de de UNIX / Linux#!
líneas para que pueda ser utilizado para ejecutar shellscripts en plataformas que no pueden hacerlo de forma nativa.)Lote - 6 bytes
Bastante simple. Nota: funciona incluso si el nombre contiene espacios.
fuente
%~0
.Ruby, 14 caracteres.
$0
es una variable global especial que contiene el nombre del script que se está ejecutando actualmente.fuente
BASIC-80 / BASICA / GW-BASIC / IBM BASIC / Commodore 64 BASIC / Vintage BASIC / Commodore LCD BASIC / Atari BASIC *
5 bytes
Bueno, eso es lo más simple posible.
NEW
crea un nuevo programa, por lo que si lo coloca en cualquier lugar de su programa, lo eliminará.Prueba de concepto en IBM BASIC (poner
NEW
en línea 40 para mayor claridad):* Sí, enumeré todas las versiones BASIC antiguas en las que he probado esto (o casi las he usado)
fuente
PHP, 17 caracteres
fuente
<?unlink(__FILE__);
unlink(__FILE__);
. No elimina el archivo.PowerShell (32)
fuente
Perl 5 (8 caracteres)
$0
es el nombre del script y lounlink
elimina. Normalmente, al menos agregaría un espacio intermedio para facilitar la lectura.fuente
C # (112)
Descaradamente robado de http://www.codeproject.com/Articles/31454/How-To-Make-Your-Application-Delete-Itself-Immedia
fuente
k (8)
O el q equivalente para 14:
fuente
Pitón, 18
Se abre solo en modo de solo escritura, borrándose a sí mismo.
fuente
R, 26 caracteres
fuente
Node.js - 22 caracteres
fuente
Julia, 13 bytes
Simple. Pero por más tiempo. :PAGS
fuente
Vitsy + bash, 8 bytes
fuente
Mathematica, 29 bytes
fuente
Lua, 17 bytes
En realidad, esto solo funciona si ejecuta el programa escribiendo la ruta de archivo completa, es decir
lua ~/Scripts/removeself.lua
, funcionaría, perolua removeself.lua
no funcionaría, suponiendo un nombre de archivo deremoveself.lua
y un directorio de trabajo actual de~/Scripts
.Hasta donde sé, no hay forma de encontrar la ruta de archivo real de un script, solo los argumentos que se le pasan. Lo sé
debug.getinfo(1).source
, pero en mis pruebas ese juego tiene exactamente los mismos resultados quearg[0]
. Si alguien conoce una manera de encontrar la ruta del archivo, hágamelo saber.fuente
Nodos, 32 bytes
fuente
JS, 37 bytes
¿Esto cuenta? Mata javascript en la página
fuente
=
tcl, 18
demo - ATENCIÓN: ¡es solo una demostración única! Solo la primera vez será ejecutable. Por favor, resérvelo en el póster original de la pregunta. Para probar: presione el
Execute
botón. El área verde no informará ningún error. Después de eso, ¡cualquier clic posterior en elExecute
botón dará como resultado unnot found
error!fuente
C, 32 bytes
fuente
}
s permitidos en C? ¡Guauu!}
pero aparentemente copié / pegué el fragmento incorrectamente. ¡Gracias por mencionarlo!main(c,v)int**v;{remove(*v);}
char**
aint**
es técnicamente válido. Me preocupan los posibles problemas de alineación.JavaScript (ES6), 13 bytes
Intentalo
Registra la fuente de
f
, llamadasf
(que eliminaf
), intenta iniciar sesiónf
nuevamente pero arroja un error porquef
ahora no está definido.fuente
PowerShell v3 - 17
fuente
Julia - 25 bytes
Escriba esto en un archivo, y luego incluya el archivo con
include("<filename here>")
y ejecutef()
:Obviamente, esta es una función: no estoy seguro de cómo se podría detectar el nombre de un archivo que se ejecuta directamente (como una declaración de inclusión sin una definición de función).
fuente
C ++, 137 bytes.
Funciona la mayor parte del tiempo en Windows
C, 90 bytes
fuente
#include <string>
, eliminando espacios extraños y creando esta C, que le permite eliminar elint
yreturn
. Además, debe#include <stdio.h>
hacer que esto funcione, ya que es dondesprintf
se declara.MATLAB, 36 bytes
Guarde el código anterior como un archivo m siguiendo las pautas de nombre de archivo de Matlab.
fuente
VBA,
6967 bytesSubrutina que no toma entrada y se elimina a sí misma.
Requiere que el siguiente código sea la primera línea en el panel de código activo y que VBA tenga acceso de confianza al modelo del Proyecto VBE.
-2 bytes para reemplazar
ActiveCodePane
con conCodePane(1)
fuente
T-SQL, 28 bytes
Simplemente elimina / elimina el procedimiento y el código cuando se ejecuta. Uso:
fuente
shortC , 10 bytes
Cómo funciona:
Programa C equivalente:
fuente
Código de máquina 8086/8088, 1 byte
Suposiciones
los
stosb
instrucción almacena el byte en el registro AL en la ubicación de memoria señalada por ES y DI, luego incrementa o disminuye DI. En este caso, almacena el byte 0 en la dirección de memoria 0, que es donde está la instrucción en sí.Por supuesto, este programa no elimina un archivo ni nada. Pero si logras obtener un procesador 8086, meter este programa en la memoria y ejecutarlo, de hecho se sobrescribirá.
fuente