サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  

blikeによるプログラム作品集 anchor.png

  • (by K, 2011.03.07)
Page Top

背景やルールなど anchor.png

  • blikeでどんなことができるのかを分かってもらう簡単な方法はサンプルプログラムを用意することだと思います。それで、そういうページを作ってみました。
  • しかし、ただだらだらと書いても面白くないので、いくつかの部門に分けます。
    • あまり長くない上に、難しい構文を使わないもの。
    • 少し長くて、少し難しいもの。
    • C言語の文法を全部使っていいもの(インラインアセンブラなどは不可)。サイズ制限なし。
    • blikeを使っていれば、もうなんでもあり(アセンブラからblikeを使うなども可)。
  • 長さの基準ですが、俗に言う「1画面」を単位に考えようと思います。つまり80x25=2000文字です。しかし25行以内というわけではありません。それはあまりに読みにくくなってしまうと思うからです。スペース類を含めずに数えて2000文字なら「1画面」とします。ということでインデントなどは普通にやってもらってOKです。数えるためのプログラムはあとで示します。
  • 難しさについては、
    • プリプロセッサ命令を使わない(だから#defineもダメ)、関数を作らない、switchを使わない、構造体を使わない、ポインタを使わない、ビット演算を使わない
  • を基準とします。配列を使わなければさらにいいですが、使ってもいいです。使う場合は、「少し難しい」に分類します。ちなみにwhileやdo-whileも使わなければもっといいですが(つまりループはforのみ)、まあ必要だったら使ってもいいです。
  • このページ群はKによって管理されているので、自作のプログラムを勝手に登録することはできません。しかしサンプルは多いほうがいいので、もしプログラムをいただければ、審査・調整の上、分類して掲載させていただきます。応募は掲示板などでお願いします。
Page Top

目次 anchor.png

  • A: proglen <= 2000 && 配列なし
  • B: proglen <= 4000 && 少し難しい
  • C: C言語only
  • D: blikeを使えばOK

Page Top

文字数を数えるプログラム anchor.png

  • proglen0.c
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, unsigned char **argv)
    {
        unsigned char *b = malloc(1024 * 1024);
        FILE *fp;
        int s, i, l;
        char f;
        if (argc >= 2) {
            fp = fopen(argv[1], "rb");
            if (fp != NULL) {
                *b++ = 0;
                s = fread(b, 1, 1024 * 1024 - 2, fp);
                fclose(fp);
                f = 0; l = 0;
                for (i = 0; i < s; i++) {
                    if (b[i] == '\n') f = 0;
                    if (b[i] == '\"' && b[i - 1] != '\\') f ^= 1;
                    if (f != 0 || b[i] > ' ') l++;
                }
                free(b - 1);
                printf("proglen = %d\n", l);
            }
        }
        return 0;
    }
  • まだblikeでファイルやコマンドラインをどう扱うかを決めてなくて、とりあえず標準関数で書きました。すみません。
  • このproglen0.cのproglenは367になりました。

トップ   凍結解除 差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。