Scrivi un programma GUI di Hello World che si chiude dopo tre secondi


24

Leggi le regole e anche le aree in grassetto .

Scrivi un programma in qualsiasi lingua, purché abbia il supporto della GUI per un sistema a finestre (non può essere console di testo, ecc., E deve essere una GUI / toolkit / finestra).

Il programma deve salutare il mondo in qualsiasi modo (immagine splash, barra dei menu, barra di stato, titolo, video, finestra di messaggio, altri elementi del widget, ecc.), Purché venga visualizzata una finestra conforme alla GUI e mostri questo testo per tre secondi . La persona che può codificare questo nel minor numero di codice utilizzato, conteggiato in byte, prenderà la torta.


1
I commenti qui si sono degradati in una discussione inutile. Si prega di astenersi da una discussione estesa nei commenti; se necessario, puoi usare la chat . Tutti i commenti sono stati eliminati.
Maniglia della porta

13
Non importa da dove provenga l'argomento: tutti gli utenti dovrebbero evitare di partecipare a controversie che sono chiaramente rumorose o che non vanno da nessuna parte.
Maniglia della porta

1
Deve essere "Hello world" o può essere "Hello_world"?
Slebetman,

3
Inoltre, deve uscire con garbo?
slebetman,

non specifichi come deve essere eseguito il programma? per esempio, deve essere avviato da solo o può essere caricato in un ambiente già in esecuzione?
Jordon Biondo,

Risposte:


28

Shell Unix, 31 caratteri

xmessage -timeout 3 hello world

message "hello world" with button "okay"

Questo programma richiede l' utilità xmessage (1) di X.Org. Utilizza i tradizionali X Athena Widgets (Xaw) in bianco e nero.


Grrr ... Stavo per postare uno utilizzando timeoute zenity, ma è stato più a lungo ...
BenjiWiebe

@BenjiWiebe C'è una zenityrisposta del n. 1 su codegolf.stackexchange.com/a/28451/4065
kernigh

2
È possibile salvare 1 byte: timeout 3 xmessage hello world
Glenn Randers-Pehrson

1
@ GlennRanders-Pehrson Non posso farlo, perché la mia macchina non ha alcun timeoutcomando. Forse qualcun altro può pubblicare una nuova risposta che la utilizza?
kernigh,

23

Shell e gedit - 27 caratteri

timeout 3 gedit Hello World

Se Hello World deve essere visualizzato come una singola stringa, i suoi 28 caratteri:

timeout 3 gedit Hello\ World

timeoutl'utilità esegue un comando per la durata specificata. Assicura che gedit funzioni per 3 secondi, presupponendo un tempo di avvio minimo.

Qualsiasi editor può essere utilizzato al posto di gedit. Se si utilizza un editor con nomi più brevi come gvim, la lunghezza può essere ridotta di 1 o più caratteri.

L'uso di un editor inizialmente pensato da user80551 .


Sfuggire allo spazio, utilizzareHello\ World
user80551

1
@ user80551 La domanda richiede che "Hello World" sia visualizzato in qualsiasi modo , quindi non dovrebbe essere necessario.
asheeshr,

Tecnicamente, ciò renderebbe questoHello <space> <close icon> <Document icon> World
user80551

Puoi confermare se katefunzionerebbe invece di gedit?
user80551

@ user80551 Non hai installato KDE, ma passando dalla pagina man di Kate , non sembra esserci alcun motivo per cui non dovrebbe funzionare.
asheeshr,

19

Applescript, 45 byte:

Non spesso Applescript è una delle risposte più brevi:

display alert "hello world" giving up after 3

Incolla nell'Editor di Applescript ed esegui, oppure esegui usando osascriptdalla riga di comando:

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

enter image description here


17

HTML + Javascript, 73 60 caratteri

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

Funziona in Chrome, ma potrebbe non essere portabile su altri browser.

I suggerimenti dei commenti vanno oltre:

<body onload=open('',name=setTimeout(close,3e3))>Hello world

Ho visto un sacco di golf. Ho visto passare da 108caratteri a 73. Improvvisamente, l'intero codice è visibile.
Giustino,

@Quincunx: allora hai perso le prime iterazioni. :)
Greg Hewgill,

Questo perché ero impegnato a pubblicare il mio codice. :-)
Giustino

2
<body onload=open('','_self'),setTimeout(close,3e3)>Hello worldsembra salvare qualche altro personaggio.
Ventero,

1
Hai un suggerimento di modifica da user3082537: salva due caratteri entro<body onload=open('',name=setTimeout(close,3e3))>Hello world
Justin

16

shell script, 31

Non sono sicuro se si qualifica. Richiede notify-send. Funziona almeno su Ubuntu 12.04.

notify-send -t 3000 Hello world

screenshot


1
Probabilmente non perché non è una finestra conforme alla GUI . Sfortunatamente, l'utilizzo zenityè molto più lungo.
user80551

I suoi 34 caratteri con gedit - codegolf.stackexchange.com/a/28425/8766
user80551

4
Credo che una finestra senza decorazioni per finestre sia ancora una finestra. Qui in Enlightenment, la notifica ha anche un pulsante X per chiuderlo (ma non altre decorazioni per finestre).
kernigh,

12

shell + gedit / geany, 34

gedit Hello\ World&sleep 3;kill $!

Hello World in gedit

Ciò presuppone che gedit venga visualizzato all'istante poiché i 3 secondi vengono contati dall'inizio del comando. Potrebbe essere più piccolo se c'è un editor di testo della GUI più corto di gedit.

geany funziona anche per lo stesso numero di caratteri, giusto s/gedit/geany/g

Hello World in geany

EDIT: l'utilizzo timeoutè più breve. /codegolf//a/28477/8766

EDIT2: Qualcuno può confermare se funziona kate?


fusione, 32

Se esattamente Hello Worldnon è richiesto, meldpuò essere utilizzato.

meld Hello World&sleep 3;kill $!

Hello : World - Meld


Bella idea, geditprova ad aprire un file con questo nome anche se non ci sono file.
AL

Se lo usi gvim, avrai bisogno solo di 33 caratteri
media

1
@Daniel haltsarebbe più breve ma non so se è permesso essere distruttivi. Inoltre, richiede i permessi di root, quindi o dobbiamo presumere che siamo root o utilizziamo ciò sudoche costa di più (e richiede all'utente di digitare la password).
user80551

1
Scusa, stavo cercando di essere divertente. Supponevo che l'utente avesse i permessi di root.
Daniel,

1
@Daniel Non c'è bisogno di essere dispiaciuto, questo sito si basa sul più malvagio intreccio delle regole per abbreviare il tuo codice.
user80551

7

VBScript, 58

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

immagine dello schermo


6

Python (pygame), 87

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

immagine dello schermo


Non funziona su OSX, non mostra la finestra ...
Harry Beadle,

@BritishColour dovrebbe, forse è troppo piccolo? Prova a cambiare la dimensione in[999,999]
user12205

Ancora non funzionante, la finestra non appare nemmeno ...
Harry Beadle,

@BritishColour Beh, sicuramente funziona per me. Vedi qui . Forse si stava presentando sullo sfondo o qualcosa del genere?
user12205

1
È interessante come il nostro codice sia sostanzialmente identico, ma utilizza un modulo diverso. tkinterrisulta essere più breve.
Giustino,

6

Tcl - 32 byte

Ho notato che alcuni di questi invii, come quelli shell o javascript, consentono di digitare il codice nella console. In tal caso, posso accorciarlo a:

wm ti . hello\ world;af 3000 exi

Deve essere digitato nella console dopo aver eseguito wish. Significato, eseguire wishsenza argomenti che ti darà una console REPL e quindi digitare il codice sopra. Questo fa uso del fatto che tcl può essere clemente e completare automaticamente i nomi di comando / funzione ma solo in modalità interattiva. In questo afmodo il aftercomando exiviene effettivamente eseguito ed eseguito exit. Volevo usare exma il mio sistema ha l' exeditor installato.


Invio originale - 36 byte

wm ti . hello\ world;after 3000 exit

Esegui utilizzando wishanziché tclsh.


5

52 51 caratteri con Mathematica

(Spero che contenga come conforme alla GUI.)

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

Mathematica GUI Golf code


4

Java, 136 byte

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

Visualizza il messaggio Hello Worldcome titolo di una cornice. Dopo alcuni 3secondi, il programma si chiude.

Somiglia a questo:

inserisci qui la descrizione dell'immagine

Trascinalo più grande:

inserisci qui la descrizione dell'immagine


Codice espanso (cioè leggibile):

class F {

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

}

Puoi usare enuminvece di classsalvare un altro personaggio.
Riking

@Riking non funziona.
Giustino,

Veramente? Avrei potuto giurare di averlo usato una volta ... Dang.
Riking


4

R, 44

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

inserisci qui la descrizione dell'immagine


4

PowerShell - 63 52

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

4

Visual FoxPro - 23 caratteri

WAIT"hello world"TIME 3

Ciao mondo in VFP

Ciò abusa del fatto che VFP consente di non mettere uno spazio tra la stringa da stampare (che ho appena scoperto) e che consente di abbreviare ogni parola chiave fino ai suoi primi 4 caratteri.

Versione non golfata:

WAIT "hello world" TIMEOUT 3

4

GTK +, 47 45

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

Ciao mondo


Vecchia versione (punteggio 47):

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

Ciao mondo

Per qualche ragione, zenity mostra un testo che può essere tradotto mentre tutti gli aggiornamenti sono stati eseguiti .


1
Solo per aggiungere alcune informazioni extra, tutti gli aggiornamenti sono completi. è quello che ottengo in inglese.
user12205

1
Puoi ridurre un personaggio cambiando --titlein--text
asheeshr

1
Puoi passare "Hello World"aHello\ World
kernigh

Grazie AsheeshR e kernigh, ho 2 personaggi in meno con il tuo aiuto.
AL

3

C, 151 caratteri

#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()

Non la risposta più piccola. Mi piace comunque.


Buon lavoro. & # 32 & # 32 & # 32 & # 32
Sut Dip

Come si compila? 'SAFE'non è un singolo carattere.
heinrich5991,

@ heinrich5991 SAFE è probabilmente definito in allegro.h come un singolo carattere.
Adam Davis,

@AdamDavis C valuta le macro nelle costanti dei caratteri?
heinrich5991

1
Nessuna macro, in realtà è solo un numero intero a 32 bit scritto come quattro byte in quella che viene chiamata notazione costante multi-carattere, un modo troppo intelligente per il suo stesso bene per scrivere stringhe di tag a quattro byte. Apple lo ha usato una volta per i numeri magici del tipo di file. Oggi i compilatori lo supportano ma emettono un avviso. Esempio per i non credenti
vagare per Nauta

3

C # 101 151

Questa non sarà sicuramente la risposta più breve (dal momento che ci sono già altre buone risposte più brevi) ma codegolf.SE ha bisogno di molti più contributi C # secondo me!

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

Un'alternativa basata su risposta di Bob , ma con WPF invece di WinForms:

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

Salva 3 caratteri grazie allo spazio dei nomi più breve ...


Devi includere le usingdichiarazioni nel conteggio dei personaggi. In alternativa, potresti lasciarli fuori ma poi dovresti fare cose del genere System.Windows.Forms.MessageBox.Show(leggermente meno personaggi se è un solo uso). Allo stato attuale del codice, non verrà compilato o eseguito.
Bob,

Bene, ho solo pensato che non fosse necessario perché vedo molte risposte in C, C ++, C #, Java ecc. Senza usare / imports / qualunque cosa. Lo modificherò, comunque. A proposito, c'è qualche regola esplicita su questo? Sicuro che si compili ed eseguirà con le giuste impostazioni di compilazione e / o compilatore. (es. risolvendo usando le direttive in fase di compilazione, purché possano essere risolte distinte)
Num Lock


È un po 'grigio - ad esempio, ho dovuto aggiungere un riferimento System.Windows.Forms.dll, che fa parte della riga di comando di configurazione / compilazione di msbuild. Tuttavia, il consenso generale sembra essere che quando viene richiesto un programma completo, using/ import/ #include/ ecc. laddove necessario per la compilazione e l'esecuzione del codice, è necessario tentare di utilizzare i trucchi della riga di comando del compilatore per schivare il problema.
Bob,

Lo terrò a mente. Grazie per i riferimenti.
Num Lock,

3

Lotto (24)

msg/time:3 * hello world

Testato su Windows 7, ma dovrebbe funzionare su qualsiasi versione di Windows basata su NT, supponendo che tu abbia MSG.EXE nella cartella System32.

EDIT: Apparentemente MSG.EXE non è disponibile per impostazione predefinita nelle versioni home di Windows. Su Windows 7, ad esempio, questo è disponibile solo nelle versioni Ultimate o Business. Tuttavia, è possibile copiare il file nella cartella System32 e farlo funzionare. (È inoltre necessario copiare il file MSG.EXE.MUI appropriato per ottenere i messaggi di errore corretti, ma il mio "script" funziona senza di essi.)

Devi anche installare software per far funzionare la maggior parte di queste altre risposte, quindi non credo che dovrebbe essere un squalificatore.


Perché questo non chiama un programma chiamato time:3in una cartella chiamata msgnella directory corrente?
cat

@cat utilizza Windows \.
jimmy23013,

@jimmy wow che è stato un anno fa. sono solo abituato a scrivere / su tutte le piattaforme ora oops
cat

@ jimmy23013 Ma Windows supporta /anche
MilkyWay90

@ MilkyWay90 Windows supporta /in alcuni punti, ma in cmd, /xxxviene interpretato come un argomento.
jimmy23013,

2

APL (40)

X.Close⊣⎕DL 3⊣'X'⎕WC'Form' 'Hello World'

39:X.Close⊣⎕DL⍴⍕'X'⎕WC'Form' 'Hello World'
Adám,

2

Lua + LÖVE, 67 byte

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

inserisci qui la descrizione dell'immagine



2

Perl 5, 47

Usando Perl / Tk :

perl -MTk -e'alarm 3;tkinit-title,"Hello World!";MainLoop'
#     123    45678901234567890123456789012345678901234567

Sembra che sia richiesto il modulo Tk.
AL

2
Sì, ovviamente hai bisogno di alcuni toolkit GUI. Ho scelto Tk per via di tkinit ().
Matthias,

Conto 44 byte. Anche tu stai contando la -MTkbandiera?
slebetman,

@slebetman Sì, lo conto come 3 caratteri, ho aggiunto il conteggio al post.
Matthias,

1
@ n. 1 L'ho aggiunto sotto il titolo con un collegamento alla documentazione CPAN del modulo Tk. Nessuno dei moduli core perl è un modulo GUI, quindi è sempre necessario installare moduli esterni. Mi dispiace, questo mi è stato chiaro (dato che sto lavorando con Perl abbastanza spesso), ma hai ragione, è sorprendente per coloro che lavorano in altre lingue.
Matthias,

2

Rebol View (r3gui), 49

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

"ciao mondo" da Rebol 3 View

Ungolfed:

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

2

Elaborazione, 77

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

Immagine dello schermo:

inserisci qui la descrizione dell'immagine

Modifica 1: la posizione Y del testo può essere 9 anziché 10, come notato da @ace.

Modifica 2: 3000 può essere rappresentato come 3e3 per radere via un carattere, notato anche da @ace


3
Usare 9 per la posizione Y invece di 10 funziona per me.
user12205,

Ho appena modificato il codice. Grazie!
segfaultd,

3
Ho appena notato che è possibile utilizzare 3e3invece di 3000salvare un altro carattere
user12205

2

bash + ImageMagick (36 byte)

timeout 3 display label:Hello\ world

Testato su Ubuntu 14.04 LTS e su Fedora 20.

Aspetto più bello, ma 10 byte più grandi:

timeout 3 display -size 800 label:Hello\ world

2

CMD / Lotto - 33 byte

Credo che la finestra in cui viene eseguito il terminale CMD di Windows sia conforme alla GUI.

start "Hello world" cmd /csleep 3

Se non hai il sleepcomando sul tuo sistema, puoi usare quello timeoutche viene predefinito in Windows 7. Per altri due byte.

start "Hello world" cmd /ctimeout 3

Avvia una nuova finestra CMD con il titolo "Hello World" ( NON visualizzato nel terminale stesso, ma come titolo della finestra della GUI in cui è in esecuzione il terminale), questa finestra si chiuderà non appena tutti i comandi analizzati sono stati eseguiti, quindi dopo sleep 3o timeout 3ha completato.

La finestra appare così:

tipo

Nota; startesegue i comandi dati in una nuova finestra, non la finestra da cui si stanno eseguendo i comandi sopra.


Modificandolo in cmd "Hello world" cmd /ctimeout 3Hello world nella barra del titolo per 3 secondi, ma probabilmente non conta.
Chris Kent,

1
Non credo, perché non genera una nuova finestra. La domanda dice che appare una finestra conforme alla GUI (sembra essere la parola chiave), il che implica che deve visualizzare una nuova finestra. Buona idea però.
carne

start "Hello world"Lei, signore, è un genio.
user8397947

1

Python 3, 83 72 byte

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

Salvare byte utilizzando tkinter.

Il vecchio metodo ha aggiunto Labela al frame. Questo metodo imposta il titolo del frame su Hello World. f.after(3000,exit)viene eseguito exit()dopo che 3000sono trascorsi millisecondi.


Stessa idea, modulo diverso: turtleha meno byte. = 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")

1

Ruby [con scarpe] (44 caratteri)

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

app osx


1

C # 124

Lontano dal più breve :(

class P{static void Main(){new System.Windows.Forms.Form(){Text="Hello World"}.Show();System.Threading.Thread.Sleep(3000);}}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.