Tulis program GUI halo dunia yang menutup sendiri setelah tiga detik

24

Silakan baca aturannya, dan area yang tebal juga .

Tulis sebuah program dalam bahasa apa pun, asalkan memiliki dukungan GUI untuk sistem jendela (tidak bisa berupa konsol teks, dll., Dan harus berupa GUI / toolkit / jendela).

Program harus menyapa dunia dengan cara apa pun (percikan gambar, bilah menu, bilah status, judul, video, kotak pesan, hal-hal widget lainnya, dll.), Selama jendela yang sesuai dengan GUI muncul dan menampilkan teks ini selama tiga detik . Orang yang dapat mengkode ini dalam jumlah kode yang paling sedikit digunakan, dihitung dalam byte, akan mengambil kue.

Sut Dip
sumber
1
Komentar di sini telah menurun menjadi argumen yang tidak berguna. Harap jangan diskusi panjang dalam komentar; jika perlu, Anda dapat menggunakan obrolan . Semua komentar telah dihapus.
Gagang Pintu
13
Tidak masalah dari mana argumen itu berasal - semua pengguna harus menghindari berpartisipasi dalam perselisihan yang jelas-jelas berisik atau ke mana-mana.
Gagang Pintu
1
Apakah itu harus "Hello World" atau bisakah "Hello_world"?
slebetman
3
Juga, haruskah ia keluar dengan anggun?
slebetman
Anda tidak menentukan bagaimana program harus dijalankan? misalnya apakah itu harus dimulai sendiri atau dapatkah itu sesuatu yang dimuat di lingkungan yang sudah berjalan?
Jordon Biondo

Jawaban:

28

Unix shell, 31 karakter

xmessage -timeout 3 hello world

pesan "hello world" dengan tombol "oke"

Program ini membutuhkan utilitas xmessage (1) dari X.Org. Ini menggunakan X Athena Widgets (Xaw) hitam-putih tradisional.

kernigh
sumber
Grrr ... Saya akan memposting satu menggunakan timeoutdan zenitytapi itu lebih lama ...
BenjiWiebe
@BenjiWiebe Ada zenityjawaban oleh n.1 di codegolf.stackexchange.com/a/28451/4065
kernigh
2
Anda dapat menyimpan 1 byte: timeout 3 xmessage hello world
Glenn Randers-Pehrson
1
@ GlennRanders-Pehrson Saya tidak bisa melakukan itu, karena mesin saya tidak memiliki timeoutperintah. Mungkin orang lain dapat memposting jawaban baru yang menggunakannya?
kernigh
23

Shell dan gedit - 27 karakter

timeout 3 gedit Hello World

Jika Hello World perlu ditampilkan sebagai string tunggal, maka 28 karakternya:

timeout 3 gedit Hello\ World

timeoututilitas menjalankan perintah untuk durasi yang ditentukan. Ini memastikan bahwa gedit berjalan selama 3 detik, dengan asumsi waktu startup minimal.

Editor apa pun dapat digunakan sebagai pengganti gedit. Jika editor bernama lebih pendek digunakan seperti gvim, panjangnya dapat dikurangi dengan 1 karakter atau lebih.

Menggunakan editor yang awalnya dipikirkan oleh user80551 .

asheeshr
sumber
Escape the space, gunakanHello\ World
user80551
1
@ user80551 Pertanyaan ini membutuhkan "Hello World" untuk ditampilkan dengan cara apa pun , jadi itu tidak perlu.
asheeshr
Secara teknis, itu akan membuat iniHello <space> <close icon> <Document icon> World
user80551
Bisakah Anda mengonfirmasi apakah kateakan berhasil gedit?
user80551
@ user80551 Jangan menginstal KDE, tetapi pergi dengan halaman manual Kate , sepertinya tidak ada alasan mengapa itu tidak bekerja.
asheeshr
19

Applescript, 45 byte:

Tidak jarang Applescript adalah salah satu jawaban yang lebih pendek:

display alert "hello world" giving up after 3

Rekatkan ke Editor Applescript dan jalankan, atau jalankan menggunakan osascriptpada baris perintah:

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

masukkan deskripsi gambar di sini

Trauma Digital
sumber
17

HTML + Javascript, 73 60 karakter

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

Ini berfungsi di Chrome, tetapi mungkin tidak portabel untuk peramban lain.

Saran dari komentar lebih lanjut:

<body onload=open('',name=setTimeout(close,3e3))>Hello world
Greg Hewgill
sumber
Itu banyak golf yang kulihat. Saya melihat ini dari 108chars ke 73. Tiba-tiba, seluruh kode terlihat.
Justin
@ Quincunx: Anda melewatkan beberapa iterasi pertama. :)
Greg Hewgill
Itu karena saya sibuk memposting kode saya sendiri. :-)
Justin
2
<body onload=open('','_self'),setTimeout(close,3e3)>Hello worldtampaknya menyimpan beberapa karakter lagi.
Ventero
1
Anda memiliki saran edit dari pengguna3082537: simpan dua karakter oleh<body onload=open('',name=setTimeout(close,3e3))>Hello world
Justin
16

skrip shell, 31

Tidak yakin apakah memenuhi syarat. Membutuhkan notify-send. Paling tidak berfungsi di Ubuntu 12.04.

notify-send -t 3000 Hello world

tangkapan layar

pengguna12205
sumber
1
Mungkin tidak karena itu bukan jendela yang sesuai dengan GUI . Sayangnya, menggunakan zenitylebih lama.
user80551
34 karakternya dengan gedit - codegolf.stackexchange.com/a/28425/8766
user80551
4
Saya percaya bahwa jendela tanpa dekorasi jendela masih berupa jendela. Di sini, di Pencerahan, notifikasi juga memiliki tombol X untuk menutupnya (tetapi tidak ada dekorasi jendela lainnya).
kernigh
12

shell + gedit / geany, 34

gedit Hello\ World&sleep 3;kill $!

Halo Dunia di gedit

Ini mengasumsikan bahwa gedit muncul secara instan sejak 3 detik dihitung sejak awal mengeluarkan perintah. Bisa lebih kecil jika ada editor teks GUI lebih pendek dari gedit.

geany berfungsi juga untuk jumlah karakter yang sama, hanya s/gedit/geany/g

Halo Dunia dalam geany

EDIT: Menggunakan timeoutlebih pendek. /codegolf//a/28477/8766

EDIT2: Adakah yang bisa mengkonfirmasi jika ini bekerja dengan kate?


berbaur, 32

Jika sebenarnya Hello Worldtidak diperlukan, maka meldbisa digunakan.

meld Hello World&sleep 3;kill $!

Halo: Dunia - Meld

pengguna80551
sumber
Ide bagus, geditcoba buka file dengan nama ini walaupun tidak ada file.
AL
Jika Anda menggunakannya gvimhanya perlu 33 karakter
avall
1
@Aniel haltakan lebih pendek tapi saya tidak tahu apakah menjadi destruktif diperbolehkan. Selain itu, ini memerlukan izin root sehingga kami harus berasumsi bahwa kami root atau menggunakan sudoyang harganya lebih mahal (dan membutuhkan pengguna untuk mengetikkan kata sandi).
user80551
1
Maaf, saya mencoba untuk menjadi lucu. Saya berasumsi pengguna memiliki izin root.
Daniel
1
@Daniel Tidak perlu minta maaf, situs ini didasarkan pada perputaran aturan yang paling jahat untuk membuat kode Anda lebih pendek.
user80551
7

VBScript, 58

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

tangkapan layar

pengguna12205
sumber
6

Python (pygame), 87

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

tangkapan layar

pengguna12205
sumber
Tidak bekerja di OSX, tidak menampilkan jendela ...
Harry Beadle
@BritishColour seharusnya, mungkin itu terlalu kecil? Coba ubah ukurannya menjadi[999,999]
user12205
Masih tidak berfungsi, jendela bahkan tidak muncul ...
Harry Beadle
@BritishColour Ya pasti cocok untuk saya. Lihat di sini . Mungkin itu muncul di latar belakang atau sesuatu?
user12205
1
Sangat menarik bagaimana kode kami pada dasarnya identik, tetapi menggunakan modul yang berbeda. tkinterternyata lebih pendek.
Justin
6

Tcl - 32 byte

Saya perhatikan bahwa beberapa kiriman ini, seperti shell atau javascript, memungkinkan Anda untuk mengetik kode ke konsol. Jika itu masalahnya saya dapat mempersingkat menjadi:

wm ti . hello\ world;af 3000 exi

Harus diketik ke konsol setelah menjalankan keinginan. Artinya, jalankan wishtanpa argumen yang akan memberi Anda konsol REPL dan kemudian ketik kode di atas. Ini memanfaatkan fakta bahwa tcl dapat lunak dan nama perintah / fungsi autocomplete tetapi hanya dalam mode interaktif. Jadi itu afbenar - benar menjelaskan afterperintah dan eximengeksekusi exit. Saya ingin menggunakan extetapi sistem saya memiliki exeditor diinstal.


Pengiriman asli - 36 byte

wm ti . hello\ world;after 3000 exit

Jalankan menggunakan wishbukan tclsh.

Slebetman
sumber
5

52 51 karakter dengan Mathematica

(Semoga ini dianggap sebagai yang sesuai dengan GUI.)

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

Kode Golf GUI Mathematica

akater
sumber
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);}}

Menampilkan pesan Hello Worldsebagai judul bingkai. Setelah beberapa 3detik, program ditutup.

Terlihat seperti ini:

masukkan deskripsi gambar di sini

Seret lebih besar:

masukkan deskripsi gambar di sini


Kode diperluas (yaitu dapat dibaca):

class F {

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

}
Justin
sumber
Anda dapat menggunakan enumalih-alih classmenyimpan karakter lain.
Naik
@ Bersepeda tidak bekerja.
Justin
Sangat? Aku bersumpah aku pernah menggunakannya sekali ... Dang.
Naik
4

R, 44

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

masukkan deskripsi gambar di sini

ping
sumber
4

PowerShell - 63 52

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

Visual FoxPro - 23 karakter

WAIT"hello world"TIME 3

Halo dunia dalam VFP

Ini menyalahgunakan fakta bahwa VFP memungkinkan untuk tidak menempatkan spasi di antara string yang akan dicetak (yang baru saja saya temukan) dan memungkinkan untuk mempersingkat setiap kata kunci hingga 4 karakter pertama.

Versi tidak disatukan:

WAIT "hello world" TIMEOUT 3
Alejandro
sumber
4

GTK +, 47 45

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

Halo Dunia


Versi lama (skor 47):

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

Halo Dunia

Untuk beberapa alasan, zenity menampilkan teks yang dapat diterjemahkan ketika Semua pembaruan dilakukan .

AL
sumber
1
Hanya untuk menambahkan beberapa info tambahan, Semua pembaruan selesai. adalah apa yang saya dapat dalam bahasa inggris.
user12205
1
Anda dapat mengurangi satu karakter dengan mengubah --titleke--text
asheeshr
1
Anda dapat mengubah "Hello World"keHello\ World
kernigh
Terima kasih AsheeshR dan kernigh, saya memiliki 2 karakter lebih sedikit dengan bantuan Anda.
AL
3

C, 151 karakter

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

Bukan jawaban terkecil. Saya menyukainya.

Oberon
sumber
Kerja bagus. & # 32 & # 32 & # 32 & # 32
Sut Dip
Bagaimana itu bisa dikompilasi? 'SAFE'bukan char tunggal.
heinrich5991
@ heinrich5991 SAFE kemungkinan didefinisikan dalam allegro.h sebagai karakter tunggal.
Adam Davis
@AdamDavis C mengevaluasi makro dalam konstanta karakter?
heinrich5991
1
Tidak makro, itu hanya integer 32-bit yang ditulis sebagai empat byte dalam apa yang disebut notasi konstan multi-karakter, cara yang terlalu pintar untuk menulis sendiri tag string empat byte. Apple menggunakannya untuk nomor ajaib jenis file sekali. Kompiler sekarang mendukungnya tetapi mengeluarkan peringatan. Contoh untuk orang yang tidak percaya
Wander Nauta
3

C # 101 151

Ini pastinya bukan jawaban tersingkat (karena sudah ada jawaban bagus lain yang jauh lebih pendek) tetapi codegolf.SE membutuhkan lebih banyak kontribusi C # menurut pendapat saya!

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

Alternatif berdasarkan jawaban Bob , tetapi dengan WPF bukan WinForms:

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

Menghemat 3 karakter berkat ruang nama yang lebih pendek ...

Num Lock
sumber
Anda harus memasukkan usingdeklarasi dalam jumlah karakter. Sebagai alternatif, Anda dapat meninggalkan mereka tetapi kemudian Anda harus melakukan hal-hal seperti System.Windows.Forms.MessageBox.Show(karakter sedikit lebih sedikit jika hanya digunakan satu kali). Karena kode Anda saat ini, ia tidak dapat dikompilasi atau dijalankan.
Bob
Yah, saya hanya berasumsi itu tidak perlu karena saya melihat banyak jawaban di C, C ++, C #, Java dll tanpa menggunakan / impor / apa pun. Saya akan mengeditnya. BTW, apakah ada aturan eksplisit tentang ini? Tentu itu akan dikompilasi dan dijalankan dengan pengaturan kompilasi yang tepat dan / atau kompiler. (misalnya, menyelesaikan menggunakan arahan pada waktu kompilasi, selama mereka dapat diselesaikan secara berbeda)
Num Lock
Ini sedikit abu-abu - misalnya, saya harus menambahkan referensi System.Windows.Forms.dll, yang merupakan bagian dari konfigurasi msbuild / baris perintah kompilasi. Namun, konsensus umum tampaknya ketika sebuah program penuh diminta, using/ import/ #include/ etc. di mana diperlukan untuk mengkompilasi dan menjalankan kode diperlukan, dan mencoba untuk menggunakan trik command line kompilasi untuk menghindari itu buruk.
Bob
Saya akan mengingatnya. Terima kasih atas rujukannya.
Num Lock
3

Batch (24)

msg/time:3 * hello world

Diuji pada Windows 7, tetapi harus bekerja pada versi Windows berbasis NT, dengan asumsi Anda memiliki MSG.EXE di folder System32 Anda.

EDIT: Rupanya MSG.EXE tidak tersedia secara default di versi rumah Windows. Pada Windows 7, misalnya, ini hanya tersedia di edisi Ultimate atau Bisnis. Namun, Anda dapat menyalin file ke folder System32 Anda dan membuatnya berfungsi. (Anda juga harus menyalin file MSG.EXE.MUI yang sesuai untuk mendapatkan pesan kesalahan yang tepat, tetapi "skrip" saya berfungsi tanpa mereka.)

Anda harus menginstal perangkat lunak agar sebagian besar respons lain ini berfungsi juga, jadi saya pikir itu tidak akan mendiskualifikasi.

trlkly
sumber
Mengapa ini tidak akan memanggil program dengan nama time:3 dalam folder yang disebut msgdi direktori saat ini?
kucing
@cat Windows menggunakan \.
jimmy23013
@ Jimmy wow itu setahun yang lalu. Saya hanya terbiasa menulis / di semua platform sekarang oops
cat
@ jimmy23013 Tetapi Windows mendukung / juga
MilkyWay90
@ MilkyWay90 Dukungan Windows /di beberapa tempat, tetapi di cmd, /xxxditafsirkan sebagai argumen.
jimmy23013
2

APL (40)

X.Close⊣⎕DL 3⊣'X'⎕WC'Form' 'Hello World'
marinus
sumber
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()

masukkan deskripsi gambar di sini

Seeker14491
sumber
2

Perl pada Windows (56)

use Win32;fork?kill+sleep+3,$$:Win32'MsgBox"Hello World"
perl Cina goth
sumber
Gunakan '-MWin32' untuk menyimpan empat byte
DarkHeart
2

Perl 5, 47

Menggunakan Perl / Tk :

perl -MTk -e'alarm 3;tkinit-title,"Hello World!";MainLoop'
#     123    45678901234567890123456789012345678901234567
Matthias
sumber
Tampaknya modul Tk diperlukan.
AL
2
Ya, tentu saja Anda perlu beberapa GUI toolkit. Saya memilih Tk karena tkinit ().
Matthias
Saya menghitung 44 byte. Apakah Anda menghitung -MTkbendera juga?
slebetman
@slebetman Ya saya menghitung itu sebagai 3 karakter, saya menambahkan hitungan ke posting.
Matthias
1
@ n.1 Saya menambahkannya di bawah judul dengan tautan ke dokumentasi CPAN dari modul Tk. Tidak ada modul perl inti yang merupakan modul GUI, oleh karena itu Anda harus selalu menginstal modul eksternal. Maaf, ini jelas bagi saya (karena saya cukup sering bekerja dengan perl), tetapi Anda benar, ini mengejutkan bagi mereka yang bekerja dalam bahasa lain.
Matthias
2

Tampilan Rebol (r3gui), 49

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

"hello world" dari Tampilan Rebol 3

Tidak Disatukan:

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

Memproses, 77

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

Tangkapan layar:

masukkan deskripsi gambar di sini

Edit 1: Posisi teks Y bisa 9 bukannya 10, seperti dicatat oleh @ace.

Sunting 2: 3000 dapat direpresentasikan sebagai 3e3 untuk mencukur satu karakter, juga dicatat oleh @ace

segfaultd
sumber
3
Menggunakan 9 untuk posisi Y dan bukan 10 bekerja untuk saya.
user12205
Baru saja mengedit kode. Terima kasih!
segfaultd
3
Hanya perhatikan Anda dapat menggunakan 3e3alih-alih 3000menyimpan satu char lagi
user12205
2

bash + ImageMagick (36 byte)

timeout 3 display label:Hello\ world

Diuji pada Ubuntu 14,04 LTS dan pada Fedora 20.

Terlihat lebih bagus, tetapi 10 byte lebih besar:

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

CMD / Batch - 33 Bytes

Saya percaya jendela yang menjalankan terminal CMD Windows dianggap sesuai dengan GUI.

start "Hello world" cmd /csleep 3

Jika Anda tidak memiliki sleepperintah pada sistem Anda - maka Anda dapat menggunakan timeoutyang datang secara default di Windows 7. Untuk dua byte lagi.

start "Hello world" cmd /ctimeout 3

Mulai jendela CMD baru dengan judul "Hello World" ( TIDAK ditampilkan di terminal itu sendiri, tetapi sebagai judul jendela GUI tempat terminal berjalan), jendela ini akan ditutup segera setelah semua perintah yang diuraikan telah dijalankan - jadi setelah sleep 3atautimeout 3 telah selesai.

Jendela terlihat seperti ini -

Bloke

Catatan; startmenjalankan perintah yang diberikan di jendela baru - bukan jendela tempat Anda menjalankan perintah di atas.

hapus clemeat
sumber
Mengubahnya untuk cmd "Hello world" cmd /ctimeout 3menempatkan Hello world di bilah judul selama 3 detik, tapi itu mungkin tidak masuk hitungan.
Chris Kent
1
Saya tidak akan berpikir begitu, karena itu tidak menelurkan jendela baru. Pertanyaannya mengatakan jendela yang sesuai dengan GUI muncul (muncul sebagai kata kunci), menyiratkan bahwa itu harus menampilkan jendela baru. Ide bagus.
hapus tanda
start "Hello world"Anda Tuan, adalah seorang jenius.
user8397947
1

Python 3, 83 72 byte

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

Simpan byte dengan menggunakan tkinter.

Metode lama menambahkan a Labelke bingkai. Metode ini mengatur judul frame Hello World. f.after(3000,exit)berjalan exit()setelah 3000milidetik berlalu.

Justin
sumber
Gagasan yang sama, modul berbeda: turtlememiliki lebih sedikit 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")
Suram
sumber
1

Ruby [dengan Sepatu] (44 karakter)

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

aplikasi osx

Fabien Sa
sumber
1

C # 124

Jauh dari yang terpendek :(

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