UWSCコードゴルフ デジタル時計

元ネタは検索すればすぐ見つかると思います。
検索すると、少しネタばれになるので、検索は非推奨かな。
こういうのは、自力でやった方が達成感がありますよー。


開始すると、00:00を表示し、約1秒毎にカウントアップする時計を作ってもらいます。



基本的にはこんなスクリプト

OPTION DEFAULTFONT = "MS ゴシック"
TEXTBLOCK clock_0
■■■
■ ■
■ ■
■ ■
■■■
ENDTEXTBLOCK
TEXTBLOCK clock_1
  ■
  ■
  ■
  ■
  ■
ENDTEXTBLOCK
TEXTBLOCK clock_2
■■■
  ■
■■■
■  
■■■
ENDTEXTBLOCK
TEXTBLOCK clock_3
■■■
  ■
■■■
  ■
■■■
ENDTEXTBLOCK
TEXTBLOCK clock_4
■ ■
■ ■
■■■
  ■
  ■
ENDTEXTBLOCK
TEXTBLOCK clock_5
■■■
■  
■■■
  ■
■■■
ENDTEXTBLOCK
TEXTBLOCK clock_6
■■■
■  
■■■
■ ■
■■■
ENDTEXTBLOCK
TEXTBLOCK clock_7
■■■
  ■
  ■
  ■
  ■
ENDTEXTBLOCK
TEXTBLOCK clock_8
■■■
■ ■
■■■
■ ■
■■■
ENDTEXTBLOCK
TEXTBLOCK clock_9
■■■
■ ■
■■■
  ■
■■■
ENDTEXTBLOCK
TEXTBLOCK colon
   
 ■ 
   
 ■ 
   
ENDTEXTBLOCK
DIM clock_pattern[] = SPLIT(clock_0, "<#CR>"), SPLIT(clock_1, "<#CR>"), SPLIT(clock_2, "<#CR>"), SPLIT(clock_3, "<#CR>"), SPLIT(clock_4, "<#CR>"), SPLIT(clock_5, "<#CR>"), SPLIT(clock_6, "<#CR>"), SPLIT(clock_7, "<#CR>"), SPLIT(clock_8, "<#CR>"), SPLIT(clock_9, "<#CR>"), SPLIT(colon, "<#CR>")
// 1秒ごとにカウントアップ
DIM sec = 0, m, s, m1, m2, s1, s2, timeString, i;
WHILE TRUE
	// 秒を mm:ss に変換し、時計を再描画
	m = INT(sec / 60)
	s = sec MOD 60
	m1 = INT(m / 10)
	m2 = m MOD 10
	s1 = INT(s / 10)
	s2 = s MOD 10
	timeString = ""
	FOR i = 0 TO 4
		timeString = timeString + clock_pattern[m1][i] + " " + clock_pattern[m2][i] + " " + clock_pattern[10][i] + " " + clock_pattern[s1][i] + " " + clock_pattern[s2][i] + " <#CR>"
	NEXT
	FUKIDASI(TRIM(timeString))
	sec = sec + 1
	SLEEP(1)
WEND


吹出し周囲の余白が多少違っていてもOKとしますが、崩れたりするのはNGです。
99:59を超えた時の動作は不問です。
上記スクリプトをざくっと余白・改行を消して変数名を短くしたりするとだいたい730Byteくらいになります。

記録

個人的に、500Byteを切るのは簡単だったのと、私の記録は347Byteなので、ちょっときつめに以下のレベル分けとします。
Level1 500Byte以上 参加、ありがとうございます
Level2 500Byte未満 構文を意識しての短縮は問題ないですね!
Level3 440Byte未満 創意工夫が入ってきましたか
Level4 380Byte未満 ここまで来るのは結構きつい
Level5 340Byte未満 想定外です。ぐうの音もでません