「#俳句プログラミング プチコンテスト 2015」ピックアップ Vol. 1
慧: こんにちは! 「俳句プログラミング プチコンテスト」の応募されたコードをピックアップして紹介していくよ。毎回言うけど、別に良い悪いって話じゃないからね! たくさん応募があるから、他の人のコードを参考にアップデートしてもいいし、バグがあったらつっこむのもアリだよ!
みんなのツイート
みんなのコードを見るには、Togetter まとめ から。たくさん応募待ってるよ~。
ピックアップ No.1 (なでしこ)
ひとつ目は、最初の応募作品。「ソースコードで俳句」部門だね。
#俳句プログラミング @pronama
【ソースコードで俳句部門】手始めに簡単なプログラムをば.https://t.co/hemz7itLdK— 3846masa (@3846masa) February 26, 2015
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# @3846masa | |
尋ねたら | |
それを2で割り | |
言ってやる |
なでしこだと、575 できちゃうんだね。季語が難しそうだけど。
ピックアップ No.2 (F#)
次は、F# で縦書き表示だね。今回いろいろなコードを募集しているけど、お題に困ったら縦書き表示のプログラムを応募してみてね。
https://twitter.com/Myoga1012/status/570856300931719169
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// コマンドライン引数に俳句を半角スペースで5・7・5に区切って入力してから、実行します。 | |
[<EntryPoint>] | |
let main argv = | |
// 文字数1番多い行の文字数を求めます。 | |
let max = ( argv |> Seq.maxBy( fun a -> a.Length ) ).Length | |
// 各行は上で求めた文字数になるように、全角スペースで末尾をパディングします。 | |
let argv2 = argv |> Array.map( fun a -> a.PadRight( max, ' ' ) ) | |
// 文字列のを縦書きになるように並び替えて、出力します。 | |
Array.init max ( fun i -> System.String( [| for j in 0..argv2.Length – 1 -> argv2.[j].[i] |] |> Array.rev ) ) | |
|> Array.iter( fun v -> v |> printfn "%s" ) | |
0 |
俳句自体は、コマンドライン引数に 5 7 5 に区切って入力っていう方法だね。
ピックアップ No.3 (C++)
続いて、C++。これは、俳句を出力しているし、コード中に俳句も書かれているパターンだよ。
@pronama さすがにやっつけすぎるかと思ったのでつけなかったのですけど、枯れ木も山の賑わいということで http://t.co/7AhE6YUg2c #俳句プログラミング
— みすと / 明衣(あかは) (@mist_akaha) February 26, 2015
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
#define kakikueba int main() { cout << "huruikeya\n"; | |
#define kaneganarunari cout << "kawazutobikomu\n"; | |
#define houryuuji cout << "mizunooto\n"; return 0;} | |
kakikueba | |
kaneganarunari | |
houryuuji |
ピックアップ No.4 (CoffeeScript + HTML)
次は、CoffeeScript。
https://twitter.com/MysticDoll/status/570938725191933952
https://twitter.com/MysticDoll/status/570951449808515072
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
do -> | |
poems = [ | |
{creator: "正岡子規", kamigo: "赤とんぼ", nakashichi: "筑波に雲も", shimogo: "無かりけり"}, | |
{creator: "松尾芭蕉", kamigo: "五月雨を", nakashichi: "集めてはやし", shimogo: "最上川"} | |
] | |
haikuVM = new Vue | |
data: | |
haikus: poems | |
haikuVM.$mount '#haiku' | |
return |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/0.11.5/vue.min.js"></script> | |
<style>h3{white-space: pre }</style> | |
</head> | |
<body> | |
<div id="haiku"> | |
<div v-repeat="haikus"> | |
<h1>{{creator}}</h1> | |
<h3> {{kamigo}}</h3> | |
<h3> {{nakashichi}}</h3> | |
<h3> {{shimogo}}</h3> | |
</div> | |
</div> | |
<script src="./haikuVue.js"></script> | |
</body> | |
</html> |
単純に俳句を表示する部類に入ると思うけど、Vue.js というデータバインディングライブラリを使った作品。後発のライブラリで、軽量・高速が特徴みたいだよ。
ピックアップ No.5 (RFO BASIC)
@pronama タグ忘れた→作りました!でも、なぜかシュールに…汗 言語はBASIC!(RFO BASIC) 3句地味に表示するだけです。 #俳句プログラミング
ソース:http://t.co/jojTxgeeWo 動画:http://t.co/vhqjZwtV8Z— basictomonokai (@basictomonokai) February 26, 2015
次は、BASIC! で、Android 環境だよ。RFO BASIC! for Android という環境を利用しているみたい。
私の画像データも活用してくれている作品で、オリジナルの俳句を表示しているよ。
コードは、長すぎるので省略! 画像データも base64 形式でコードに埋め込まれているから、すごいことに……。
ピックアップ No.6 (SmileBASIC)
次は、プチコンの SmileBASIC。
色々とミスがあったんで修正しました。一画面です。 #俳句プログラミング #petitcom @pronama pic.twitter.com/1PJtUb72SL
— otta@べ~しっ君💻 (@otta777) February 26, 2015
@pronama #俳句プログラミング 画面はこんな感じです。平仮名だと5・7・5文字とは限らないのでプログラムにはちょっと細工が要ります。今どうするか思案しています。(^^;; pic.twitter.com/2FiG6toAQz
— otta@べ~しっ君💻 (@otta777) February 27, 2015
縦書き変換のプログラムに加えて、27行目の TALK 命令で、音声出力もあるのがポイントかな。プチコンならではの手軽さだね。
ピックアップ No.7 (BASIC)
次は、ポケコン SHARP PC-1260 で BASIC!
I—–I
Iヘ マ ホI
I゙ タ ゚I
I! ゙ ケI
Iシ マ コI
Iッ タ ンI
Iク ゙ モI
I ケ I
I ゙ I
I ン I
I エ I
I キ I#俳句プログラミング@pronama pic.twitter.com/8PK0iUNxyL— まぼろしのおに@復帰準備中 (@Mavoroshi_Oni) February 26, 2015
使用言語:BASIC
使用機材:SHARP PC1260+CE-125S
■ソースhttps://t.co/dDDPsU26MQ
■動画(まだ処理中)https://t.co/LsAH8QOPjU#俳句プログラミング@pronama— まぼろしのおに@復帰準備中 (@Mavoroshi_Oni) February 26, 2015
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 CLS | |
20 DIM S$(3)*24: DIM SS$(3)*24 | |
30 S$(2) = "ポケコンモ" | |
40 S$(1) = "マダマダゲンエキ" | |
50 S$(0) = "ベ!シック" | |
60 LPRINT "I——-I" | |
70 FOR I=1 TO 24 | |
80 FOR J=0 TO 2 | |
90 SS$(J) = MID$(S$(J), I, 1) | |
100 IF SS$(J)="" THEN LET SS$(J)=" " | |
110 NEXT J | |
120 IF SS$(0)=" " AND SS$(1)=" " AND SS$(2)=" " THEN GOTO 150 | |
130 LPRINT "I " +SS$(0)+" "+SS$(1)+" "+SS$(2)+ " I" | |
140 NEXT I | |
150 LPRINT "I——-I |
機械がが古すぎて印字がうまくできなかったみたいだけど、LPRINT 命令で、紙に出力するのがポイントだね。
ピックアップ No.8 (jQuery)
JavaScript(jQuery)の作品。
jQuery (JavaScript) で作ってみました。無理やり縦書きです。いろいろな俳句を入れてみて下さい。一部を勝手に書き換えます!https://t.co/6ppCXXvNQK@pronama #俳句プログラミング pic.twitter.com/LDj2SkaGHr
— たけまる (@felis_catus_) February 26, 2015
ちょっと AA みたいな縦書きの方法だね。俳句を入力して実行するんだけど、goo 形態素解析 API を使って、一部の単語をが置き替えちゃって新しい俳句を作るのが新しい!
ピックアップ No.9 (Ruby)
Ruby の作品。
@pronama ランダムな俳句を生成しますが辞書ファイルが別に必要です… #俳句プログラミング https://t.co/kYsuqmust4 pic.twitter.com/ivLyCBwkYz
— きしもと (@ksmakoto) February 27, 2015
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/local/bin/ruby21 | |
require 'csv' | |
F, S = [], [] | |
open("naist-jdic.csv", "r:EUC-JP:UTF-8"){|file| | |
file.each_line {|buf| | |
a = buf.split(",") | |
next if a[13] != "" | |
if a[11].length == 5 then F << a[0] | |
elsif a[11].length == 7 then S << a[0] | |
end | |
} | |
} | |
loop { | |
print "%s %s %s\n" % [F.sample, S.sample, F.sample] | |
sleep 1 | |
} |
辞書データ「NAIST Japanese Dictionary」を読み込んで、5 7 5 の単語からいろいろな俳句を出力する、俳句生成系のパターン! もう少し俳句っぽくなるデータの辞書だとよさそう。
ピックアップ No.10 (Ruby)
次も Ruby の作品。
@pronama https://t.co/9sfyvMdFjJ
尾崎放哉の「咳をしても一人」を表現しました。
他人がいればいるほど、一人って強調されるよな〜と思って。
配列[cough]をシャッフルして、この順番になったときに咳をするようにしています。#俳句プログラミング— はっとりぬ (@moroku0519) February 27, 2015
@pronama 実行結果はこんな感じです。 pic.twitter.com/aiqX219A8O
— はっとりぬ (@moroku0519) February 27, 2015
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sounds=%w(c o u g h) | |
cough = sounds.shuffle | |
count = 0 | |
while (sounds != cough) | |
cough.shuffle! | |
print sounds != cough ? "(⊙ ω ⊙)" : " (´・ω・`)ゴホン " | |
count += 1 | |
(1..count).each{|c| print c != count ? "(⊙ ω ⊙)" : "(⊙ ω ⊙)\n" } if sounds == cough | |
end | |
p "咳をしても一人" | |
p (count*2).to_s + "人の中で一人です" |
自由律俳句「咳をしても一人」を表現した意欲作! たくさんの顔文字の中で、ひとりだけ咳をしている顔文字が出力されるよ。
以上、Vol.2 へ続く!
応募方法は、「プロ生ちゃん #俳句プログラミング プチコンテスト 2015」を確認してね。ハッシュタグと「@pronama」を含めてツイートだよ!
最新記事 by kei (全て見る)
- HSP プログラムコンテスト2024 結果発表&プロ生ちゃん賞発表! #hsp3 - 2024/12/13
- プロ生ちゃんチョコプログラミングコンテスト2024開催! - 2024/02/13
- HSP プログラムコンテスト2023 結果発表&プロ生ちゃん賞発表! #hsp3 - 2023/12/04