3秒後に終了するHello World GUIプログラムを作成します


24

ルールと太字部分もお読みください。

ウィンドウシステム用のGUIサポートがある限り、任意の言語でプログラムを作成します(テキストコンソールなどは使用できず、GUI /ツールキット/ウィンドウである必要があります)。

GUI準拠のウィンドウが表示され、このテキストが3秒間表示される限り、プログラムは任意の方法(スプラッシュイメージ、メニューバー、ステータスバー、タイトル、ビデオ、メッセージボックス、その他のウィジェットのものなど)でHello Worldを言う必要があります。使用されるコードの最小量(バイト単位)でこれをコーディングできる人がケーキを受け取ります。


1
ここでのコメントは無意味な議論になりました。コメントでの詳細な議論は控えてください。必要に応じて、代わりにチャットを使用できます。すべてのコメントが削除されました。
ドアノブ

13
議論がどこから来たのかは関係ありません-すべてのユーザーは明らかにノイズであるか、どこにも行かない紛争に参加することを避けるべきです。
ドアノブ

1
「Hello world」にする必要がありますか、それとも「Hello_world」にすることができますか?
スリーブマン

3
また、正常に終了する必要がありますか?
スリーブマン

プログラムの実行方法を指定しませんか?たとえば、それ自体で起動する必要がありますか、それとも既に実行中の環境にロードされたものになりますか?
ジョーダンビオンド

回答:


28

Unixシェル、31文字

xmessage -timeout 3 hello world

message "hello world" with button "okay"

このプログラムには、X.Orgのxmessage(1)ユーティリティが必要です。従来の白黒Xアテナウィジェット(Xaw)を使用します。


grrrが...私が使用して1を投稿するつもりだったtimeoutzenity...しかし、それは長かった
BenjiWiebe

@BenjiWiebeありzenityで1番によって答えcodegolf.stackexchange.com/a/28451/4065
kernigh

2
1バイトを保存できます:タイムアウト3 xmessage hello world-
グレンランダース

1
@ GlennRanders-Pehrson私のマシンにはtimeoutコマンドがないため、それはできません。他の誰かがそれを使用する新しい答えを投稿できるのでしょうか?
カーニグ

23

シェルとgedit-27文字

timeout 3 gedit Hello World

Hello Worldを単一の文字列として表示する必要がある場合、その28文字:

timeout 3 gedit Hello\ World

timeoutユーティリティは、指定された期間コマンドを実行します。最小の起動時間を想定して、geditが3秒間実行されるようにします。

の代わりに任意のエディターを使用できますgedit。短い名前のエディターをのようgvimに使用する場合、長さを1文字以上減らすことができます。

user80551が最初に考えたエディターを使用します


スペース、使用エスケープHello\ World
user80551

1
@ user80551質問では、「Hello World」を任意の方法で表示する必要があるため、これは必要ではありません。
asheeshr

これになるだろう技術的には、Hello <space> <close icon> <Document icon> World
user80551

kate代わりに機能するかどうかを確認できますgeditか?
user80551

@ user80551 KDEをインストールしてはいけませんが、Kateのmanページを見ると、動作しない理由はないようです。
アヒーシュ

19

Applescript、45バイト:

Applescriptが短い答えの1つではないことがよくあります。

display alert "hello world" giving up after 3

Applescriptエディターに貼り付けて実行するかosascript、コマンドラインで実行します。

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

enter image description here


17

HTML + Javascript、73 60文字

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

これはChromeで機能しますが、他のブラウザーに移植できない場合があります。

コメントからの提案はさらにこれを取ります:

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

それは私が見た多くのゴルフです。私はこれが108イワナからイワナまで行くのを見ました73。突然、コード全体が表示されます。
ジャスティン

@Quincunx:最初の数回の繰り返しを逃しました。:)
グレッグヒューギル

自分のコードを投稿するのに忙しかったからです。:
ジャスティン

2
<body onload=open('','_self'),setTimeout(close,3e3)>Hello worldさらにいくつかの文字を保存するようです。
ヴェンテロ

1
user3082537から編集の提案があります。2つの文字を保存する<body onload=open('',name=setTimeout(close,3e3))>Hello world
ジャスティン

16

シェルスクリプト、31

資格があるかどうかはわかりません。が必要notify-sendです。少なくともUbuntu 12.04で動作します。

notify-send -t 3000 Hello world

screenshot


1
おそらく、GUIに準拠したウィンドウではないからです。残念ながら、使用zenityははるかに長くなります。
user80551


4
私は、ウィンドウ装飾のないウィンドウはまだウィンドウであると信じています。Enlightenmentの通知には、閉じるためのXボタンもあります(ただし、他のウィンドウ装飾はありません)。
カーニグ

12

シェル+ gedit / geany、34

gedit Hello\ World&sleep 3;kill $!

Hello World in gedit

これは、コマンドの発行開始から3秒がカウントされるため、geditが即座にポップアップすることを前提としています。短いGUIテキストエディタがある場合は、これよりも小さい可能性がありますgedit

geany 同じ文字数でも機能します s/gedit/geany/g

Hello World in geany

編集:使用timeoutが短くなります。/codegolf//a/28477/8766

EDIT2:これが動作するkateかどうかを誰でも確認できますか?


メルド、32

まったくHello World必要ない場合は、meld使用できます。

meld Hello World&sleep 3;kill $!

Hello : World - Meld


いいアイデアgeditです。ファイルがなくてもこの名前のファイルを開こうとします。
AL

あなたが使用している場合gvimにのみ必要になります33文字
avall

1
@Daniel haltは短くなりますが、破壊的であることを許可するかどうかはわかりません。また、root権限が必要なので、rootであると想定するか、sudoより多くのコストがかかる(そしてユーザーがパスワードを入力する必要がある)かを使用する必要があります。
user80551

1
すみません、私はユーモラスになろうとしていました。ユーザーにルート権限があると仮定していました。
ダニエル

1
@Daniel申し訳ありませんが、このサイトは、コードを短くするための最も悪意のあるルールのねじれに基づいています。
user80551

7

VBScript、58

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

screenshot


6

Python(pygame)、87

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

screenshot


OSXで動作せず、ウィンドウが表示されません...
ハリービーズル

@BritishColourは、おそらく小さすぎますか?サイズを[999,999]
user12205に

それでも...ウィンドウも表示されない場合、機能していない
ハリー・ビードル

@BritishColourまあそれは間違いなく私のために動作します。こちらをご覧ください。おそらくそれは背景か何かに現れていたのでしょうか?
user12205

1
コードが基本的に同一であるが、異なるモジュールを使用する方法は興味深いです。tkinter短くなります。
ジャスティン

6

Tcl-32バイト

シェルやjavascriptなど、これらのサブミッションの一部を使用すると、コンソールにコードを入力できることに気付きました。その場合は、次のように短縮できます。

wm ti . hello\ world;af 3000 exi

wish 実行した、コンソール入力する必要があります。wishつまり、REPLコンソールを提供する引数なしで実行し、上記のコードを入力します。これは、tclが寛容でオートコンプリートなコマンド/関数名であるという事実を利用しますが、対話モードでのみです。それでaf実際にafterコマンドをexi実行して実行しexitます。使用したかったのですexが、システムにexエディターがインストールされています。


元の提出-36バイト

wm ti . hello\ world;after 3000 exit

wish代わりに使用して実行しますtclsh


5

52Mathematicaで 51文字

(GUI準拠としてカウントされることを願っています。)

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

Mathematica GUI Golf code


4

Java、136バイト

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

Hello Worldフレームのタイトルとしてメッセージを表示します。3数秒後、プログラムは閉じます。

次のようになります。

enter image description here

大きくドラッグします。

enter image description here


拡張コード(読み取り可能):

class F {

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

}

enum代わりにclassを使用して、別のキャラクターを保存できます。
ライキン

@Rikingは機能しません。
ジャスティン

本当に?私は実際にそれを一度使ったことを誓ったかもしれない...ダン。
ライディング




4

Visual FoxPro-23文字

WAIT"hello world"TIME 3

Hello world in VFP

これは、VFPが印刷する文字列の間にスペースを入れないこと(これを発見したばかり)と、すべてのキーワードを最初の4文字まで短縮できるという事実を悪用します。

ゴルフされていないバージョン:

WAIT "hello world" TIMEOUT 3

4

GTK +、 47 45

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

Hello World


古いバージョン(スコア47):

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

Hello World

何らかの理由で、zenity は「すべての更新が完了しました」として翻訳できるテキストを表示します。


1
追加情報を追加するだけで、すべての更新が完了します。英語で得られるものです。
user12205

1
あなたは、変更することにより、一つの文字を減らすことができます--title--text
asheeshr

1
変更"Hello World"するにはHello\ World
14年

AsheeshRとkernighのおかげで、あなたの助けを借りてキャラクターが2つ減りました。
AL

3

C、151文字

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

最小の答えではありません。私はそれが好きです。


よくやった。&#32&#32&#32&#32
Sut Dip

それはどのようにコンパイルされますか?'SAFE'単一の文字ではありません。
heinrich5991

@ heinrich5991 SAFEは、おそらくallegro.hで単一の文字として定義されています。
アダムデイビス

@AdamDavis Cは文字定数でマクロを評価しますか?
heinrich5991

1
マクロはありません。実際には、マルチ文字定数表記と呼ばれる4バイトとして記述された32ビット整数であり、4バイトのタグ文字列を書くにはあまりにも賢い方法です。Appleはこれをファイルタイプのマジックナンバーに1回使用しました。最近のコンパイラはこれをサポートしていますが、警告を発します。非信者の例
ワンダーナウタ

3

C#101 151

これは間違いなく最短の答えではありません(既に他の良い答えがずっと短いので)が、codegolf.SEは私の意見ではもっと多くのC#の貢献が必要です!

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

ボブの答えに基づいた代替案ですが、WinFormsの代わりにWPFを使用します。

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

短い名前空間のおかげで3文字を節約できます...


using文字カウントに宣言を含める必要があります。代わりに、それらを除外することもできますが、次のようなことをする必要がありますSystem.Windows.Forms.MessageBox.Show(1回限りの使用の場合は、文字数を少し減らします)。現在のコードは、コンパイルも実行もされません。
ボブ

C / C ++ / C#/ Javaなどで使用/インポート/何もせずに多くの回答が表示されるため、必要ないと思われました。ただし、編集します。ところで、これに関して明示的なルールはありますか?正しいコンパイル設定および/またはコンパイラでコンパイルして実行することは確かです。(たとえば、個別に解決できる限り、コンパイル時にディレクティブを使用して解決する)
Num Lock


それは少し灰色です-たとえば、System.Windows.Forms.dllmsbuild config / compileコマンドラインの一部であるへの参照を追加する必要がありました。しかし、一般的なコンセンサスは、完全なプログラムが要求された場合、using/ import/ #include/ etcであるようです。コードをコンパイルして実行するために必要な場合、コンパイラコマンドライントリックを使用して回避することは悪いことです。
ボブ

そのことを心に留めておきます。参照していただきありがとうございます。
Num Lock

3

バッチ(24)

msg/time:3 * hello world

Windows 7でテストしましたが、System32フォルダーにMSG.EXEがあると仮定して、WindowsのNTベースのバージョンで動作するはずです。

編集:Windowsのホームバージョンでは、デフォルトでMSG.EXEが利用できないようです。たとえば、Windows 7では、これはUltimateまたはBusinessエディションでのみ利用可能です。ただし、ファイルをSystem32フォルダーにコピーして、動作させることができます。(適切なエラーメッセージを取得するには、適切なMSG.EXE.MUIファイルをコピーする必要がありますが、私の「スクリプト」はそれらなしでも機能します。)

これらの他の応答のほとんどが機能するためには、ソフトウェアをインストールする必要があるため、それが失格になるとは思わない。


なぜ、これは現在のディレクトリでtime:3呼び出されるフォルダで名前が付けられたプログラムを呼び出さないのmsgですか?

@cat Windowsはを使用し\ます。
jimmy23013

@jimmy wow that was a year ago. i'm just used to writing / on all platforms now oops
cat

@jimmy23013 But Windows supports / too
MilkyWay90

@MilkyWay90 Windows supports / in some places, but in cmd, /xxx is interpreted as an argument.
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 bytes

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

enter image description here



2

Perl 5, 47

Using Perl/Tk:

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

It seems that the Tk module is required.
A.L

2
Yes, of course you need some GUI toolkit. I choose Tk because of tkinit().
Matthias

I count 44 bytes. Are you counting the -MTk flag as well?
slebetman

@slebetman Yes I count that as 3 chars, I added the count to the post.
Matthias

1
@n.1 I added it below the title with a link to the CPAN documentation of the Tk module. None of the perl core modules is a GUI module, therefore you always have to install external modules. Sorry, this was clear to me (as I am working with perl quite often), but you are right, it is surprising for those who work in other languages.
Matthias

2

Rebol View (r3gui), 49

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

"hello world" from Rebol 3 View

Ungolfed:

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

2

Processing, 77

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

Screenshot:

enter image description here

Edit 1: Y position of the text can be 9 instead of 10, like noted by @ace.

Edit 2: 3000 can be represented as 3e3 to shave one character off, also noted by @ace


3
Using 9 for Y position instead of 10 works for me.
user12205

Just edited the code. Thanks!
segfaultd

3
Just noticed you can use 3e3 instead of 3000 to save one more char
user12205

2

bash + ImageMagick (36 bytes)

timeout 3 display label:Hello\ world

Tested on Ubuntu 14.04 LTS and on Fedora 20.

Nicer-looking, but 10 bytes larger:

timeout 3 display -size 800 label:Hello\ world

2

CMD / Batch - 33 Bytes

I believe the window that the Windows CMD terminal runs in counts as GUI compliant.

start "Hello world" cmd /csleep 3

If you don't have the sleep command on your system - then you can use timeout which comes default in Windows 7. For two more bytes.

start "Hello world" cmd /ctimeout 3

Starts a new CMD window with the title "Hello World" (NOT displayed in the terminal itself, but as the title of the GUI window that the terminal runs in), this window will close as soon as all parsed commands have executed - so after sleep 3 or timeout 3 has completed.

The window looks like this -

Bloke

Note; start runs the given commands in a new window - not the window that you are running the above commands from.


Changing it to cmd "Hello world" cmd /ctimeout 3 puts Hello world in the title bar for 3 seconds, but that probably doesn't count.
Chris Kent

1
I wouldn't think it does, because it doesn't spawn a new window. The question says a GUI-compliant window appears (appears being the key word), implying that it has to display a new window. Good idea though.
unclemeat

start "Hello world" You sir, are a genius.
dorukayhan wants Monica back

1

Python 3, 83 72 bytes

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

Save bytes by using tkinter.

The old method added a Label to the frame. This method sets the title of the frame to Hello World. f.after(3000,exit) runs exit() after 3000 milliseconds have passed.


Same idea, different module: turtle has less 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")

1

Ruby [with Shoes] (44 chars)

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

osx app


1

C# 124

Far from the shortest :(

class P{static void Main(){new System.Windows.Forms.Form(){Text="Hello World"}.Show();System.Threading.Thread.Sleep(3000);}}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.