トップ «前の日記(2003-04-19(Sat)) 最新 次の日記(2003-04-21(Mon))» 編集

ヅラずれなるままに

職業/趣味プログラマの日記。
リンクはご自由に。ツッコミはお気軽に。
くだらない備忘録はヅラッシュドットに。
2002|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|
2008|02|03|04|05|06|07|08|09|10|11|12|
2009|01|

2003-04-20(Sun)

_ [sh]wcにrecursive機能を

指定したディレクトリ以下に対してコマンドが発行できたらいいなぁ。**/*とかで実現できる気もするけどよくわからない。-r オプションが存在しないコマンドって使いにくいなぁ。

以下は、指定したディレクトリ以下のファイルすべての行数を出力するスクリプト。Bourne Shell 使用。

#!/bin/sh
 
# if paramters are not exist,
# the START_POINT is set current directory.
if [ $# -eq 0 ]
then
  START_POINT=.
else
  START_POINT=$1
fi
 
echo $START_POINT
 
find $START_POINT | while read FILENAME
do
  if [ -f $FILENAME ]
  then
    LINE=`cat $FILENAME | wc -l`
    echo "$LINE $FILENAME"
  else
    echo "00000000 $FILENAME"
  fi
done

コメント部分の英語が英語圏の人に通じるといいなぁ。英語勉強中。

横着プログラミング: 小粒なツールたちを見ると、whileでたくさんのファイルをひとつづつ処理することについて書いてある。while使いになれば -r オプションがなくても問題なし?

_ [Zura]素数表の作成

C言語の学習用に素数のリストを作成するプログラムを書いた。たぶん3年前。

数値が素数であるかチェックする方法: 対象数値未満の整数(1を除くすべて)で割り切れなければ素数。って、1001が素数であるかを調べるには最高で1000回の計算をしなければいけない……2 * 500 = 1000 だから 500 以上で割るプロセスは無駄になるし……効率がすばらしく悪い。

そこで、知人に教えを請うたところ「割り切れる数値にフラグを立てる」というアルゴリズムを紹介してくれた。対象の数値が素数であるかチェックするのではなく、素数でない数値にフラグを立てていく。この手法は知人のオリジナルだと思いこんでいたのだが……

久々にそんなことを調べていたら IDM | 素因数分解 | エラトステネスの篩い なるページを見つけた。先の手法は「エラトステネスの篩い」という「最も古典的な素数表作成アルゴリズム」であるらしい。数学っておもしろそうだなぁ。


  _  ∩
( '∀')彡 ゴッゴル! ゴッゴル!
(   ⊂彡
|     |
し/⌒J

ヅラがずれたらエラいこっちゃ!
書き手: NI-Lab.

トップ «前の日記(2003-04-19(Sat)) 最新 次の日記(2003-04-21(Mon))» 編集
[tDiary 参考になるリンク]
www.tdiary.org
www.tdiary.net
SourceForge.net: Project: tDiary
tDiary-users Project
tDiary のテーマ一覧
tDiary ドキュメント
tDiary.Net 運営委員会