awkについて語るスレ $3 (161レス)
awkについて語るスレ $3 http://mevius.5ch.net/test/read.cgi/tech/1600054668/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
74: デフォルトの名無しさん [sage] 2024/06/18(火) 13:24:24.39 ID:Yg9xtfWz awkでC言語のソースを自動生成したことあるぞ 30ウン年前 三角関数のテーブル 360度を256等分して、2バイト符号付き整数でsinとcosが32768分のいくつかっていうのを並べたテーブル http://mevius.5ch.net/test/read.cgi/tech/1600054668/74
75: デフォルトの名無しさん [sage] 2024/06/18(火) 13:55:32.44 ID:Yg9xtfWz Copilot それは非常に興味深いプロジェクトですね。AWKを使ってC言語のソースコードを自動生成するのは、特に数学的な計算やデータ処理が必要な場合に便利です。三角関数のテーブルを生成するというのは、特に組み込みシステムやリアルタイムアプリケーションで役立つことでしょう。 AWKはテキスト処理に特化したプログラミング言語であり、行単位のデータを処理するのが一般的な使い方ですが、プログラミング言語としての機能も備えているため、行単位のデータ以外を処理することも可能です。 例えば、360度を256等分して、各角度に対するsinとcosの値を2バイト符号付き整数で表現するテーブルは、以下のようなAWKスクリプトで生成できます。 BEGIN { for (i = 0; i < 256; i++) { # 角度をラジアンに変換 rad = i * (2 * 3.14159265358979323846 / 256); # sinとcosの値を計算 sin_val = int(sin(rad) * 32768); cos_val = int(cos(rad) * 32768); # テーブルに値を出力 printf "%d, %d,\n", sin_val, cos_val; } } このスクリプトは、0度から355度までの各角度に対して、sinとcosの値を計算し、それを32768でスケーリングして整数に変換し、テーブルとして出力します。AWKは数値計算にも対応しているため、このような用途にも適しています。 もし現代の環境で同様のテーブルを生成したい場合は、AWKだけでなく他のツールや言語を使う選択肢もありますが、AWKはそのシンプルさとポータビリティで依然として有用です。もし何かお手伝いできることがあれば、お知らせください。 http://mevius.5ch.net/test/read.cgi/tech/1600054668/75
87: デフォルトの名無しさん [sage] 2024/06/18(火) 16:54:28.15 ID:Yg9xtfWz 検索エンジンでなくAIに聞く練習をしてみた 自分 "awk gentab.awk -h" とやればヘッダが生成され、"awk gentab.awk -s" とすればソースが生成されるようにするにはどうすればいいんでしたっけ。 Copilot AWKで特定のオプションに応じて異なる出力を生成するには、コマンドライン引数を処理するロジックをスクリプトに組み込む必要があります。-h オプションでヘッダを、-s オプションでソースを生成するようにするためには、以下のようなAWKスクリプトを書くことができます。 https://ideone.com/0gT1PT このスクリプトは、コマンドライン引数をチェックして、-h が指定された場合はヘッダファイルの内容を、-s が指定された場合はソースファイルの内容を出力します。exit ステートメントは、それぞれのセクションの出力後にスクリプトの実行を終了させるために使用されます。 スクリプトを gentab.awk として保存した後、以下のコマンドを実行することで、それぞれのファイルを生成できます。 awk -f gentab.awk -h # ヘッダファイル生成 awk -f gentab.awk -s # ソースファイル生成 AWKスクリプトの詳細な使い方やオプションについては、オンラインのマニュアルやドキュメントを参照すると良いでしょう。もし他にも質問があれば、お気軽にどうぞ。 http://mevius.5ch.net/test/read.cgi/tech/1600054668/87
88: デフォルトの名無しさん [sage] 2024/06/18(火) 17:12:04.60 ID:Yg9xtfWz ええっと、これを貼らなきゃ見えないのかな https://ideone.com/e.js/0gT1PT http://mevius.5ch.net/test/read.cgi/tech/1600054668/88
90: デフォルトの名無しさん [sage] 2024/06/18(火) 19:12:23.97 ID:Yg9xtfWz こういう、固定小数点の三角関数が欲しい時にawkに生成させる話さ short sin_table[] = { 0, 6392, 12539, 18204, 23169, 27244, 30272, 32137, 32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392, 0, -6392, -12539, -18204, -23169, -27244, -30272, -32137, -32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392, }; short cos_table[] = { 32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392, 0, -6392, -12539, -18204, -23169, -27244, -30272, -32137, -32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392, 0, 6392, 12539, 18204, 23169, 27244, 30272, 32137, }; http://mevius.5ch.net/test/read.cgi/tech/1600054668/90
93: デフォルトの名無しさん [sage] 2024/06/18(火) 19:32:36.51 ID:Yg9xtfWz >>74で伝えてるじゃん http://mevius.5ch.net/test/read.cgi/tech/1600054668/93
95: デフォルトの名無しさん [sage] 2024/06/18(火) 19:48:33.05 ID:Yg9xtfWz >>94 >>90を見ればちゃんとだいたい三角関数になってるじゃん 簡単のため256等分を32等分にしようって提案しただけ http://mevius.5ch.net/test/read.cgi/tech/1600054668/95
97: デフォルトの名無しさん [sage] 2024/06/18(火) 21:38:40.47 ID:Yg9xtfWz >>96 それをループ展開するのさ http://mevius.5ch.net/test/read.cgi/tech/1600054668/97
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s