細かいところは最終的には頭を使った手作業になるが,エディタレベルでの作業についてまとめておく。
- 文末が ; であるが,Julia では問題ないのでそのままにしておく。
- if 文,while 文 の論理式は ( ) で囲まれているが,Julia では問題ないのでそのままにしておく。
- 関数が function [戻り値リスト] = 関数名(入力引数)になっているが,"[戻り値リスト] =" を取り除く。
- 注釈行は % で始まる % を # に全置換する。
- プログラミングスタイルにもよるが,関数名と ( の間の空白は許されないので "関数名(" のようにする。
- persistent 変数は必要ないので,persistent 文をコメントアウトする。
- 文字列は ' ではなく" でくくるので,全置換する(' のままのものもあるので,確認しつつ置換する)。
- 論理式の否定演算子が ~ なので,! に全置換する。
- 出力文が fprintf() なので,@printf() に置換する。 "fprintf ( 1, "を "@printf(" に全置換する。先頭に "using Printf"を加えておく。println() に置換してもよいが format 付の場合には @printf() が妥当。
- zeros(), ones() は,ベクトルであっても,二次元目が 1 になっているので,zeros(n, 1) のようなものを zeros(1),さらに型を考えて zeros(Int64, n), ones(Float64, n) のように直す。
- ベクトル,配列は V(i),A(i, j) のようになっているので,V[i], A[i, j] にする。全置換と手作業の組み合わせ。
- 継続行は ... で終わるが,これは単に ... を消去するだけでよい。
- 論理値を 0/1 で表すので,false/true に変換。
- 一様乱数の使用は [ r, seed ] = r8_uniform_01 ( seed ) のようになっているので,r = rand() のようにする。
- 戻り値がちゃんと返されるように,必要なら return 文で指定する。
- この辺りまで来たら,REPL で関数全体をコンパイルし,エラーメッセージに従ってプログラムを修正する。
- 別の記事にも書いたが,Julia での for ループ,while ループに変数スコープがあるために,"変数名 not defined" に対応する。
※コメント投稿者のブログIDはブログ作成者のみに通知されます