¡El programa más inútil de todos! [cerrado]

8

Inspirado en la máquina más inútil de la historia .

Escriba el programa más corto que haga lo siguiente:

  • cree una ventana gráfica, luego cierre inmediatamente la ventana y salga del programa.
  • hacer esto de una manera visualmente aparente. Al igual que el "brazo" que presiona el interruptor en la máquina, el programa debe usar algún método visual en la GUI para cerrarse.
  • Este método visual debe ser lo que hace que el programa se cierre; no puede simplemente mostrarlo como algo en el lateral (aunque puede haber otras cosas al costado)

Nota:

  • El programa no tiene que ser visible el tiempo suficiente para que un humano pueda ver la actividad visible siempre que la actividad sea la causa del cierre.
  • La ventana debe ser una GUI (debe mostrar una ventana gráfica que contenga el método de salida visible).
  • El método visual debe ser algo que el usuario pueda hacer si no se realiza automáticamente. Explique qué se debe cambiar en el código para que el usuario pueda hacer esto (Gracias a Iszi).
  • El programa debe cerrarse si no hay interferencia del usuario, pero si el usuario interfiere, entonces no necesita cerrarse automáticamente.
  • Incluya una explicación de qué es lo que hace que el programa se cierre.

Ejemplo: una ventana que contiene un botón en el que se hace clic mediante programación, que ejecuta un pequeño fragmento de código que cierra el programa.

Justin
fuente
2
Sugeriría que, para los programas que no son lo suficientemente visibles como para ser vistos por un humano, las respuestas deben incluir una mención de lo que se debe cambiar en el código (agregar / aumentar los valores del temporizador, etc., pero no cambiar fundamentalmente su funcionalidad) para demostrarle a un humano que realmente hace algo visual.
Iszi
1
¿Debería ser esto un código de golf o un concurso de popularidad?
Kevin
1
Cambié mi respuesta de TI-BASIC a una versión compilada que es más corta que mi otra respuesta (que actualmente se acepta). Le agradecería si pudiera cambiar eso :)
Timtech
1
Tengo curiosidad por qué esta pregunta es DVd y ​​VTCd. Por un lado, esto tiene un criterio objetivo ganador; Es un [código-golf]. Puedo entender que esta no es la mejor pregunta, pero ¿por qué se trata de VTCd?
Justin

Respuestas:

8

TI-Basic, 3 bytes

DispGraph:1

hex: 31 3E DF

Explicación

DispGraph Muestra el gráfico (una ventana gráfica)

:1Simula una prensa de 1(almacenando 1a Ansen el último paso de un programa), que toma la parte posterior de la calculadora a la pantalla principal. Un usuario podría hacer lo mismo.

Timtech
fuente
2
GTB es un poco estúpido considerando que los símbolos para cada comando están almacenados en valores de 2 bytes.
TheDoctor
Concurrido, I (de la inspección usando CalcSys) contaría como 6 (quizás 4, no estoy seguro si todos los sistemas operativos usan tokens de un solo byte para :y 1). La sobrecarga y las tablas del sistema de archivos obviamente no se incluyen en el recuento.
nanofarad
2
¿Qué quieres decir con compilado? TI-BASIC se interpreta.
Jakob
@Jakob En aquel entonces estaba más confundido sobre cómo funcionaba TI-Basic. Lo que debería haber dicho es que la fuente son 3 tokens de 1 byte. Déjame arreglar esta respuesta
Timtech
@Jakob Ahí vamos. Creo que en aquel entonces estábamos puntuando los programas TI-Basic por recuento de bytes ascii en lugar de tokens
Timtech
10

Rubí con zapatos , 110

Shoes.app{button('Close'){exit}
p=para
t=Time.now
animate{u=(t-Time.now).to_i+10
exit if u<0
p.text=' '*u+?<}}

Hace una pequeña flecha que presiona el botón "Cerrar". (Al presionar el botón de cierre manualmente también se cierra la ventana).

captura de pantalla

Pomo de la puerta
fuente
9

Lote de Windows, 4 bytes

Guarde el siguiente programa en un .batarchivo en su carpeta de usuario (C: \ Users \ username):

Exit

Cuando se ejecuta desde Inicio, Ejecutar , se abre una nueva ventana, escribe el comando Exity lo ejecuta.

Hand-E-Food
fuente
1
"La ventana debe ser una GUI (debe mostrar una ventana gráfica que contenga el método de salida visible)". - es discutible si su ventana contiene el método de salida visible, yo diría que no.
gronostaj
44
@gronostaj Tiene una X en la esquina superior derecha.
Seiyria
1
Ah, ya veo, estás explotando las reglas. Hay un método visible para salir y el usuario puede hacer lo mismo que hace el programa, pero esos son dos métodos diferentes para terminarlo. Eso es inteligente, +1.
gronostaj
Crear un .bat con solo un carácter de espacio: 1 byte?
SEarle1986
@ SEarle1986, el carácter de espacio no haría que el programa salga. Saldría porque llegó al final del archivo por lotes. Exithará que la ventana se cierre antes de que se complete el archivo por lotes.
Hand-E-Food
4

JavaScript: 133 117

(Debe permitir ventanas emergentes en su navegador web para que esto funcione)

Código de golf:

(function(){w=window.open(),d=999,i=setInterval(function(){w.resizeTo(d-=9,d),d<0&&(clearInterval(i),w.close())})})()

Fuente: http://jsfiddle.net/gt2t8/2/

usuario1886419
fuente
¿Por qué cambia de tamaño?
Justin
@Quincunxdo this in some visually apparent manner. Like the "arm" that pushes the switch in the machine, the program must use some visual method in the GUI to close itself.
user1886419
1
reducido a 117 caracteres:(function(){w=window.open(),d=999,i=setInterval(function(){w.resizeTo(d-=9,d);if(d<0)clearInterval(i),w.close()})})()
Griffin
@Griffin gracias! Actualizado con sus sugerencias
usuario1886419
1
Uno que puedo ejecutar sin salir de la página. Increíble.
Seiyria
4

Golf básico 84 , 5 4

g`:1

Muestre el gráfico, simule una presión de 1, cierre el gráfico y regrese a casa.

Timtech
fuente
¿Esto hace lo mismo que su otra respuesta?
Justin
@Quincunx Sí, lo hace.
Timtech
2

Ensamblado x86 / Win32 (337 310 271 bytes)

.586
.model flat
option casemap:none
include kernel32.inc
include windows.inc
include user32.inc
i textequ <invoke>
.code
s:i CreateThread,0,0,$+46,0,0,0
i MessageBox,0,$,$,0
i ExitProcess,0
i Sleep,999
i FindWindow,0,$
i PostMessage,eax,256,13,0
ret
END s

Se ensambla con MASM32 ( ml /c /coff /Gz /I<include path> test.asm/ link /SUBSYSTEM:WINDOWS /LIBPATH:<library path> test.obj kernel32.lib user32.lib).

Crea un cuadro de mensaje con un botón "Aceptar" y un hilo que simula una presión de retorno de carro del usuario después de 999 ms.

El $se sustituye con la dirección del comienzo de la codesección por el ensamblador / enlazador. La primera instrucción es una push byte 0(implícitamente, ya que es generada por el invoke), que está codificada como 6A 00, lo que equivale a la cadena terminada en nulo "j". Aprovecho esto cuando llamo MessageBoxy FindWindow.

Miguel
fuente
¿El ensamblado es de 271 bytes o es el tamaño del código de máquina?
12Me21
1

Bash con sistema X Window, 10 caracteres

xterm -e :

Abra una ventana de xterm, ejecute bash no-op :, después de lo cual se cierra la ventana de xterm.

Si desea ver la ventana inútil por un segundo, puede cambiarla :a sleep 1:

xterm -e sleep 1
Trauma digital
fuente
1

Tcl / Tk, 131

grid [button .b -command exit]
event generate .b <Button-1> -warp 1 -x 5 -y 5
event generate .b <ButtonRelease-1> -warp 1 -x 5 -y 5

Tcl / Tk, 136

grid [button .b -command exit]
event generate .b <ButtonPress-1> -warp 1 -x 5 -y 5
event generate .b <ButtonRelease-1> -warp 1 -x 5 -y 5

Debe ejecutarse en un shell interactivo, línea por línea y el usuario no puede mover el mouse entre ellos.

  1. La aplicación comienza

ingrese la descripción de la imagen aquí

  1. El botón cuyo comportamiento es cerrar la aplicación se agrega a la ventana de la aplicación

ingrese la descripción de la imagen aquí

  1. Genere un evento que presione el botón del mouse: aunque el cursor no sea visible en la captura de pantalla, se encuentra sobre el botón; Es visible que se ha presionado el botón porque ahora se hundió y antes de que se estampara.

ingrese la descripción de la imagen aquí

  1. Finalmente genere un evento que suelte el botón del mouse.

    a. Imagen antes de enviarla realmente (antes de presionar Enter) ingrese la descripción de la imagen aquí

    si. Después de ingresar el shell interactivo y las ventanas de la aplicación simplemente desaparecieron. ingrese la descripción de la imagen aquí

Nota para tcl'ers: Intenté hacer lo mismo directamente en el botón X Cerrar de la ventana usando:

event generate . <ButtonPress-1> -warp 1 -x 175 -y -10
event generate . <ButtonRelease-1> -warp 1 -x 175 -y -10

Pero no tuve éxito.

sergiol
fuente
0

Bash - echo (50 bytes)

Sin golf, 54 bytes:

s=sleep;echo -n \>\\;$s 1;echo -ne "\b\b >/";$s 1;echo

Golfizado, 50 bytes

No puedo mostrar exactamente la versión de golf aquí porque los caracteres de retroceso en realidad retroceden. Para la versión de golf, cambie ambos caracteres "^ H" a caracteres de retroceso simple (^ H):

s=sleep;echo -n \>\\;$s 1;echo -n ^H^H \>/;$s 1;echo

Notas:

  • La actividad es visible durante 2 segundos.

  • No utiliza un administrador de ventanas ni nada por el estilo, pero cuento el arte ASCII como una "interfaz gráfica de usuario". Si está ejecutando el comando en una ventana de terminal, que ahora es el caso habitual, la actividad se muestra en esa ventana. No abre una nueva ventana.

  • El usuario puede cerrar el programa antes del cierre automático presionando "CTRL-C" dentro de los 2 segundos posteriores al inicio del programa. Los usuarios que se sientan más cómodos usando su GUI pueden colocar su cursor en la pequeña "X" en la esquina de la ventana del terminal, rápidamente, y "hacer clic" en ella.

  • El programa se cierra después de 2 segundos si no hay interferencia del usuario. El usuario solo puede hacer que se cierre antes.

  • Lo que hace que el programa se cierre es la finalización del "eco" final.

Glenn Randers-Pehrson
fuente