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未満 想定外です。ぐうの音もでません