「#俳句プログラミング プチコンテスト 2015」ピックアップ Vol. 3
慧: おまたせ! 「俳句プログラミング プチコンテスト」の応募されたコードをピックアップして紹介していくよ。今回はその3回目。毎回言うけど、別に良い悪いって話じゃないからね! たくさん応募があるから、他の人のコードを別言語に移植や、バグがあったらつっこむのもアリだよ!
ピックアップ No.21 (Ruby)
最初は、Ruby。ツイートで済む長さだね。
@paiza_run ruby:s=["古池や","蛙飛び込む","水の音"]
puts "n#俳句プログラミング @pronama"
7.times{|i|
2.downto(0){|j|
print (s[j][i]==nil)?" ":s[j][i]
}
puts}— らなとす@博課ピヨピヨ (@Ranats85) March 2, 2015
ツイートすると実行結果を返してくれる @paiza_run を利用した作品。結果はこちら。
@Ranats_rifle
#俳句プログラミング @pronama
水蛙古
の飛池
音びや
込
む
#paiza_run_result
— paiza_run (@paiza_run) 2015, 3月 2
ピックアップ No.22 (C#)
次は、C#。斜め上を目指す?
@pronama 俳句プログラミング、参加してみたよー!斜め上を目指しました。http://t.co/9XZ5fN1CL7 #俳句プログラミング
— オノッチ (@onotchi_) March 3, 2015
ほんとに斜め上だよ! コードは、俳句プログラミング – Onoty3D から。
ピックアップ No.23 (Excel VBA)
次は、Excel VBA の作品。
Excel VBAで俳句を縦書き表示。一文字ごとにセルを一つ使っています。俳句、フォントの種類・サイズ、セルのサイズの変更はご自由に。 #俳句プログラミング https://t.co/YBijPDXgx5 pic.twitter.com/6HGoqFrqiM
— ありにゃん@PC・IT用 (@Win_CSharp) March 3, 2015
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
title "#俳句プログラミング "
font "@MS P明朝",42
pos 10,10
mes "古池や\n 蛙飛び込む\n 水の音"
pos 200,200
celput 0, 0, , ,(M_PI/2)
縦書きフォントで描画して、画像を回転するっていうアイデア賞!
ピックアップ No.25 (SmileBASIC)
次は、プチコンの SmileBASIC だよ。
.@pronama #俳句プログラミング #smilebasic #petitcom
「春の海 ひねもすのたり のたりかな」です。海を眺めて波の音を聴きながら過ごしましょう。 http://t.co/D9ZvrXpjMz pic.twitter.com/zTbzg8VX4H— Gust Notch? (@gust_notch) March 3, 2015
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行プログラム!
Python3 もうちょっと何とかしたいけど… #俳句プログラミング @pronama http://t.co/QZCd4nt0ux
— みすと / 明衣(あかは) (@mist_akaha) March 4, 2015
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
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
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 という環境だよ。
Windowsの不具合を修正しました。
「奥の細道 縦書き」 http://t.co/u8jNibpBQ2 #俳句プログラミング pic.twitter.com/01zIRIPPqA— Kenji Kojima ある時は 小島健治 (@kenjikojimacom) March 5, 2015
よみがな情報付きのテキストを読み込んで、縦書き表示にしているみたい。コードは、HTML の中に埋め込んで書けるんだね。LiveCode の作品をたくさん応募してくれていて、また次でも紹介していくよ。
オマケ
プロ生ちゃんダミー画像生成サービス を使ってくれた作品!
@pronama http://t.co/uTNn64kHFu 流石にこれは #俳句プログラミング ではないけど! pic.twitter.com/mnvOvxWSZN
— たけまる (@felis_catus_) March 5, 2015
paiza.IO コラボ開催中!
ギノ株式会社が無料で提供しているオンライン実行環境 paiza.IO とコラボイベント開催中だよ! 対応言語が限られるけど、対応言語で応募してくれた人は、paiza.IO でも応募してみてね。




