Yak!の日記: 今更 blog 開設
こんなところを見ている人も居ないと思いますが、C++11 Advent Calendar および Boost Advent Calendar を機に http://yak-ex.blogspot.com/ を開設しました。プログラミング、ソフトウェア関連のネタは(どれだけ書くかはともかく)以降そっちに書くと思います。
今週も投票をしましたか?
こんなところを見ている人も居ないと思いますが、C++11 Advent Calendar および Boost Advent Calendar を機に http://yak-ex.blogspot.com/ を開設しました。プログラミング、ソフトウェア関連のネタは(どれだけ書くかはともかく)以降そっちに書くと思います。
とりあえず碧の軌跡クリアしたので雑多な感想など。
■総合
プレイ時間 123:15:34。寝落ちや放置も含んでると思いますが。獲得実績 34/56 2250pt。みーしぇのイベントだけ検索かけちゃいましたが他はノーヒント。結構頑張った方じゃないでしょうか。アニエス揃えられたのは嬉しかったですね。
なのですが感想というと、うーん。ラスト絵のところに空の軌跡の時のようにメッセージが出るんですが "Comletedly Finished" になってました。なんか違う。そぅ、クリア後の感想としてもなんか違うというかもっと良くできたんじゃないの?という気が。特に最後、単純に流れを見せられるだけなのはどうかと。同一世界観で話が続いていくのはともかくクロスベルの話としてはきちっとけりをつけてもらわないと。一旦エンドでその後プレイアブルにクロスベル解放してくれれば満足してたような気もします。
■ラストダンジョン
タレコミ中の記述がなんとなく実施例での記述っぽかったので請求項を見てみました。実施例はほとんど見てません。
不愉快度、というものは請求項自体には書かれていません(実施例には書かれているようです)。判定対象と類似したドキュメント群の許可できない部分と一致する部分を判定対象のドキュメントが持つかどうかで判断して、コンテンツの承認、却下を決める方法、になっています。
また、従属クレームで以下のような判定基準が書かれています。
・フレーム更新間隔が短いもの
・ユーザー操作なしに音楽、映像をダウンロードするもの
・ドキュメント自身以外からデータを持ってくるもの
・ネットワーク接続を開くもの
・ハードウェアにアクセスするもの(例:マウス、ゲームコントローラ)
・擬似乱数生成器を持つもの
・ループ回数が大きいもの
・画像の質に対する判定(例:境界がはっきりしない、サイズが大きい、(フレーム間での)コントラストの変更率、色の変更率、(おそらく反転や明度変更のような)変換を含む率)
> whether the document comprises computer code that opens network connections.
ネットワーク接続を開くコード、の誤訳でしょう。
コメント付いているのに気付いてませんでした。
その説明は誤りだと思います。2. の時点で既に領域が無効だ、という説明かと思いますが、その場合、同様の議論が struct ではなく int に対しても成立し以下のコードも誤りとなってしまいます(3. で持ってくるのはアドレスではなく値になりますが領域自体が無効なら議論は同じです)。
int addressee(void) {
int result = 5;
return result;
}
int main(void) {
printf("Hello, %d!\n", addressee());
return 0;
}
さすがにこのコードが誤りだと関数の戻り値は全て使えないことになってしまいます。確かに result は関数内で確保されていますが値返しで返ってくるため再度スタック上に積まれて呼び出し側でも有効な状態で返ってきます。問題はそのスタック上の値がいつまで有効か、です。C99 規格上では次の副作用完了点まで有効ですので以下のコードは未定義動作を含みません(次の副作用完了点は printf 呼び出しなのでその前に a[0] の評価は完了する)。嫌な例でわざわざ f() 呼び出しが入っているのは別の副作用完了点を入れて問題を起こすため、です。
int main()
{
printf("%c%c!\n", addressee().a[0]);
return 0;
}
Twitter 上で C++ STL の vector に関して評価順序不定ではまっているコードの例が流れていてそこから C 言語における(規格上の)落とし穴に行き着いたのでメモ。
// from http://www.jpcert.or.jp/sc-rules/c-exp35-c.html
#include <stdio.h>
struct X { char a[6]; };
struct X addressee(void) {
struct X result = { "world" };
return result;
}
int main(void) {
printf("Hello, %s!\n", addressee().a);
return 0;
}
ooo-o--- で 39pts 594 位。Round 2 は通過ならず。仕方ないというか大健闘と言っていい感じかと。初の T シャツゲットです、多分。とりあえず small 専業と割り切ったのはレベル相応で悪くない判断だったと思っています。B-large、C-large、D-small は解けても良かったかもと思わないでもないですが、バグ無しで思ったコードをさくっと書けないというコーディング力や、練習が足りないという点も含めてやっぱり実力がちょっと足りなかったと思います。なお、以下は Contest Analysis を読まない状態で書いています。
A. Airport Walkways
速度が遅いところから greedy に t 秒とっていけばいいだけ。
int main(void)
{
ios_base::sync_with_stdio(false);
きっと誰かやってるだろうと思いつつ書いてみたら案の定 @iorate さんが直近で同様の事をやっているわけだが折角なので晒してみる。
なんとか R1B 枠で通過しました。
R1A Problem A. FreeCell Statistics
5/14(土)の Boost.勉強会 #5 名古屋で発表してきました。ぶっちゃけ GC 本勉強会の LT を入れてすら発表 2 回目という状況だったのですが、cpp_akira さんのプレッシャーに背中を押して頂いて手を挙げました。Boost.勉強会でそれも Spirit テーマとか無謀だろうという感じでしたがまぁなんとか。
「春のlock free祭り」 (kumagi)
一応 GCJ は毎回書いてるようなので今回も書いてみます。一応無事全問正解でした。のんびり書いてたんであんまり意味はないですが。今回は C++0x で書いてみよう、というコンセプトで書いてます。共通分テンプレートは最後にあります。何となくマクロ使わない派だったのですが RNG だけ入れてしまいました。
Problem A. Bot Trust
まぁ、シミュレーションですね。そしてのっけから 0x 不要なコードです。珍しく読み取りながら計算してるコードで書きました。割と A 面倒みたいなコメントも見かけましたが結構きれいに書けたんじゃないでしょうか。ちなみに small 提出しようとしたら Case #x: の形式が違うって言われて慌てて時間内に修正して submit したりもしました。
inline UI absdiff(UI a, UI b) { return a > b ? a - b : b - a; }
何かおかしいなと思って軽く元論文を流し読みしてみました。
まず URL 付きの tweet が解析対象です。
また、Twitter List の情報を元にアカウントを celeb, media, org, blog にカテゴリ分けしています。
この内、リスト登録数上位から各 5,000 アカウントを取ったところ(4カテゴリ×5,000=2万=0.05%)、
カテゴリ分けされなかった(通常の)ユーザーからサンプリングした 10 万人のフォロー、および各人が受け取る
tweet の約半分を占めていた、という話のようです。
こう書くとまぁ普通ですよね。
なお、この話は論文の 1/3 くらいで前振りのようなものだと思います。
nagoya313 さんの記事「Boostのfusionとspiritやばい」で Boost.Spirit.Qi を使ってカンマ区切りのデータを Fusion シーケンスに突っ込む例が紹介されている。これはこれで簡潔なのだがせっかく構造体を Fusion にアダプトしていてメンバの型情報がとれるはずなのに parse() に渡すルールのところでもメンバの型情報を指定しなければならないのが悲しい感じである。どうせならルールを自動生成したいところだ。
Boost Spirit Qi の rule と Skipper についてちょっと戦った結果のメモ。
Boost Spirit Qi の Parser コンセプトに従う p は
p.parse(f, l, context, skip, attr)
の形の式が有効でなければならない。基本的に parse は以下のように定義されているので任意の型の Skipper を受け取れるはずである。
目つきのヤバい少年がナイフをシュッ・シュッと振り回しながら街を徘徊している情景が目に浮かんだ -- あるセキュリティ専門家