DevelopmentEvent

「#俳句プログラミング プチコンテスト 2015」ピックアップ Vol. 3

慧: おまたせ! 「俳句プログラミング プチコンテスト」の応募されたコードをピックアップして紹介していくよ。今回はその3回目。毎回言うけど、別に良い悪いって話じゃないからね! たくさん応募があるから、他の人のコードを別言語に移植や、バグがあったらつっこむのもアリだよ!

ピックアップ No.21 (Ruby)

最初は、Ruby。ツイートで済む長さだね。

ツイートすると実行結果を返してくれる @paiza_run を利用した作品。結果はこちら。

ピックアップ No.22 (C#)

次は、C#。斜め上を目指す?

ほんとに斜め上だよ! コードは、俳句プログラミング – Onoty3D から。

ピックアップ No.23 (Excel VBA)

次は、Excel VBA の作品。

haiku.vb
Sub Main()
    Dim Verse(3) As String, r As Integer, c As Integer, i As Integer, j As Integer
    Pix = 40
    With Cells
        .Font.Name = "HGP行書体"
        .Font.Size = "20"
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .RowHeight = Pix * 0.75
        .ColumnWidth = Pix * 0.118
    End With
    Verse(1) = "古池や"
    Verse(2) = "蛙飛び込む"
    Verse(3) = "水の音"
    For i = 1 To UBound(Verse)
        For j = 1 To Len(Verse(i))
            Cells(j, UBound(Verse) - i + 1) = Mid(Verse(i), j, 1)
        Next
    Next
End Sub

縦書き変換は、二重 For~Next の5行だけ。列と行がある言語は簡単だね。C# で Excel 操作バージョン も投稿してくれてるよ。

ピックアップ No.24 (HSP)

続いて、HSP!

https://twitter.com/tasteless0wash/status/572767119948959746

haiku.hsp
title "#俳句プログラミング "
font "@MS P明朝",42
pos 10,10
mes "古池や\n 蛙飛び込む\n   水の音"
pos 200,200
celput 0, 0, , ,(M_PI/2)

縦書きフォントで描画して、画像を回転するっていうアイデア賞!

ピックアップ No.25 (SmileBASIC)

次は、プチコンの SmileBASIC だよ。

haiku.bas
ACLS
R=360:W=399:H=239
C=RGB(80,208,255)
PRINT "はるのうみ"
PRINT "ひねもすのたり"
PRINT "のたりかな"
WHILE 1
 BGMMPLAY "@122C1"
 A=RND(R)
 FOR X=0 TO W
  GLINE X,H/2+2*SIN(A+X/40),X,H,C
 NEXT
 WAIT R
 GCLS
WEND

短いコードで、「春の海 ひねもすのたり のたりかな」のゆったりとうねった海自体を表している素敵な作品だよ。

ピックアップ No.26 (Python)

次は、Python 3 で1行プログラム!

haiku.py
import functools; [print(l[::-1]) for l in functools.reduce(lambda s, w: [i + j for i, j in zip(s, list(w.ljust(7, ' ')))], input().split(), [""]*7)]

縦書き変換するプログラムだね。149文字かな? もうちょっとで1ツイート分!

ピックアップ No.27 (C#)

次は、C#。

https://twitter.com/hority/status/573072238267670528

haiku.cs
using System;
using System.Dynamic;

namespace Haiku
{
    class Program
    {
        static void Main(string[] args)
        {
            ここで.一句
                .柿食えば
                .鐘が鳴るなり
                .法隆寺();
        }
    }

    class ここで : DynamicObject
    {
        public static dynamic 一句
        {
            get { return new ここで(); }
        }

        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            Console.WriteLine(binder.Name);
            result = this;
            return true;
        }

        public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
        {
            Console.WriteLine(binder.Name);
            Console.ReadKey();
            result = this;
            return true;
        }
    }
}

Main のところを見てみて。コード中に、俳句が登場するパターン! 結果は俳句をそのまま横書きで出力するよ。

ピックアップ No.2 (AppleScript)

次は、AppleScript と JavaScript とふたつの応募。

https://twitter.com/ZAKUROISHIKURO/status/573310203661189120

haiku.applescript
on displayHaiku(haiku)
	
	set haiku_lines to paragraphs of haiku -- 各行 (linesは予約後(の複数形)なので使えない!)
	set max_length to 0 -- 一番長い行の文字数
	
	repeat with ln in haiku_lines -- line、lengthは予約後なので使えない!
		set len to length of ln
		if max_length < len then set max_length to len
	end repeat
	
	set line_count to count haiku_lines -- 行数
	set tategaki to ""
	
	repeat with i from 1 to max_length
		repeat with j from 1 to line_count
			set ln to item (line_count + 1 - j) of haiku_lines -- 下の行から上の行へ
			
			if length of ln ≥ i then -- 文字がなかった場合にエラーが出るからifで分けなきゃいけない
				set chr to character i of ln -- 一文字ずつ取り出す
			else
				set chr to " " -- 文字数が足りない場合は空白で埋める
			end if
			
			set tategaki to tategaki & chr -- 文字を追加
		end repeat
		
		set tategaki to tategaki & "\n"
	end repeat
	
	--- 表示
	--- say haiku -- せっかくだから喋らせたかったけど「いにしえいけや」って喋るからやめた
	display alert tategaki buttons "よい"
end displayHaiku

displayHaiku("古池や\n蛙飛びこむ\n水の音")

AppleScript だけ紹介。ダイアログに縦書き表示。ボタンの文字も凝っていていいね。

ピックアップ No.30 (LiveCode)

今回の最後は、LiveCode という環境だよ。

よみがな情報付きのテキストを読み込んで、縦書き表示にしているみたい。コードは、HTML の中に埋め込んで書けるんだね。LiveCode の作品をたくさん応募してくれていて、また次でも紹介していくよ。

オマケ

プロ生ちゃんダミー画像生成サービス を使ってくれた作品!

paiza.IO コラボ開催中!

paiza.IO

ギノ株式会社が無料で提供しているオンライン実行環境 paiza.IO とコラボイベント開催中だよ! 対応言語が限られるけど、対応言語で応募してくれた人は、paiza.IO でも応募してみてね。