約 2,556,005 件
https://w.atwiki.jp/sevenlives/pages/1809.html
プログラム・カウンタ 読み:ぷりぐらむかうんた 英語:program counter 別名: 意味: プログラムカウンタとは、次に実行する命令のアドレスを指し示すレジスタのこと。 CPU内にあり、命令が行われると次の命令の位置を教えることでプログラムを順番どおりに実行することができる。 2009年12月07日 CPU レジスタ
https://w.atwiki.jp/www-iris/pages/1316.html
【システム名】 シールド系プログロム 【読み方】 しーるどけいぷろぐらむ 【分類】 プログラムパーツ 【該当パーツ】 ブロック/シールド/リフレクト 【登場作品】 『3』~『6』 【詳細】 『3』から登場したナビカスタマイザーに組み込むプログラムパーツ。 組み込むことで、B+←のコマンドで敵の攻撃のダメージを軽減ないし無効化する効果を持つ。 該当するプログラムはブロック・シールド・リフレクトの3種類。 『3』ではシールドスタイルのレベルアップによってプログラムを入手できる。 『4』以後はネット商人やバグのかけら交換屋で入手できる。 ブロック:ロックマンが防御の構えを取り、この間に受けたダメージを半減する。 シールド:受けた攻撃を防ぎ、ダメージを0にする盾を構える。 リフレクト:シールドの効果に加えて、受けた攻撃を衝撃波にして反射することができる。 リフレクトによる衝撃波の威力は『4』までは100、『5』以降は50。 シールドとリフレクトは、ブレイク特性のある攻撃は防ぐことができない。 また、『5』以降はガードの成否に関わらず1秒ほどの使用不能時間が発生するので注意。 但しブルースソウルの効果で使用できるリフレクトは、『4』の時点で『5』以降のものと同じ仕様となっている。 ブロックは仰け反ると構えを解いてしまうが、ブレイク特性のあるダメージも半減できるため完全な下位互換ではない。 システム上不可能なのでしょうがないが、使い分けられないのが残念。 このプログラムの亜種として、同じコマンドで攻撃を避けるカワリミマジックも存在する。
https://w.atwiki.jp/r7fc/pages/13.html
画像 画像2 上の二つがごちゃごちゃしてて作る人が出たときに不便かと思い立てました 。 FCに移植するのに使えそうな画像のみを貼り付けてください。 こんな感じのを頼みます
https://w.atwiki.jp/hakononaka/pages/46.html
大見出し プログラム一覧(1) 注意 アップロード出来るのは、Wikiメンバーのみです。 UP出来る最大サイズは1MBです。 ダウンロードは、 ref()の()の中に、アップロードしたファイルの名前を 拡張子も含めて書いてください。 作品No. 作品名 作成者 説明 DL#ref error :画像URLまたは、画像ファイル名を指定してください。 0 例 はやぶさ このように追加して下さい DL1_0.exe 1 TXTファイル製造マシン かぜ 使い道なし DL 2 一発起動君 かぜ IEや電卓などを一発起動できます DL 3 初プログラミング -YYY- 成功しなかったら横線引いておきます DLテストプログラム001.exe 4 ボタン押してて -YYY- htmlだけどね。初心者です DLコピー ボ.html 5 かぜ ブラウザver0.1 フラッシュが使えない糞ブラウザ。 DL 6 時計 -YYY- JavaSctiptの基本すぎてすいません DLテキストJavaScript時計.html 7 MSWindows付属アクセサリ(ry -YYY- Oh… DLMS付属アクセサリ起動.zip 8 分数同士の掛け算問題自動生成プログラム ver1.0 -YYY- 林檎王さんの要望により制作。 DL分数同士の掛け算問題自動生成プログラム ver1.0.zip 9 分数同士の掛け算問題自動生成プログラム ver1.1 -YYY- 林檎王さんの要望により制作。更新内容:不具合修正。 DL分数同士の掛け算問題自動生成プログラム ver1.1.zip 10 分数で表された時間が何分かを求める問題自動生成プログラム ver1.1 -YYY- 林檎王さんの要望でつk(ry DL分数で表された時間が何分かを求める問題自動生成プログラム ver1.1.zip 作り方わかんないorz -- -YYY- (2011-11-05 17 07 08) やっぱわかんないorz -- -YYY- (2011-11-05 22 31 52) 追加ー”サイト”ってついてますが気にしないでください -- -YYY- (2011-11-17 17 41 56) かぜさんのブラウザダウンロードしたら”大変申し訳ありません。下記のエラーが検出されました。 ご確認をお願いします。 ------------------------------- [エラー] nadesiko.nako(1) 文字列 `...` が対応していません。~`”って出ました。なぜだぁ -- -YYY- (2011-12-26 10 45 35) 上書きしたファイルをUPします -- かぜ (2011-12-26 13 38 15) 了解です -- -YYY- (2011-12-26 16 55 36) 適当に作った 反省はしていない -- -YYY- (2012-03-28 20 07 03) 使い道がない どうでもいい -- -YYY- (2012-03-29 13 00 10) Ysのアクセサリ起動って一発起動君のパクリじゃねと思うのは仕様です( -- かぜ (2012-04-19 18 55 51) 作ってみた6000万通りとは値段の種類*数の種類*物の種類*三択の順番の種類です -- -YYY- (2012-04-21 13 40 36) ここにUPした三分の二俺じゃn -- -YYY- (2012-04-30 13 02 49) あとUp -- -YYY- (2012-04-30 13 03 07) 8~11削除 -- -YYY- (2012-05-03 19 35 24) 林檎さーん、つかれたぁー -- -YYY- (2012-05-28 20 18 55) perlでつくったやつうpってもいみないだろうな -- かぜ (2012-05-31 20 12 13) 俺は昔とてつもなく意味のないものを作ってたんだな、と思う -- -YYY- (2013-10-14 12 46 30) 名前 コメント
https://w.atwiki.jp/darui_program/pages/181.html
マイコンの種類について H8 日立製作所(現在はルネサス テクノロジ)が開発したマイクロプロセッサ。 当初はその名前の通り8ビットのCPUであったが、H8と言う名前のまま16ビット・36ビットの後続シリーズも開発されている。 内部レジスタ幅は16ビットまたは32ビットで、データバスの幅によってビット数を分類している。 SuperHシリーズ 日立製作所が開発した32ビットRISCマイクロプロセッサ。 SH-1からSH-4の4種類のマイクロプロセッサがある。 ARMマイコン
https://w.atwiki.jp/darui_program/pages/326.html
とりあえず、今日はstruts2を動作させるまで・・・ 動作をさせるための設定は面倒だったので多少言葉多めに書きましたが、ここからは超テキトーで書いてきます。(ホント自分用) まずは、libにstruts2を動作させるためのjarファイルを入れます。 ダウンロードしてきたstruts2は解凍していますか? 解凍していたらstruts2のディレクトリへ移動して下さい。 ↓「struts2が分からない1」の記事にあるときの最新バージョンをダウンロードしていた場合、多分パスはこんな感じ。 解凍したパス/struts-2.1.8.1-all/struts-2.1.8.1/lib 以下のjarファイルを commons-logging-1.0.4.jar commons-fileupload-1.2.1.jar freemarker-2.3.15.jar ognl-2.7.3.jar struts2-convention-plugin-2.1.8.1.jar struts2-core-2.1.8.1.jar xwork-core-2.1.6.jar [プロジェクト名]→[WebContent]→[WEB-INF]→[lib]へコピーする。 実際どのjarがどんな機能を持っているかは調べてないので知らないが、動作させるのに問題は無いので良しとする。 興味があったら調べてみて下さい。 次・・・ [プロジェクト名]→[WebContent]→[WEB-INF]にあるweb.xmlと言うファイルを編集する。 web.xmlの記述順番(DTD)は以下のサイトを見るのがオススメかも・・・(古いかもw) サイト web.xml のDTD(v2.3) web.xmlの要素リファレンス 以下のように編集する。 web.xmlはタグだからこの記事で表示させる方法が分からない!!!!! どうやってxmlの記述をgooブログの記事に表示させればいいんだ・・・ ここから下は少し待って下さい。ごめんなさい・・・。 とりあえず回避策として「struts2が分からない2」の設定まで行っていれば下のサイトを参考に動作できるはず・・・ほんと、ごめんなさい。 @IT(@いう間にWebアプリを作れる「Struts 2」入門) 2010/04/19 追記 とりあえず、表示できた・・・。 ついでにタブなどの表示方法も分かったし一石二鳥!! [web.xml]---- ?xml version="1.0" encoding="UTF-8"? web-app xmlns xsi="http //www.w3.org/2001/XMLSchema-instance" xmlns context="http //www.springframework.org/schema/context" xmlns="http //java.sun.com/xml/ns/javaee" xmlns web="http //java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi schemaLocation="http //java.sun.com/xml/ns/javaee http //java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5" display-name struts2-test /display-name filter filter-name struts2 /filter-name filter-class org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter /filter-class init-param param-name actionPackages /param-name param-value actions /param-value /init-param /filter filter-mapping filter-name struts2 /filter-name url-pattern /* /url-pattern /filter-mapping welcome-file-list welcome-file index.html /welcome-file /welcome-file-list /web-app というわけで続き・・・。 次はアクションクラスを作る。 まず、[プロジェクト名]→[src]の下に「actions」と言う名前のパッケージを作る。 そして、javaファイルを作成する先は[プロジェクト名]→[src]→[actions]へ作成する。名前は・・・HelloAction.java で行きましょう。 例) [struts2-test(プロジェクト名)]→[src(フォルダ)]→[actions(パッケージ)]→[HelloActions.java(javaソース)] [Actionクラス]---- package actions; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { public String execute() { return "success"; } } それじゃ、次・・・。 jspファイルを作ります。 作成先は・・・の前に[プロジェクト名]→[WebContent]→[WEB-INF]の下に新しくフォルダを作成する。名前は「content」にします。 んで、contentフォルダの下に「hello.jsp」と言う名前で作ります。 例) [struts2-test(プロジェクト名)]→[WebContent(フォルダ)]→[WEB-INF(フォルダ)]→[content(フォルダ)]→[hello.jsp(jspファイル)] [hello.jsp]---- %@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"% !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http //www.w3.org/TR/html4/loose.dtd" html head meta http-equiv="Content-Type" content="text/html; charset=UTF-8" title hello /title /head body Hello world!! /body /html ここまでできたら、ツールバーから[プロジェクト]を選択。 [プロジェクト]の[クリーン]を選択。 [プロジェクト]→[クリーン]って感じで。 クリーンが終了したら、今度はツールバーから[Tomcat]を選択。 その中の[Tomcat 起動]を選択。 [Tomcat]→[Tomcat 起動] てきとうにブラウザを開いて以下のURLをアドレスバーに入れEnter!! http //localhost 8080/struts2-test/hello 多分、完成・・・かな? ブラウザにHello world!!が表示されれば成功です。 駄目な場合は・・・ 以上、動作まででした~!! それでは、良いハックを~w 参考までにソースコードうp フォルダ構成でも参考にして下さい・・・ (ソース+設定ファイル+jarなし) struts2-test.zip
https://w.atwiki.jp/scclassdoc/pages/30.html
コーディング規則の目的 ほとんどのヨーロッパの大聖堂は、いろいろな時代にわたってさまざまな建築家が建てた部分との間に、構想や建築様式の相違がみられる。 後代の建築家は、様式の変更や好みの違いを反映させるため、それ以前の設計を「改良」したいと思うものだ。 だから、穏やかなノルマン建築の外廊が、高くそびえ立つゴシック様式の本堂と隣接し、互いに主張しあっている。 その結果、神への賛美と同じくらいに建築家の奢りを物語ることになる。 これに反し、ランス大聖堂の統合された建築様式は見事な対照を見せている。見るものは、個々の美しさ同様にそのデザインの見事な調和に心を動かされる。 ガイドブックにあるように、この完全さは八世紀にわたる建築家の自己犠牲によって得られたものであり、全体が統一されたデザインになるよう、彼らはそれぞれ自分のアイデアを犠牲にした。 その結果、そこには神への賛美のみならず、堕落した人間を奢りから救出する神の力が示されることになった。 コンセプトデザインの完全性こそ、システムデザインのもっとも重要な考慮点だと言いたい。 ー Frederick Phillips Brooks, Jr. 人月の神話 ザ・ブックからそのまま出てきたような ー ポール・エルデシュ コーディング規則には、次の目的がある。 ✓ コンセプトデザインを統一し、コードを読みやすく美しく仕上げる。 趣味で一人書くコードにコーディング規則は不要だ。自分が正しいと思う方法でコードを書けばいいだろう。 しかし、プロがチームでおこなう開発にはコーディング規則が必要だ。 世の中には正しく美しいスタイルやコンセプトがいくつも存在する。しかし、それらが混在してしまっては、もはや正しくもなければ美しくもない。 コンセプトデザインの完全性こそ、システムデザインのもっとも重要な考慮点だと言いたい。 ✓ コーディング規則によりコードの共有化の基盤をつくる。 Steve McConnell の「CODE COMPLETE」によれば、プログラムを作成するのに必要な時間には人によって10対1の差がでるそうだ。 もちろん、McConnell の主張は「だから優れたプログラマになろう」ということなのだろう。 しかし物事を裏側から眺めれば、たとえ最高のプログラマであっても最低のプログラマの10倍程度の生産性しか出せないことになる。 個の力を高めるのは言うまでもなく重要だ。しかし、一人でできることには限界がある。時間は有限のリソースだ。コードの共有化による集合知の構築を目指そう。 ✓ コードを読むとき、内容・本質に重点を置くことができる。 コーディング規則は、コードの内容・本質については何も語らない。 コードの内容・本質ではなく、コードを書く上で検討が必要になる識別子の命名規則やレイアウト規則、コメントの書き方などディテールを説明する。 こうしたディテールの一つ一つを規則化・パターン化しておくことで、プログラマはコードの内容・本質に集中できるようになる。
https://w.atwiki.jp/avail/pages/4.html
所属 IT事業部第一技術部 所属 現在の現場 場所:門前仲町 業種:物流(メガネ) 住まい 東京都港区 業務経歴 プログラム言語 C++、COBOL 得意分野 プログラマとしてずっと経験してきたので、プログラマが得意です。 現在はチームリーダーとして仕様確認Mtgなどにも参加しています。 今後の方向性 今後は上流工程の設計にも関わっていきたいです。 業務報告 月 現場 フェーズ 業務報告 2014/09 門前仲町 物流(めがね) 設計 閲覧 2014/08 門前仲町 物流(めがね) 設計 閲覧 2014/07 門前仲町 物流(めがね) 設計 閲覧 2014/06 青物横丁 通信 コーディング 閲覧 2014/05 青物横丁 通信 コーディング 閲覧 2014/04 青物横丁 通信 コーディング 閲覧 2014/03 青物横丁 通信 コーディング 閲覧 2014/02 青物横丁 通信 コーディング 閲覧 2014/01 池袋 金融(銀行) システムテスト 閲覧 2013/12 池袋 金融(銀行) システムテスト 閲覧
https://w.atwiki.jp/kencyo/pages/25.html
Kinect for Windows SDK 環境構築 サンプルプログラムについて Audio NUI Speechのサンプルを動かすための環境構築 Kinect for Windows SDK ついにMicrosoftからのオフィシャル版のKinect for Windows SDK(以降,Kinect SDK)がでました. さっそく遊んでみたのでメモ. 環境構築 Kinect SDKは下記の環境で動作します. OS Windows 7 Visual Studio Version 2010 (ExpressでもOK) とりあえず,上記はインストールしてあるものとして進めます. 下記からKinect SDKをダウンロードします. Kinect SDK Download ダウンロード,インストールしたらとりあえず完了です. インストール後,KinectをUSBポートに指せばドライバがインストールされます. Kinect用のアプリとして,2個のアプリが入ってきます. Sample Shape Game Kinectのサンプルゲームのようなもの. 落ちてくる対象をつぶす?と点数が入る模様. 2人対戦可能 Sample Skeltal Viewer OpenNI風のアプリケーション 認識は多人数してくれるかもですが,モーションを認識してくれるのは2人まで たぶん研究用途では,これが基本のアプリになるでしょう! サンプルプログラムについて サンプルプログラムでは,大きく2つのカテゴリに分かれてインストールされています.(デフォルトだとおそらくここにインストールされます.) C \Users\Public\Documents\Microsoft Research KinectSDK Samples Audio Audio Capture Raw 書いて字のごとく,音声のデータを録音します. MFAudioFilter 未チェック MicArrayEchoCancellation 未チェック RecordAudio 音声を録音する用なのですが,むしろ音源の方向が推定できます. ただし,精度は少し荒め Speech これを使うためにはいくつかのソフトを追加でインストールする必要があります. 詳しくは次の項目で. NUI NUIには,インストールされている2つのアプリケーションのプロジェクト1式があります.ここを参考にすればプログラムが組めるかと思います.ただ,サンプルがC#です.(Microsoftなので,といったらそうですが...) おそらく.NetFrameworkに対応しているので,C++でもかけるはずと思ってます... (間違ってたらコメントください.) Speechのサンプルを動かすための環境構築 Speechのサンプルを動かすためには,音声認識エンジンのSDKをインストール必要があります. ここで注意点として,最近のWindows 7のPCはほとんどが64bitのOSになっているのですが,どうも32bit版(x86)をインストールしないといけないようなので,注意. Microsoft Speech Platform Runtime Microsoft Speech Platform - Software Development Kit Kinect for Windows Runtime Language Pack これらをインストールすれば動くようになります. ただ,さらに注意点!!! 英語の音声認識エンジン?になっているので,発音がきれいじゃないと認識してくれません!!! 日本語の認識させ方わかりましたら誰かおしえてくださいorz 名前 コメント
https://w.atwiki.jp/tmiya/pages/17.html
トップ チュートリアル和訳 6 Case classes and pattern matching 6 ケースクラスとパターンマッチング プログラムによく出てくるデータ構造の一つにツリーがあります。例えばインタプリタやコンパイラは通常、プログラムを内部的にツリーで表現しています。XML 文書はツリーです。ある種のコンテナは赤黒木のようなツリーに基づいています。 小さな電卓プログラムを通して、ツリーが Scala でどのように表現され操作されるのか見てみましょう。このプログラムの目的は、加法と整数定数と変数からなる非常に簡単な数式を操作することです。その例を2つ挙げると、1+2 や (x + x)+(7+ y) などです。 最初にそのような数式をどのように表現するか決めましょう。最も自然な方法はツリーです。ノードが演算(ここでは加法)で、リーフが値(ここでは定数か変数)です。 Java ではそういったツリーは、ツリーのための抽象スーパークラスと、ノードやリーフ毎に1つの具象サブクラスを用いて表現されるでしょう。関数型プログラミング言語では、同じ目的のために代数的データ型を用います。Scalaには、両者の中間的なものであるケースクラスがあります。それをどうやって私たちのツリーの型を定義するのに用いるかを示します。 abstract class Tree case class Sum(l Tree, r Tree) extends Tree case class Var(n String) extends Tree case class Const(v Int) extends Tree Sum, Var, Const クラスがケースクラスとして宣言されていることは、いくつかの点で普通のクラスとは違うということを意味しています。 それらのクラスのインスタンスを作るのにキーワード new は必須ではありません。(すなわち、new Const(5) の代わりに Const(5) と書けます。) コンストラクタのパラメータ用の getter 関数は自動的に定義されます。(すなわち、Const クラスのインスタンス c のコンストラクタのパラメータ v の値は、単に c.v と書けば取得できます。) メソッド equals と hashCode はデフォルトで定義され、それらは同一性ではなくインスタンスの構造に基づいています。 toString メソッドはデフォルトで定義され、値を「ソース形式」で表示します(例えば、式 x+1 の式のツリーは Sum(Var(x),Const(1)) と表示されます) これらのクラスのインスタンスは以下で見るようにパターンマッチングを通して分解されます 数式を表現するデータ型を定義したので、つぎにそれを操作する演算を定義しましょう。ある環境で式を評価する関数から始めることにします。環境の目的は変数に値を与えることです。例えば式 x+1 の評価を、変数 x を値 5 に関連づけるような環境 {x→5} の元で行うと、結果 6 を得ます。 ここで環境を表現する方法を見つける必要があります。もちろんハッシュ表のような連想データ構造を使うこともできますが、直接に関数を使うこともできます!環境はまさに、値を(変数)名と関連付ける関数に他なりません。上で述べた環境 {x→5} は Scala では下記のように簡単に書けます。 { case "x" = 5 } この書き方で、引数として文字列 "x" が与えられたなら整数 5 を返し、他の場合には例外で失敗させる関数を定義できます。 評価する関数を書く前に、環境の型に名前を付けましょう。もちろん、型 String = Int を環境のために使うこともできますが、この型に名前を付ければ、プログラムがシンプルになり将来の変更も容易になります。Scala では下記のように書けばよいのです。 type Environment = String = Int 以後、Environment 型は String から Int への関数の型の別名として使えます。 では評価する関数の定義を行いましょう。概念としてはとても簡単です。2つの式の和の値は単にそれぞれの式の値の和です。変数の値は環境から直接得られます。そして定数の値は定数自身です。Scala でこれを表現するのは同じぐらい簡単です。 def eval(t Tree, env Environment) Int = t match { case Sum(l, r) = eval(l, env) + eval(r, env) case Var(n) = env(n) case Const(v) = v } この評価関数はツリー t に対してパターンマッチングを実行します。直感的には上記の定義は明確なはずです。 まずツリー t が Sum であるかチェックし、もしそうなら左部分木を新しい変数 l に、右部分木を変数 r に束縛します。そして矢印に従って評価を進めます。矢印の左側のパターンによって束縛された変数 l と r を使用します。 もし最初のチェックが成功しなければ、すなわちツリーは Sum でなければ、続いて t は Var かチェックします。もしそうなら Var の含まれる名前を変数 n に束縛し、右辺の式を用います。 もし2番目のチェックにも失敗したなら、つまり t は Sum でも Var でもなければ、Const であるかチェックします。もしそうなら Const ノードに含まれる値を変数 v に束縛し、右辺へ進みます。 最後に、全てのチェックに失敗したなら、式のパターンマッチングの失敗を伝えるために例外が上げられます。ここで Treeのサブクラスが他に宣言されない限り、それは起きません。 ある値を一連のパターンに順に当てはめ、マッチしたら直ちにその値の様々なパーツを取り出して名前をつけ、名付けられたパーツを用いてコードを評価する、というパターンマッチングの基本的なアイデアを見てきました。 年期の入ったオブジェクト指向プログラマは、なぜ eval を Tree クラスとそのサブクラスのメソッドにしなかったのか、不思議に思うかもしれません。実はそのようにもできます。Scalaではケースクラスのメソッド定義は普通のクラスのようにできるからです。それゆえパターンマッチングとメソッドのどちらを使うかは趣味の問題ですが、拡張性にも密接に関係します。 メソッドを用いれば、新しい種類のノードを追加することは Tree のサブクラスを定義することで簡単に行えます。しかしツリーを操作する新しい演算を追加するのは、Treeの全てのサブクラスの修正が必要なため面倒です パターンマッチングを用いれば状況は逆転します。新しい種類のノードを追加するには、ツリーのパターンマッチングを行う全ての関数で、新しいノードを考慮するための修正が必要です。その一方で新しい演算を追加するのは簡単で、単に独立した関数を定義するだけです。 パターンマッチングをもっと調べるために、別の数式への演算である微分シンボルを定義してみましょう。読者はこの演算に関する下記の規則を覚えているでしょうか。 和の導関数は、導関数の和。 変数 v の導関数は、v が微分を行う変数なら 1 、さもなければ 0。 定数の微分は 0。 これらの規則はほとんど字句通り Scala のコードに変換でき、下記の定義を得ます: def derive(t Tree, v String) Tree = t match { case Sum(l, r) = Sum(derive(l, v), derive(r, v)) case Var(n) if (v == n) = Const(1) case _ = Const(0) } この関数ではパターンマッチングに関する新しい概念を2つ導入します。最初に、変数に関する case 式にはガード、すなわち if キーワードに続く式があります。ガードは、式が真でなければパターンマッチングを失敗させます。ここでは、微分される変数名が微分する変数 v と等しい場合のみ定数 1 を返すように使われています。2つめにここで使われているパターンマッチングの特徴は、_ で示されるワイルドカード、どんな値にもマッチするパターンで、値に名前をつける必要はありません。 パターンマッチングの能力を全て調べてはいませんが、この文書が長くなりすぎないようにここで止めておきましょう。上記2つの関数が実際の例でどう動くか見たいと思います。この目的のため、簡単な main 関数を書いて、式 (x + x)+(7+ y) に対する演算を幾つか行ってみましょう。最初に環境 {x→5, y→7} に対する値を計算し、次いで x と y とで微分した導関数を求めましょう。 def main(args Array[String]) { val exp Tree = Sum(Sum(Var("x"),Var("x")),Sum(Const(7),Var("y"))) val env Environment = { case "x" = 5 case "y" = 7 } println("Expression " + exp) println("Evaluation with x=5, y=7 " + eval(exp, env)) println("Derivative relative to x \n " + derive(exp, "x")) println("Derivative relative to y \n " + derive(exp, "y")) } プログラムを実行すると、期待した結果が得られます。 Expression Sum(Sum(Var(x),Var(x)),Sum(Const(7),Var(y))) Evaluation with x=5, y=7 24 Derivative relative to x Sum(Sum(Const(1),Const(1)),Sum(Const(0),Const(0))) Derivative relative to y Sum(Sum(Const(0),Const(0)),Sum(Const(0),Const(1))) 結果を見ると、導関数の結果はユーザに見せる前に簡略化すべきであることが判ります。パターンマッチングを用いて基本的な簡約関数を定義することは興味深い(しかし驚く程に巧妙な)問題です。読者の練習問題としておきます。 前ページ 目次 次ページ 最終的なプログラムを載せてもらえませんか? -- 名無しさん (2009-12-01 14 01 45) 名前 コメント