ゆとりーなの日記

日記的な事を書いて行くと思はれる

帰り道にタイトル考えてたんだけど忘れた

普通に忘れました。
まあこの時期に普通に麻雀打ってしまいましたね。打っとかないと駄目かなとか思ってしまったんですね。今回は振ったりアガったりで2東風共に2着+1*2という割と楽しい卓となりました。打っといてよかったですね。因みに今日は最後まで残らずに途中returnしたのですが、yappy氏をはじめとする強豪方は、まだ余裕で残られたので、恐らく限界まで愚者すると予想されます。というか今まだ9時になっていないので多分北斗或いは麻雀ですね。彼らに比べたら私などまだまだ賢者ですね。

今日の訳分からない動き

はてなスター100個発言

昨日Rubyネタ書いたので案の定戻りビッ値氏が沸いてました。はてなスター100個付けるとか言ってました。恐るべきRuby信者です。

yappy氏公式発言
  • Rubyでゲーム作るとかないだろ
  • 神言語はRubyではない!C++だ!

このyappy氏の公式発言に対し信者会員番号No.0x00000001番の戻りビッ値氏がどう出るかが気になるところでしたが、やはり本業のRuby信者のところを曲げる気はないみたいです。

yappy_sort 麻雀牌で実演

yappylibの標準に含まれる神がかったソートであるyappy_sortのソート様子が弗氏により麻雀牌を使って実演されました。yappy_sortの実装はpassing rubyist氏により公開されていますが、実際の使用はもっと素敵な物となっているのでここで今一度おさらいを

  • yappy_sort仕様

宣言

void yappy_sort(yappy_t *base, size_t num, bool(*compare)(const yappy_t, const yappy_t));

1、baseを別配列にコピーする。2、コピーした配列をクイックソートする。3、baseをボゴソートする。4、baseとコピーした配列を比較する。5、ソートされていなかったら関数を再帰呼び出しする。
以上が公式の仕様ですが、再帰だとあっさりスタックオーバーフローしてしまうためwhileループで実装する処理系が多いのが実情です。
弗氏の麻雀牌を使った実演では、面倒だという理由でバブルソートが比較用として使われていましたが、安定してyappy_sortは終わる気配がありませんでした。

去年の面白C/C++ソースコード大賞

何故今更こんなのをという空気はありますが、またも戻りビッ値氏がJavaコンパイル出来ないよと投げだされたソースコードが実はC++だったというホットなネタを提供してくれたので、実際生で見た面白ソースコードを紹介する流れが今日の正午ごろ出来ました。

int main(void) {
  // 色々
  void func(int val1, int val2);
}

funcが呼ばれないみたいなんだけどと言われて持ってこられたソースです。最初は全く違和感無かったんですが、良く見たら呼び出し部がプロトタイプ宣言に。というかこれコンパイル通ったんだと驚いたのを今でも覚えています。

class Foo {
public:
  Foo() {}
  int func() {
    for (i = 0; i < なんか定数; ++i) {
      // 色々
    }
  }
  int i;
};

ループ変数がまさかのパブリックメンバ変数でした。理由を訊いてみたところ暫定コードだからと返ってきました。グローバル変数にするならまだしも、メンバ変数とは新しすぎます。ここまで来るとパブリックなことがさも当然のように思えてきます。そこで私はこの手法を新しいデザインパターン「パブリック・ループ・カウンタ・パターン」と呼ぶことを提唱します。

審議コード

先の弗氏が二重ループを抜けるのにgoto文を使っていました。そこまできたないジャンプではないですが私は例外マクロに隠ぺいする以外はgoto文はちょっとという派なので、一応反対しておきました。まあでも多重ループ抜けにgotoありって人は結構いるみたいですね。因みに世界にはループ中のbreak、continueは使用禁止と言っている人もいるらしいです。
今日の訳分からない動き おしまい