Viết chương trình GUI thế giới xin chào tự đóng sau ba giây


24

Xin vui lòng đọc các quy tắc, và các lĩnh vực táo bạo là tốt .

Viết chương trình bằng bất kỳ ngôn ngữ nào, miễn là nó có hỗ trợ GUI cho hệ thống cửa sổ (không thể là bảng điều khiển văn bản, v.v. và phải là GUI / bộ công cụ / cửa sổ).

Chương trình phải nói chào thế giới theo bất kỳ cách nào (hình ảnh giật gân, thanh menu, thanh trạng thái, tiêu đề, video, hộp thông báo, nội dung tiện ích khác, v.v.), miễn là cửa sổ tuân thủ GUI xuất hiện và hiển thị văn bản này trong ba giây . Người có thể viết mã này với số lượng mã ít nhất được sử dụng, tính bằng byte, sẽ lấy bánh.


1
Các ý kiến ​​ở đây đã xuống cấp thành một cuộc tranh luận vô nghĩa. Xin vui lòng kiềm chế thảo luận mở rộng trong các ý kiến; nếu cần thiết, bạn có thể sử dụng trò chuyện thay thế. Tất cả các ý kiến ​​đã được thanh trừng.
Doorknob

13
Việc tranh luận đến từ đâu không quan trọng - tất cả người dùng nên tránh tham gia vào các tranh chấp rõ ràng là tiếng ồn hoặc không đi đến đâu.
Doorknob

1
Nó có phải là "Hello world" hay có thể là "Hello_world" không?
slebetman

3
Ngoài ra, nó phải thoát ra một cách duyên dáng?
slebetman

bạn không xác định chương trình phải được chạy như thế nào? chẳng hạn, nó phải được khởi động một mình hay nó có thể là thứ gì đó được tải lên trong một môi trường đã chạy không?
Jordon Biondo

Câu trả lời:


28

Vỏ Unix, 31 ký tự

xmessage -timeout 3 hello world

tin nhắn "xin chào thế giới" với nút "được"

Chương trình này yêu cầu tiện ích xmessage (1) từ X.Org. Nó sử dụng Widgets X Athena đen trắng truyền thống (Xaw).


Grrr ... Tôi sẽ đăng một cái bằng cách sử dụng timeoutzenitynó dài hơn ...
BenjiWiebe

@BenjiWiebe Có zenitycâu trả lời của n.1 tại codegolf.stackexchange.com/a/28451/4065
kernigh

2
Bạn có thể lưu 1 byte: thời gian chờ 3 xmessage hello world
Glenn Randers-Pehrson

1
@ GlennRanders-Pehrson Tôi không thể làm điều đó, vì máy của tôi không có timeoutlệnh. Có lẽ ai đó khác có thể đăng một câu trả lời mới sử dụng nó?
hạt nhân

23

Shell và gedit - 27 ký tự

timeout 3 gedit Hello World

Nếu Hello World cần được hiển thị dưới dạng một chuỗi, thì 28 ký tự của nó :

timeout 3 gedit Hello\ World

timeouttiện ích chạy một lệnh trong khoảng thời gian được chỉ định. Nó đảm bảo rằng gedit chạy trong 3 giây, giả sử thời gian khởi động tối thiểu.

Bất kỳ trình soạn thảo có thể được sử dụng thay thế gedit. Nếu một trình soạn thảo có tên ngắn hơn được sử dụng như thế gvim, độ dài có thể giảm 1 hoặc nhiều ký tự.

Sử dụng một trình soạn thảo ban đầu được nghĩ bởi user80551 .


Thoát khỏi không gian, sử dụngHello\ World
user80551

1
@ user80551 Câu hỏi yêu cầu "Hello World" được hiển thị theo bất kỳ cách nào , do đó không cần thiết.
asheeshr

Về mặt kỹ thuật, điều đó sẽ làm điều nàyHello <space> <close icon> <Document icon> World
user80551

Bạn có thể xác nhận nếu katesẽ làm việc thay vì gedit?
user80551

@ user80551 Không cài đặt KDE, nhưng đi qua trang người đàn ông của Kate , dường như không có bất kỳ lý do nào khiến nó không hoạt động.
asheeshr

19

Applescript, 45 byte:

Không thường xuyên Applescript là một trong những câu trả lời ngắn hơn:

display alert "hello world" giving up after 3

Dán vào Trình soạn thảo Applescript và chạy hoặc chạy bằng osascriptdòng lệnh:

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

nhập mô tả hình ảnh ở đây


17

HTML + Javascript, 73 60 ký tự

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

Điều này hoạt động trong Chrome, nhưng có thể không di động được với các trình duyệt khác.

Gợi ý từ các ý kiến ​​đưa thêm điều này:

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

Đó là rất nhiều golf tôi đã thấy. Tôi thấy điều này đi từ 108chars xuống 73. Đột nhiên, toàn bộ mã được nhìn thấy.
Justin

@Quincunx: Bạn đã bỏ lỡ vài lần lặp đầu tiên sau đó. :)
Greg Hewgill

Đó là bởi vì tôi đang bận đăng mã của riêng tôi. :-)
Justin

2
<body onload=open('','_self'),setTimeout(close,3e3)>Hello worlddường như để tiết kiệm thêm một vài nhân vật.
Ventero

1
Bạn có một đề xuất chỉnh sửa từ người dùng3082537: lưu hai ký tự bằng cách<body onload=open('',name=setTimeout(close,3e3))>Hello world
Justin

16

kịch bản shell, 31

Không chắc chắn liệu nó có đủ điều kiện. Yêu cầu notify-send. Hoạt động ít nhất trên Ubuntu 12.04.

notify-send -t 3000 Hello world

ảnh chụp màn hình


1
Có lẽ không phải vì nó không phải là một cửa sổ tuân thủ GUI . Thật không may, sử dụng zenitylà lâu hơn nhiều.
user80551

34 ký tự của nó với gedit - codegolf.stackexchange.com/a/28425/8766
user80551

4
Tôi tin rằng một cửa sổ không có trang trí cửa sổ vẫn là một cửa sổ. Ở đây trong Enlightenment, thông báo cũng có nút X để đóng nó (nhưng không có trang trí cửa sổ nào khác).
hạt nhân

12

vỏ + gedit / geany, 34

gedit Hello\ World&sleep 3;kill $!

Xin chào thế giới trong gedit

Điều này giả định rằng gedit bật lên ngay lập tức vì 3 giây được tính từ khi bắt đầu ban hành lệnh. Có thể nhỏ hơn nếu có trình soạn thảo văn bản GUI ngắn hơngedit .

geany hoạt động quá cho cùng một số ký tự, chỉ s/gedit/geany/g

Xin chào thế giới trong geany

EDIT: Sử dụng timeout ngắn hơn. /codegolf//a/28477/8766

EDIT2: Bất cứ ai cũng có thể xác nhận nếu điều này hoạt động với kate ?


meld, 32

Nếu chính xác Hello Worldlà không cần thiết, sau đó meldcó thể được sử dụng.

meld Hello World&sleep 3;kill $!

Xin chào: Thế giới - Meld


Ý tưởng hay, geditcố gắng mở một tệp có tên này ngay cả khi không có tệp.
AL

Nếu bạn sử dụng, gvimnó sẽ chỉ cần 33 ký tự
trong

1
@Daniel haltsẽ ngắn hơn nhưng tôi không biết có được phép phá hoại hay không. Ngoài ra, nó yêu cầu quyền root nên chúng tôi cần phải giả sử rằng chúng tôi đã root hoặc sử dụng sudochi phí cao hơn (và cần người dùng nhập mật khẩu).
user80551

1
Xin lỗi, tôi đã cố gắng để hài hước. Tôi đã giả sử người dùng có quyền root.
Daniel

1
@Daniel Không cần phải xin lỗi, trang web này dựa trên sự vặn vẹo xấu xa nhất của các quy tắc để làm cho mã của bạn ngắn hơn.
user80551


6

Con trăn (trăn), 87

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

ảnh chụp màn hình


Không hoạt động trên OSX, không hiển thị cửa sổ ...
Harry Beadle

@BritishColour nó nên, có lẽ nó quá nhỏ? Hãy thử thay đổi kích thước thành[999,999]
user12205

Vẫn không hoạt động, cửa sổ thậm chí không xuất hiện ...
Harry Beadle

@BritishColour Vâng, nó chắc chắn hoạt động với tôi. Xem tại đây . Có lẽ nó đã được hiển thị ở nền hoặc cái gì đó?
dùng12205

1
Thật thú vị khi mã của chúng ta về cơ bản giống hệt nhau, nhưng sử dụng một mô-đun khác. tkinterhóa ra là ngắn hơn
Justin

6

Tcl - 32 byte

Tôi nhận thấy rằng một số trong các bài nộp này, như trình bao hoặc javascript, cho phép bạn nhập mã vào bảng điều khiển. Nếu đó là trường hợp tôi có thể rút ngắn nó thành:

wm ti . hello\ world;af 3000 exi

Phải gõ vào bàn điều khiển sau khi chạy mong muốn. Có nghĩa là, chạy wishmà không có đối số sẽ cung cấp cho bạn một giao diện điều khiển REPL và sau đó nhập mã ở trên. Điều này sử dụng thực tế là tcl có thể được khoan và tự động hoàn thành tên lệnh / hàm nhưng chỉ trong chế độ tương tác. Vì vậy, điều đó afthực sự xuất hiện afterlệnh và exithực thi exit. Tôi muốn sử dụng exnhưng hệ thống của tôi đã excài đặt trình chỉnh sửa.


Đệ trình gốc - 36 byte

wm ti . hello\ world;after 3000 exit

Chạy sử dụng wishthay vì tclsh.


5

52 51 ký tự với Mathicala

(Hy vọng nó được tính là tương thích với GUI.)

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

Mathicala 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);}}

Hiển thị thông báo Hello Worldnhư tiêu đề của một khung. Sau 3vài giây, chương trình đóng lại.

Trông như thế này:

nhập mô tả hình ảnh ở đây

Kéo nó lớn hơn:

nhập mô tả hình ảnh ở đây


Mã mở rộng (nghĩa là có thể đọc được):

class F {

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

}

Bạn có thể sử dụng enumthay vì classđể lưu một nhân vật khác.
Đạp xe

@ Đi xe đạp không hoạt động.
Justin

Có thật không? Tôi có thể đã thề rằng tôi thực sự đã sử dụng nó một lần ... Dang.
Đi xe đạp

3
@Riking codegolf.stackexchange.com/questions/6671/ mẹo
Justin

4

R, 44

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

nhập mô tả hình ảnh ở đây



4

Visual FoxPro - 23 ký tự

WAIT"hello world"TIME 3

Xin chào thế giới trong VFP

Điều này lạm dụng thực tế là VFP cho phép không đặt khoảng trắng giữa chuỗi cần in (mà tôi vừa phát hiện) và nó cho phép rút ngắn mọi từ khóa xuống tối đa 4 ký tự đầu tiên.

Phiên bản bị đánh cắp:

WAIT "hello world" TIMEOUT 3

4

GTK +, 47 45

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

Chào thế giới


Phiên bản cũ (điểm 47):

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

Chào thế giới

Vì một số lý do, zenity hiển thị một văn bản có thể được dịch là Tất cả cập nhật đã được thực hiện .


1
Chỉ cần thêm một số thông tin bổ sung, tất cả các cập nhật đã hoàn tất. là những gì tôi nhận được bằng tiếng Anh.
dùng12205

1
Bạn có thể giảm một ký tự bằng cách thay đổi --titlethành--text
asheeshr

1
Bạn có thể đổi "Hello World"thànhHello\ World
kernigh

Cảm ơn AsheeshR và kernigh, tôi có ít hơn 2 nhân vật với sự giúp đỡ của bạn.
AL

3

C, 151 ký tự

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

Không phải là câu trả lời nhỏ nhất. Tôi thích nó mặc dù.


Làm tốt lắm. & # 32 & # 32 & # 32 & # 32
Sut Dip

Làm thế nào mà thậm chí biên dịch? 'SAFE'không phải là một char duy nhất.
heinrich5991

@ heinrich5991 SAFE có thể được xác định trong allegro.h là một ký tự đơn.
Adam Davis

@AdamDavis C đánh giá các macro trong hằng số ký tự?
heinrich5991

1
Không có macro, nó thực sự chỉ là một số nguyên 32 bit được viết dưới dạng bốn byte trong ký hiệu hằng ký tự nhiều ký tự, một cách quá thông minh để viết các chuỗi thẻ bốn byte. Apple đã sử dụng nó cho các số ma thuật loại tập tin một lần. Trình biên dịch ngày nay hỗ trợ nó nhưng phát ra một cảnh báo. Ví dụ cho những người không tin
Đi lang thang Nauta

3

C # 101 151

Điều này chắc chắn sẽ không phải là câu trả lời ngắn nhất (vì đã có những câu trả lời hay khác ngắn hơn) nhưng theo tôi, codegolf.SE cần nhiều đóng góp C # hơn theo quan điểm của tôi!

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

Một cách khác dựa trên câu trả lời của Bob , nhưng với WPF thay vì WinForms:

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

Lưu 3 ký tự nhờ không gian tên ngắn hơn ...


Bạn cần bao gồm các usingkhai báo trong số lượng ký tự. Ngoài ra, bạn có thể loại bỏ chúng nhưng sau đó bạn sẽ phải làm những việc như System.Windows.Forms.MessageBox.Show(ít ký tự hơn nếu chỉ sử dụng một lần). Như mã của bạn hiện tại, nó sẽ không biên dịch hoặc chạy.
Bob

Chà, tôi chỉ cho rằng nó không cần thiết bởi vì tôi thấy rất nhiều câu trả lời trong C, C ++, C #, Java, v.v. mà không cần sử dụng / nhập / bất cứ thứ gì. Tôi sẽ chỉnh sửa nó, mặc dù. BTW, có một số quy tắc rõ ràng về điều này? Chắc chắn rằng nó sẽ biên dịch và chạy với các cài đặt biên dịch và / hoặc trình biên dịch phù hợp. (ví dụ: giải quyết bằng cách sử dụng các chỉ thị về thời gian biên dịch, miễn là chúng có thể được giải quyết khác biệt)
Num Lock


Đó là một chút màu xám - ví dụ, tôi đã phải thêm một tham chiếu đến System.Windows.Forms.dll, đó là một phần của msbuild config / dòng lệnh biên dịch. Tuy nhiên, sự đồng thuận chung dường như là khi một chương trình đầy đủ được yêu cầu, using/ import/ #include/ vv. khi cần mã để biên dịch và chạy là bắt buộc và cố gắng sử dụng các thủ thuật dòng lệnh của trình biên dịch để tránh điều đó là xấu.
Bob

Tôi sẽ giữ cho rằng trong tâm trí. Cảm ơn bạn đã tham khảo.
Num Lock

3

Mẻ (24)

msg/time:3 * hello world

Đã thử nghiệm trên Windows 7, nhưng sẽ hoạt động trên mọi phiên bản Windows dựa trên NT, giả sử bạn có MSG.EXE trong thư mục System32.

EDIT: Rõ ràng MSG.EXE không có sẵn theo mặc định trên các phiên bản Windows của nhà. Trên Windows 7, ví dụ, điều này chỉ có sẵn trong phiên bản Ultimate hoặc Business. Tuy nhiên, bạn có thể sao chép tệp vào thư mục System32 và làm cho nó hoạt động. (Bạn cũng phải sao chép tệp MSG.EXE.MUI thích hợp để nhận thông báo lỗi thích hợp, nhưng "tập lệnh" của tôi hoạt động mà không có chúng.)

Bạn cũng phải cài đặt phần mềm cho hầu hết các phản hồi khác này để hoạt động, vì vậy tôi không nghĩ rằng đó phải là một trình loại bỏ.


Tại sao điều này sẽ không gọi một chương trình có tên time:3trong một thư mục được gọi msgtrong thư mục hiện tại?
mèo

@cat Windows sử dụng \.
jimmy23013

@jimmy wow đó là một năm trước. Tôi chỉ quen viết / trên tất cả các nền tảng bây giờ rất tiếc
mèo

@ jimmy23013 Nhưng Windows /cũng hỗ trợ
MilkyWay90

@ MilkyWay90 Windows hỗ trợ /ở một số nơi, nhưng trong cmd, /xxxđược hiểu là một đối số.
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

Perl 5, 47

Sử dụng Perl / Tk :

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

Có vẻ như mô-đun Tk là bắt buộc.
AL

2
Vâng, tất nhiên bạn cần một số bộ công cụ GUI. Tôi chọn Tk vì tkinit ().
Matthias

Tôi đếm 44 byte. Bạn đang đếm -MTkcờ là tốt?
slebetman

@slebetman Có tôi tính là 3 ký tự, tôi đã thêm số đếm vào bài viết.
Matthias

1
@ n.1 Tôi đã thêm nó bên dưới tiêu đề với một liên kết đến tài liệu CPAN của mô-đun Tk. Không có mô-đun lõi perl nào là mô-đun GUI, do đó bạn luôn phải cài đặt các mô-đun bên ngoài. Xin lỗi, điều này rõ ràng với tôi (vì tôi thường xuyên làm việc với perl), nhưng bạn nói đúng, thật đáng ngạc nhiên cho những người làm việc trong các ngôn ngữ khác.
Matthias

2

Chế độ xem Rebol (r3gui), 49

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

"xin chào thế giới" từ Rebol 3 View

Ung dung:

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

2

Chế biến, 77

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

Ảnh chụp màn hình:

nhập mô tả hình ảnh ở đây

Chỉnh sửa 1: Vị trí Y của văn bản có thể là 9 thay vì 10, như được ghi chú bởi @ace.

Chỉnh sửa 2: 3000 có thể được biểu thị là 3e3 để tắt một ký tự, cũng được ghi chú bởi @ace


3
Sử dụng 9 cho vị trí Y thay vì 10 công việc cho tôi.
dùng12205

Chỉ cần chỉnh sửa mã. Cảm ơn!
segfaultd

3
Chỉ cần lưu ý rằng bạn có thể sử dụng 3e3thay vì 3000lưu thêm một char
user12205

2

bash + ImageMagick (36 byte)

timeout 3 display label:Hello\ world

Đã thử nghiệm trên Ubuntu 14.04 LTS và trên Fedora 20.

Nhìn giống Nicer, nhưng lớn hơn 10 byte:

timeout 3 display -size 800 label:Hello\ world

2

CMD / lô - 33 byte

Tôi tin rằng cửa sổ mà thiết bị đầu cuối Windows CMD chạy với số lượng là tuân thủ GUI.

start "Hello world" cmd /csleep 3

Nếu bạn không có sleeplệnh trên hệ thống của mình - thì bạn có thể sử dụng lệnh timeoutmặc định trong Windows 7. Để có thêm hai byte.

start "Hello world" cmd /ctimeout 3

Bắt đầu một cửa sổ CMD mới với tiêu đề "Hello World" ( KHÔNG được hiển thị trong chính thiết bị đầu cuối, nhưng là tiêu đề của cửa sổ GUI mà thiết bị đầu cuối chạy vào), cửa sổ này sẽ đóng ngay khi tất cả các lệnh được phân tích cú pháp đã thực hiện - vì vậy sau đó sleep 3hoặc timeout 3đã hoàn thành.

Cửa sổ trông như thế này -

Bloke

Chú thích; startchạy các lệnh đã cho trong một cửa sổ mới - không phải cửa sổ mà bạn đang chạy các lệnh trên.


Thay đổi nó để cmd "Hello world" cmd /ctimeout 3đặt thế giới Hello trong thanh tiêu đề trong 3 giây, nhưng điều đó có lẽ không được tính.
Chris Kent

1
Tôi sẽ không nghĩ vậy, vì nó không sinh ra một cửa sổ mới. Câu hỏi cho biết một cửa sổ tương thích GUI xuất hiện (dường như là từ khóa), ngụ ý rằng nó phải hiển thị một cửa sổ mới. Ý tưởng tốt mặc dù.
khai mạc

start "Hello world"Ngài là một thiên tài.
dorukayhan muốn Monica trở lại vào

1

Python 3, 83 72 byte

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

Lưu byte bằng cách sử dụng tkinter.

Phương pháp cũ thêm a Labelvào khung. Phương pháp này đặt tiêu đề của khung thành Hello World. f.after(3000,exit)chạy exit()sau khi 3000mili giây đã trôi qua.


Cùng một ý tưởng, mô-đun khác nhau: turtlecó ít byte hơn. = D codegolf.stackexchange.com/a/28548/14506
daviewales

1

Rắn hổ mang - 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 [với Giày] (44 ký tự)

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

osx app


1

C # 124

Xa nhất là ngắn nhất :(

class P{static void Main(){new System.Windows.Forms.Form(){Text="Hello World"}.Show();System.Threading.Thread.Sleep(3000);}}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.