inaniwa3の日記

2012-05-02

第22回世界コンピュータ将棋選手権

| 10:44

第22回世界コンピュータ将棋選手権

http://www.computer-shogi.org/wcsc22/


明日から開催です。


22回世界コンピュータ将棋選手権生放送

http://blog.nicovideo.jp/niconews/2012/05/032402.html


ニコニコで生放送もあるようです。

2012-05-01

Giuliaさんによるコード解説

| 22:01

IOCCCを見ましたという方からメールをいただきました。

Giuliaさんという方です。

ブログに私のコードの解析記事を書かれていたので紹介します。


Scrammed!: IOCCC: C code obfuscation at its best!

http://scrammed.blogspot.jp/2012/04/ioccc-c-code-obfuscation-at-its-best.html


こう丁寧に解説されるとちょっと照れちゃいますが、うれしいですね。

2012-04-28

Heroku を使って Twitter Bot を作るまで

| 22:16

ちょっと前に Twitter Bot を作ったので、そのときの記録です。

作ったのはこれ。


トリビア自動生成bot

http://twitter.com/#!/he_button_kun



きっかけ

なんとなくネットサーフィンしてたら、Google App Engine

というサービスの紹介記事を発見。これはおもしろそうと

いうことでいろいろ調べてたら、今度は Heroku ってのも発見。

で、どっちかを試してみようと思ったのですが、

Ruby を使ってみたかったので、Ruby が使いやすいらしい

Heroku にしました。



調べる

Web プログラミングみたいなのは初めてだったので、

数日間は入門者向けの記事を探しては読んでということを

繰り返してました。

そんな中、こちらのブログを発見。


Herokuを使って1日1回名言をツイートするTwitter Botの作り方 - アインシュタインの電話番号☎

http://d.hatena.ne.jp/ruedap/20110209/ruby_heroku_twitter_bot


とてもわかりやすいまとめだったので、

とりあえずはこちらの手順どおりに Twitter Bot を

作ってみることにしました。つぶやく内容は、

10年くらい前に自分で作ったトリビア自動生成

プログラムというのを流用することにしました。

文章の自動生成といってもたいしたことはしてなくて、

5W1Hゲームの仕組みみたいなものです。



作る

作成は、上で紹介したブログの通りに進めれば、

基本的にはOKでした。

ちょっと詰まったのはこの辺。

require 'app.rb'

だとダメで、

require './app.rb'

みたいに書く。

コードの先頭に

# -*- encoding: utf-8 -*-

と書いておくとうまくいく。

あとは、Gemfile.lock の PLATFORMS が

x86-mingw32 みたいになってると

push してもうまくいかないみたいなので、

PLATFORMS
  ruby

こんな感じで ruby に書き換える。

理由はよくわかってないんですが、

私の環境が Windows だからかもしれません。



感想

と、いうわけで完成しました。

Ruby はほとんど初めて、git も初めてということで、

初めてなことだらけでしたが、1週間くらいでできたと思います。

サーバーの設定云々も必要なく、しかも全部無料と、

ありがたい話です。


けっこう楽しかったので、また何か作りたいなあと思ってます。

今は「初めてのRuby」って本を買ってきて、読んでるところです。

2012-04-19

IOCCC 自作解説

| 12:06

公開されました。

http://www.ioccc.org/2011/whowon.html


私のはこれ、キーボードを出力するプログラムです。

main(_,l)char**l;{6*putchar(--_%20?_+_/21&56>_?strchr(1[l],_^"pt`u}rxf~c{wk~zyHHOJ]QULGQ[Z"[_/2])?111:46:32:10)^_&&main(2+_,l);}

使い方はこちら。

http://www.ioccc.org/2011/konno/hint.html


普通のワンライナーをひとつは出そうと思っていて、

いくつか作った中からこれを応募しました。

いろいろ作ってたので、なんでキーボードを

出力しようと思ったのかは覚えてないです。


ゴルフ的にはもう少し短く書けると思いますが、

forをmain再帰にしたり、XORをとったりして、

一見なんのプログラムかわからないように工夫しています。

今回運よく入賞できたのは、提出した説明ファイルに

書いておいた使い方の例(リンク先の「Try:」以下)が、

まあまあよかったからじゃないかなと思ってます。


一番最初に書いたのはこれです。

int i,f,j;main(a,p)char**p;{for(;i++<154;f+="\x17+DVq~"[f]==i)
putchar(i%22?f%2?++j%2?strchr(p[1],a="(.<+- ,06)8*=?>1325#!:/;74"[j/2]^89)?a^32:32:35:35:10);}

思いのほか長くなってしまったのでどうしようかと思ってましたが、

出力形式を変えることでなんとか形になりました。


他の方の作品では、Best of Showがすごいですね。

ちょっとした恐怖でした。あとは電卓のが好みです。

お絵かきロジックは母がよくやってたので、

詰まってたらソルバ教えてあげようかな…。

2012-03-16

IOCCC ボツ作品供養 その4「ワンライナー」

| 20:28

#include <stdio.h>
#define n(oo,oO,Oo,OO) oo##OO##oO##Oo

n
(
c
,
a
,
r
,
h
)
c
[
2
]
,
a
=
1
;
n
(
m
,
i
,
n
,
a
)
(
m
,
i
)
n
(
c
,
a
,
r
,
h
)
*
i
[
]
;
{
a
^
m
?
*
c
=
*
a
[
i
]
,
i
[
a
]
=
1
+
a
[
i
]
,
a
=
!
*
c
+
a
,
n
(
p
,
t
,
s
,
u
)
(
c
)
|
n
(
m
,
i
,
n
,
a
)
(
m
,
i
)
:
a
;
}


縦方向のワンライナーです。


縦一行で書こうと思うと、

++や&&、10以上の数などが書けないという制限が発生します。

ただ、関数名などについては仕方がなかったので、

##でくっつけています。この辺がイマイチ。


使い方としては、

./a.out foo bar

みたいに書けば、foo、barが縦書きで出力されます。


プログラムに付属させる説明文は、

「ワンライナー書くつもりが、方向間違っちゃったよ。HAHA」

という感じのジョークから始めたんですが、

スベったようです。


落選。

IOCCC ボツ作品供養 その3「ジョン・ケージ」

| 20:26

main(){sleep(273);}


ジョン・ケージの「4分33秒」を演奏するプログラムです。


一応、応募時に気をつけてはいたんですが、

さっき検索したら同じプログラムが見つかりました。

http://twitter.com/#!/liquidgecka/statuses/3434339717


これはダメです。

落選。

nn_xnn_x 2012/03/17 23:41 ジョンケージとは、また、ずいぶんとしぶいところを突いてきましたね。
入賞作はまだ公開されていないみたいですね。mid-Marchとなっていたのでそろそろでしょうか。

inaniwa3inaniwa3 2012/03/18 00:10 一時、実験音楽みたいなのよく聞いてました。
公開は私も待ってるんですが、遅れてるみたいです。
つい最近、他の受賞者の人が審査員つついて
ようやく最終確認に動き出したというところなんですが、
この調子だと来月以降になるかなと思ってます。
過去の例見ても、時間にはけっこういい加減な大会のようなので、
気長に待つのがいいかもしれませんね…。