サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
1: 2011-03-07 (月) 08:54:35 k-tan ソース 現: 2024-01-08 (月) 12:58:54 lina ソース
Line 9: Line 9:
--C言語の文法を全部使っていいもの(インラインアセンブラなどは不可)。サイズ制限なし。 --C言語の文法を全部使っていいもの(インラインアセンブラなどは不可)。サイズ制限なし。
--blikeを使っていれば、もうなんでもあり(アセンブラからblikeを使うなども可)。 --blikeを使っていれば、もうなんでもあり(アセンブラからblikeを使うなども可)。
--長さの基準ですが、俗に言う「1画面」を単位に考えようと思います。つまり80x25=2000文字です。しかし25行以内というわけではありません。それはあまりに読みにくくなってしまうと思うからです。スペース類を含めずに数えて2000文字なら「1画面」とします。数えるためのプログラムはあとで示します。ということでインデントなどは普通にやってもらってOKです。+-長さの基準ですが、俗に言う「1画面」を単位に考えようと思います。つまり80x25=2000文字です。しかし25行以内というわけではありません。それはあまりに読みにくくなってしまうと思うからです。スペース類を含めずに数えて2000文字なら「1画面」とします。ということでインデントなどは普通にやってもらってOKです。数えるためのプログラムはあとで示します。
-難しさについては、 -難しさについては、
---プリプロセッサ命令を使わない(だから#defineもダメ)、関数を作らない、switchを使わない、構造体を使わない、ポインタを使わない+--プリプロセッサ命令を使わない(だから#defineもダメ)、関数を作らない、switchを使わない、構造体を使わない、ポインタを使わない、ビット演算を使わない
-を基準とします。配列を使わなければさらにいいですが、使ってもいいです。使う場合は、「少し難しい」に分類します。ちなみにwhileやdo-whileも使わなければもっといいですが(つまりループはforのみ)、まあ必要だったら使ってもいいです。 -を基準とします。配列を使わなければさらにいいですが、使ってもいいです。使う場合は、「少し難しい」に分類します。ちなみにwhileやdo-whileも使わなければもっといいですが(つまりループはforのみ)、まあ必要だったら使ってもいいです。
 +-このページ群はKによって管理されているので、自作のプログラムを勝手に登録することはできません。しかしサンプルは多いほうがいいので、もしプログラムをいただければ、審査・調整の上、分類して掲載させていただきます。応募は掲示板などでお願いします。
 +*** 目次 [#b997e8bf]
 +-A: proglen <= 2000 && 配列なし
 +-B: proglen <= 4000 && 少し難しい
 +-C: C言語only
 +-D: blikeを使えばOK
 +----
 +-[[blike/works/p0001]] : (A, proglen=1230) 宇宙基地到着ゲーム
 +
 +*** 文字数を数えるプログラム [#kf0ac3d3]
 +-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コミュニティによって管理・運営されています。