Escriba un programa GUI de hello world que se cierre después de tres segundos

24

Lea las reglas y las áreas en negrita también .

Escriba un programa en cualquier idioma, siempre que tenga soporte GUI para un sistema de ventanas (no puede ser consolas de texto, etc., y debe ser un GUI / toolkit / window).

El programa debe decir hola mundo de cualquier manera (imagen de bienvenida, barra de menú, barra de estado, título, video, cuadro de mensaje, otros elementos de widget, etc.), siempre que aparezca una ventana compatible con GUI y muestre este texto durante tres segundos . La persona que puede codificar esto en la menor cantidad de código utilizada, contada en bytes, se hará cargo del pastel.

Sut Dip
fuente
1
Los comentarios aquí se han degradado en un argumento sin sentido. Abstenerse de una discusión extendida en los comentarios; si es necesario, puede usar el chat en su lugar. Todos los comentarios han sido purgados.
Pomo de la puerta
13
No importa de dónde provenga el argumento: todos los usuarios deben evitar participar en disputas que son claramente ruidosas o que no van a ninguna parte.
Pomo de la puerta
1
¿Tiene que ser "Hello world" o puede ser "Hello_world"?
slebetman
3
Además, ¿debe salir con gracia?
slebetman
¿No especifica cómo debe ejecutarse el programa? por ejemplo, ¿tiene que iniciarse por sí mismo o puede ser algo cargado en un entorno que ya se está ejecutando?
Jordon Biondo

Respuestas:

28

Unix shell, 31 caracteres

xmessage -timeout 3 hello world

mensaje "hola mundo" con el botón "ok"

Este programa requiere la utilidad xmessage (1) de X.Org. Utiliza los widgets X Athena Widgets (Xaw) tradicionales en blanco y negro.

kernigh
fuente
Grrr ... iba a publicar uno usando timeouty zenityfue más largo ...
BenjiWiebe
@BenjiWiebe Hay una zenityrespuesta por n.1 en codegolf.stackexchange.com/a/28451/4065
kernigh
2
Puede guardar 1 byte: tiempo de espera 3 xmessage hello world
Glenn Randers-Pehrson
1
@ GlennRanders-Pehrson No puedo hacer eso, porque mi máquina no tiene timeoutcomando. ¿Quizás alguien más pueda publicar una nueva respuesta que la use?
kernigh
23

Shell y gedit - 27 caracteres

timeout 3 gedit Hello World

Si Hello World necesita mostrarse como una sola cadena, entonces sus 28 caracteres:

timeout 3 gedit Hello\ World

timeoutLa utilidad ejecuta un comando durante el tiempo especificado. Asegura que gedit se ejecute durante 3 segundos, suponiendo un tiempo de inicio mínimo.

Cualquier editor puede usarse en lugar de gedit. Si se usa un editor con un nombre más corto gvim, la longitud se puede reducir en 1 o más caracteres.

Usar un editor inicialmente pensado por el usuario 80551 .

Asheeshr
fuente
Escape the space, useHello\ World
user80551
1
@ user80551 La pregunta requiere que se muestre "Hello World" de cualquier manera , por lo que no debería ser necesario.
asheeshr
Técnicamente, eso haría que estoHello <space> <close icon> <Document icon> World
usuario80551
¿Puedes confirmar si katefuncionaría en lugar de gedit?
user80551
@ user80551 No tengo KDE instalado, pero yendo a la página de manual de Kate , no parece haber ninguna razón por la que no debería funcionar.
asheeshr
19

Applescript, 45 bytes:

No es frecuente que Applescript sea una de las respuestas más cortas:

display alert "hello world" giving up after 3

Pegue en el Editor de Applescript y ejecútelo, o ejecútelo osascripten la línea de comando:

osascript -e 'display alert "hello world" giving up after 3'

ingrese la descripción de la imagen aquí

Trauma digital
fuente
17

HTML + Javascript, 73 60 caracteres

<script>setTimeout("open('','_self','');close()",3e3)</script>Hello world

Esto funciona en Chrome, pero puede no ser portátil para otros navegadores.

Las sugerencias de los comentarios van más allá:

<body onload=open('',name=setTimeout(close,3e3))>Hello world
Greg Hewgill
fuente
Eso es mucho golf que vi. Vi esto pasar de 108caracteres a abajo 73. De repente, todo el código es visible.
Justin
@Quincunx: Entonces te perdiste las primeras iteraciones. :)
Greg Hewgill
Eso es porque estaba ocupado publicando mi propio código. :-)
Justin
2
<body onload=open('','_self'),setTimeout(close,3e3)>Hello worldparece salvar algunos caracteres más.
Ventero
1
Tiene una sugerencia de edición del usuario 3082537: guarde dos caracteres por<body onload=open('',name=setTimeout(close,3e3))>Hello world
Justin
16

script de shell, 31

No estoy seguro si califica. Requiere notify-send. Funciona al menos en Ubuntu 12.04.

notify-send -t 3000 Hello world

captura de pantalla

usuario12205
fuente
1
Probablemente no, ya que no es una ventana compatible con GUI . Desafortunadamente, el uso zenityes mucho más largo.
user80551
Sus 34 caracteres con gedit - codegolf.stackexchange.com/a/28425/8766
user80551
44
Creo que una ventana sin adornos sigue siendo una ventana. Aquí en Enlightenment, la notificación también tiene un botón X para cerrarla (pero no otras decoraciones de ventanas).
kernigh
12

shell + gedit / geany, 34

gedit Hello\ World&sleep 3;kill $!

Hola mundo en gedit

Esto supone que gedit aparece instantáneamente ya que los 3 segundos se cuentan desde el inicio de la emisión del comando. Podría ser más pequeño si hay un editor de texto GUI más corto que gedit.

geany funciona también para la misma cantidad de caracteres, solo s/gedit/geany/g

Hola mundo en geany

EDITAR: El uso timeoutes más corto. /codegolf//a/28477/8766

EDIT2: ¿Alguien puede confirmar si esto funciona kate?


fusión, 32

Si Hello Worldno se requiere exactamente , entonces meldse puede usar.

meld Hello World&sleep 3;kill $!

Hola: mundo - Meld

usuario80551
fuente
Buena idea, geditintenta abrir un archivo con este nombre incluso si no hay ningún archivo.
AL
Si utiliza gvimnecesitará sólo 33 caracteres
Avall
1
@Daniel haltsería más corto pero no sé si está permitido ser destructivo. Además, requiere permisos de root, por lo que debemos asumir que somos root o usar lo sudoque cuesta más (y necesita que el usuario escriba la contraseña).
user80551
1
Lo siento, estaba tratando de ser gracioso. Asumí que el usuario tiene permisos de root.
Daniel
1
@Daniel No hay que disculparse, este sitio se basa en la torsión más perversa de las reglas para acortar el código.
user80551
7

VBScript, 58

WScript.CreateObject("WScript.Shell").Popup"Hello world",3

captura de pantalla

usuario12205
fuente
6

Python (pygame), 87

import pygame.display as d,time
d.set_mode()
d.set_caption('Hello world')
time.sleep(3)

captura de pantalla

usuario12205
fuente
No funciona en OSX, no muestra la ventana ...
Harry Beadle
@BritishColour debería, ¿quizás es demasiado pequeño? Intente cambiar el tamaño a[999,999]
user12205
Todavía no funciona, la ventana ni siquiera aparece ...
Harry Beadle
@BritishColour Bueno, definitivamente funciona para mí. Ver aquí . ¿Quizás estaba apareciendo en el fondo o algo así?
user12205
1
Es interesante ver cómo nuestro código es básicamente idéntico, pero usa un módulo diferente. tkinterResulta ser más corto.
Justin
6

Tcl - 32 bytes

Noté que algunas de estas presentaciones, como las de shell o javascript, le permiten escribir el código en la consola. Si ese es el caso, puedo acortarlo a:

wm ti . hello\ world;af 3000 exi

Debe escribirse en la consola después de ejecutar wish. Es decir, ejecuta wishsin argumentos que te darán una consola REPL y luego escribe el código anterior. Esto hace uso del hecho de que tcl puede ser indulgente y autocompletar nombres de comandos / funciones, pero solo en modo interactivo. Entonces eso afrealmente ejecuta el aftercomando y se exiejecuta exit. Yo queria usarex pero mi sistema tiene el exeditor instalado.


Envío original - 36 bytes

wm ti . hello\ world;after 3000 exit

Ejecutar usando en wishlugar de tclsh.

slebetman
fuente
5

52 51 caracteres con Mathematica

(Espero que cuente como compatible con GUI).

NotebookClose/@{CreateDialog@"Hello world",Pause@3}

Código de Mathematica GUI Golf

akater
fuente
4

Java, 136 bytes

class F{public static void main(String[]a)throws Exception{new java.awt.Frame("Hello World").show();Thread.sleep(3000);System.exit(0);}}

Muestra el mensaje Hello Worldcomo el título de un marco. Después de 3segundos, el programa se cierra.

Se ve como esto:

ingrese la descripción de la imagen aquí

Arrástrelo más grande:

ingrese la descripción de la imagen aquí


Código ampliado (es decir, legible):

class F {

    public static void main(String[] a) throws Exception {
        new java.awt.Frame("Hello World").show();
        Thread.sleep(3000);
        System.exit(0);
    }

}
Justin
fuente
Puede usar en enumlugar de classguardar otro personaje.
Riking
@Riking no funciona.
Justin
De Verdad? Podría haber jurado que realmente usé eso una vez ... Dang.
Riking
4

R, 44

x11(ti="Hello World");Sys.sleep(3);dev.off()

ingrese la descripción de la imagen aquí

silbido
fuente
4

PowerShell - 63 52

(new-object -c wscript.shell).popup('Hello World',3)
Rynant
fuente
4

Visual FoxPro - 23 caracteres

WAIT"hello world"TIME 3

Hola mundo en VFP

Esto abusa del hecho de que VFP permite no poner un espacio entre la cadena a imprimir (que acabo de descubrir) y que permite acortar cada palabra clave hasta sus primeros 4 caracteres.

Versión sin golf:

WAIT "hello world" TIMEOUT 3
Alejandro
fuente
4

GTK +, 47 45

zenity --info --text=Hello\ World --timeout=3

Hola Mundo


Versión anterior (puntaje 47):

zenity --info --title="Hello World" --timeout=3

Hola Mundo

Por alguna razón, Zenity muestra un texto que se puede traducir a medida que se realizan todas las actualizaciones .

Alabama
fuente
1
Solo para agregar información adicional, todas las actualizaciones están completas. es lo que obtengo en inglés.
user12205
1
Puedes reducir un personaje cambiando --titlea--text
asheeshr
1
Puede cambiar "Hello World"aHello\ World
kernigh
Gracias AsheeshR y kernigh, tengo 2 caracteres menos con tu ayuda.
AL
3

C, 151 caracteres

#include<allegro.h>
main(){textout_ex(screen,font,"Hello World",0,0,7,set_gfx_mode('SAFE',8,8,install_timer(),
allegro_init()));rest(3e3);}END_OF_MAIN()

No es la respuesta más pequeña. Me gusta, aunque.

Oberon
fuente
Buen trabajo. & # 32 & # 32 & # 32 & # 32
Sut Dip
¿Cómo se compila eso? 'SAFE'No es un solo personaje.
heinrich5991
@ heinrich5991 SAFE probablemente se define en allegro.h como un solo carácter.
Adam Davis
@AdamDavis C evalúa macros en constantes de caracteres?
heinrich5991
1
Sin macro, en realidad es solo un entero de 32 bits escrito como cuatro bytes en lo que se llama notación constante de múltiples caracteres, una forma demasiado inteligente para su propio bien de escribir cadenas de etiquetas de cuatro bytes. Apple lo usó para números mágicos de tipo archivo una vez. Los compiladores hoy en día lo admiten pero emiten una advertencia. Ejemplo para los no creyentes
Wander Nauta
3

C # 101 151

Seguramente, esta no será la respuesta más corta (ya que hay otras respuestas buenas que son mucho más cortas), pero codegolf.SE necesita muchas más contribuciones de C # en mi opinión.

using t=System.Threading;class P{static void Main(){using(t.Tasks.Task.Run(()=>System.Windows.MessageBox.Show("hello world"))){t.Thread.Sleep(3000);}}}

C # 121

Una alternativa basada en la respuesta de Bob. , pero con WPF en lugar de WinForms:

class P{static void Main(){new System.Windows.Window(){Title="hello world"}.Show();System.Threading.Thread.Sleep(3000);}}

Guarda 3 caracteres gracias al espacio de nombres más corto ...

Num lock
fuente
Debe incluir las usingdeclaraciones en el recuento de caracteres. Alternativamente, podría omitirlos, pero luego tendría que hacer cosas como System.Windows.Forms.MessageBox.Show(un poco menos de caracteres si es solo un uso). Como su código es actualmente, no se compilará ni se ejecutará.
Bob
Bueno, simplemente asumí que no era necesario porque veo muchas respuestas en C, C ++, C #, Java, etc. sin usar / imports / lo que sea. Sin embargo, lo editaré. Por cierto, ¿hay alguna regla explícita sobre esto? Seguro que se compilaría y se ejecutaría con la configuración de compilación y / o compilador correctos. (p. ej., resolver utilizando directivas en tiempo de compilación, siempre que puedan resolverse de forma distinta)
Num Lock
Es un poco gris; por ejemplo, tuve que agregar una referencia a System.Windows.Forms.dll, que es parte de la línea de comandos de compilación / configuración de msbuild. Sin embargo, el consenso general parece ser que cuando se solicita un programa completo, using/ import/ #include/ etc. donde sea necesario para que el código se compile y se ejecute, e intentar usar trucos de la línea de comandos del compilador para esquivar eso es malo.
Bob
Lo tendré en cuenta. Gracias por las referencias
Num Lock
3

Lote (24)

msg/time:3 * hello world

Probado en Windows 7, pero debería funcionar en cualquier versión de Windows basada en NT, suponiendo que tenga MSG.EXE en su carpeta System32.

EDITAR: aparentemente MSG.EXE no está disponible de forma predeterminada en las versiones domésticas de Windows. En Windows 7, por ejemplo, esto solo está disponible en las ediciones Ultimate o Business. Sin embargo, puede copiar el archivo a su carpeta System32 y hacer que funcione. (También debe copiar el archivo MSG.EXE.MUI apropiado para obtener los mensajes de error adecuados, pero mi "script" funciona sin ellos).

También debe instalar el software para que la mayoría de estas otras respuestas funcionen, así que no creo que deba ser un descalificador.

trlyly
fuente
¿Por qué esto no llama a un programa nombrado time:3en una carpeta llamada msgen el directorio actual?
gato
@cat utiliza Windows \.
jimmy23013
@jimmy wow eso fue hace un año. yo sólo estoy acostumbrado a escribir / en todas las plataformas oops
gato
@ jimmy23013 Pero Windows /también es compatible
MilkyWay90
@ MilkyWay90 Windows admite /en algunos lugares, pero en cmd, /xxxse interpreta como un argumento.
jimmy23013
2

APL (40)

X.Close⊣⎕DL 3⊣'X'⎕WC'Form' 'Hello World'
marinus
fuente
39:X.Close⊣⎕DL⍴⍕'X'⎕WC'Form' 'Hello World'
Adám
2

Lua + LÖVE, 67 bytes

l=love l.window.setTitle"hello world"l.timer.sleep(3)l.event.quit()

ingrese la descripción de la imagen aquí

Buscador14491
fuente
2

Perl en Windows (56)

use Win32;fork?kill+sleep+3,$$:Win32'MsgBox"Hello World"
perl chino goth
fuente
Use '-MWin32' para guardar cuatro bytes
DarkHeart
2

Perl 5, 47

Usando Perl / Tk :

perl -MTk -e'alarm 3;tkinit-title,"Hello World!";MainLoop'
#     123    45678901234567890123456789012345678901234567
Matías
fuente
Parece que se requiere el módulo Tk.
AL
2
Sí, por supuesto que necesita un kit de herramientas GUI. Elijo Tk por tkinit ().
Matthias
Cuento 44 bytes. ¿Estás contando la -MTkbandera también?
slebetman
@slebetman Sí, cuento que como 3 caracteres, agregué el recuento a la publicación.
Matthias
1
@ n.1 Lo agregué debajo del título con un enlace a la documentación de CPAN del módulo Tk. Ninguno de los módulos principales de Perl es un módulo GUI, por lo tanto, siempre debe instalar módulos externos. Lo siento, esto fue claro para mí (ya que estoy trabajando con Perl con bastante frecuencia), pero tienes razón, es sorprendente para aquellos que trabajan en otros idiomas.
Matthias
2

Vista de Rebol (r3gui), 49

view/no-wait[title"hello world"]wait 3 unview/all

"hello world" de Rebol 3 Ver

Sin golf:

view/no-wait [title "hello world"]
wait 3
unview/all
draegtun
fuente
2

Procesamiento, 77

int x=millis();void draw(){text("Hello world",0,9);if(millis()>x+3e3)exit();}

Captura de pantalla:

ingrese la descripción de la imagen aquí

Edición 1: la posición Y del texto puede ser 9 en lugar de 10, como señaló @ace.

Editar 2: 3000 se puede representar como 3e3 para eliminar un personaje, también notado por @ace

segfaultd
fuente
3
Usar 9 para la posición Y en lugar de 10 funciona para mí.
usuario12205
Acabo de editar el código. ¡Gracias!
segfaultd
3
Acabo de dar cuenta que puede utilizar 3e3en lugar de 3000salvar a uno más Char
user12205
2

bash + ImageMagick (36 bytes)

timeout 3 display label:Hello\ world

Probado en Ubuntu 14.04 LTS y en Fedora 20.

Más bonito, pero 10 bytes más grande:

timeout 3 display -size 800 label:Hello\ world
Glenn Randers-Pehrson
fuente
2

CMD / Lote: 33 bytes

Creo que la ventana en la que se ejecuta el terminal CMD de Windows cuenta como compatible con GUI.

start "Hello world" cmd /csleep 3

Si no tiene el sleepcomando en su sistema, puede usar el timeoutque viene por defecto en Windows 7. Para dos bytes más.

start "Hello world" cmd /ctimeout 3

Inicia una nueva ventana CMD con el título "Hello World" ( NO muestra en el terminal en sí, pero como el título de la ventana GUI en la que se ejecuta el terminal), esta ventana se cerrará tan pronto como se hayan ejecutado todos los comandos analizados, así que después sleep 3o timeout 3ha completado

La ventana se ve así:

Tipo de

Nota; startejecuta los comandos dados en una nueva ventana, no la ventana desde la que está ejecutando los comandos anteriores.

carne sin carne
fuente
Cambiarlo a cmd "Hello world" cmd /ctimeout 3Hello World pone a Hello World en la barra de título durante 3 segundos, pero eso probablemente no cuenta.
Chris Kent
1
No creo que lo haga, porque no genera una nueva ventana. La pregunta dice que aparece una ventana compatible con GUI (parece ser la palabra clave), lo que implica que tiene que mostrar una nueva ventana. Buena idea sin embargo.
Unclemeat
start "Hello world"Usted señor es un genio.
user8397947
1

Python 3, 83 72 bytes

from tkinter import*
f=Tk()
f.wm_title("Hello World")
f.after(3000,exit)

Guardar bytes usando tkinter .

El antiguo método agregaba una Labela la trama. Este método establece el título del marco en Hello World. f.after(3000,exit)se ejecuta exit()después de que 3000hayan pasado milisegundos.

Justin
fuente
Misma idea, módulo diferente: turtletiene menos bytes. = D codegolf.stackexchange.com/a/28548/14506
daviewales
1

Cobra - 180

use System.Windows.Forms
use System.Threading
class M
    def main
        Thread(ref .w).start
        Thread.sleep(3000)
        Environment.exit(0)
    def w
        MessageBox.show("hello world")
Οurous
fuente
1

Rubí [con zapatos] (44 caracteres)

Shoes.app{para "Hello world";every(3){exit}}

aplicación osx

Fabien Sa
fuente
1

C # 124

Lejos de lo más corto :(

class P{static void Main(){new System.Windows.Forms.Form(){Text="Hello World"}.Show();System.Threading.Thread.Sleep(3000);}}
Mover
fuente