このディレクトリの索引 http://hibari.2ch.net/test/read.cgi/tech/1291471791/985 # 帰ってくるのがこの時間帯になるもので遅くなって申し訳ないです # ../test/read.cgi/tech/1291471791/975, ../test/read.cgi/tech/1291471791/978拝見させていただきました # ../test/read.cgi/tech/1291471791/975の41行目 ../test/read.cgi/tech/1291471791/978の42行目の # csv = calloc(1, sizeof(CSV)); # という記述に対して # 'void *' から 'CSV *' に変換できません。 # というエラーが出ます # ../test/read.cgi/tech/1291471791/979さんのは実行の仕方が解らないのでただいま勉強中です # # また../test/read.cgi/tech/1291471791/965の問ですがこれは「正規化された値にランダム数を足す」のではなく # (以下2行は手順を追うための文です) # 正規化された値(範囲は[0,1])と 「関数y=x」の交点の値を別のcsvとして出力します # ここまでだと入力と出力のファイルが同じになります # (ここから本問) # 正規化された値(範囲は[0,1])と 「関数y=x+a」の交点の値を別のcsvとして出力します # a の値は-1〜1 までの値を0.5刻みでランダムにとり # 同じ横列では同じ関数を使って交点をとるものとする # それを縦列数分繰り返して出力するということです # データは横5データ縦250データのデータです # 横列ごとに同一の関数と比較した交点の出力なので # 結果としては正規化されただけのデータと比べて横列では同じ程度の数値の変化になります # # 問3は問2の拡大版で # 正規化された値と関数y=x+aとの比較を各横列ごとに3回行うということです # セル1-1に対して「y=x+a1との交点」「y=x+a2との交点」「y=x+a3との交点」 の値を # 出力するCSVのセル1-1の位置に a1との解 , a2との解 , a3との解 # とコンマで刻んで出力します # また正規化されたCSVが横5縦250なので横6縦250のところに # 使用したaの値を a1,a2,a3 と出力せよということです # 結果的には # a1解,a2解,a3解 a1解,a2解,a3解 a1解,a2解,a3解 a1解,a2解,a3解 a1解,a2解,a3解 a1,a2,a3 # となります # この横列が250行縦に続きます # # 元データの形(行列が詳しくないもので正しい用語を使えてるかわからないので) # 1 2 3 4 5 # 1 2 3 4 5 横が5つのデータで # 〜〜〜〜〜〜〜〜〜 縦が250個のデータです # 1 2 3 4 5 並み線は147個分省略 # # 指定されたエクセルのCSVファイルの中にあるデータを読み込みそれぞれのデータの各列に列の番号の値を加えて別のCSVファイルとして出力せよ(_指定されたCSVファイル,_別のCSVファイル) :- get_split_lines(_指定されたCSVファイル,[' ',','],LL), length(Ln,3), それぞれのデータの各列に関数をLn回適用する(LL,LL2), put_lines(_別のCSVファイル,LL2). それぞれのデータの各列に関数をLn回適用する(_,[],[]) :- !. それぞれのデータの各列に関数をLn回適用する(Ln,[L1|R1],[L2|R2]) :- 各列に関数を適用する(Ln,L1,L2), それぞれのデータの各列に関数をLn回適用する(Ln,R1,R2). '各列に関数を適用する'([],L,L) :- !. '各列に関数を適用する'([_|Ln],L1,L) :- findall(_加算された値,( 'aの値は-1〜1 までの値を0.5刻みでランダムにとり'(_a), append(L0,[_値|_],L1), length([_|L0],_列の番号), _加算された値 is _値 + _a), L2), '各列に関数を適用する'(Ln,L2,L). 'aの値は-1〜1 までの値を0.5刻みでランダムにとり'(_a) :- _a is ((random mod 5) - 2) / 2.