萌え指向プログラミング言語「萌香」のBlog
[1]
[2]
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 2chより。ガンダムラストバトル集678 名前: そら(熊本県)[sage] 投稿日:2008/05/04(日) 18:03:33.28 ID:Kp5IFPry0youtubeで見られるラストバトル集
PR 萌香で京大の入試問題を力技の巻おまえにハートブレイク☆オーバードライブ - 小粋な数学入試問題 より ......って引用しようと思ったけど数式が画像とか引用がめんどくさいので元記事読んでください。 んでこれの設問の2。これが萌香があれば解けちゃうんです。ソースはこちら 「レンジ を 「(開始 終点) 「もし (開始 終点 >) '() 「開始 「(開始 1.0 +) 終点 の レンジ」 の コンス」」 の 仕事」 と 定義」 「階乗 を 「(a b) 「もし (b 0.1 <=) ;; たぶん無いけど丸め誤差とかがあったときのため 1.0 「(a (b 1.0 -) の 階乗) a *」」 の 仕事」 と 定義」 「f を 「(n) 「n の 7 の 剰余」 の 仕事」 と 定義」 「g を 「(n) (3 に ((+ 0 (「(num) 「num の n の 階乗」 の 仕事」 に 「1 7 の レンジ」 を マップ) の 右畳み込み) の f) を かける) 仕事」 と 定義」 「「(n) 「n と 表示」 「":" と 表示」 「(n の g) と 表示」 「改行」 の 仕事」 に 「1 15 の レンジ」 を マップ」
これを実行すると6と12のところで18点ゲット。 fの性質よりmaxの点が18なので答案用紙に6と書けば、この問題はパーヘクツですよあなた !! なんで中途半端な15までなのかって ?.......... 萌香は数値をすべてRubyのFloatで保持しているため Cのdouble型の精度となります。そうすると仮数部が53 bitなため2^53を超えるところ 10^16のところで正確な計算ができなくなってしまい、 20のところで7^20が出て、これが10^16を超えるので正確な計算ができなくなりおかしな数字が出てしまう結果となります。これは ここ(遥か彼方の彼方から - 小粋な数学入試問題をcodepadで組んでみた) のプログラムもおんなじ原因じゃないかと思ってたらすでに指摘があった..... ちなみにRuby版が #!/usr/local/bin/ruby def pow(x, y) result = 1 (1..y).each do |dummy| result = result * x end return result end def f(n) return n % 7 end def g(n) return 3 * (f((1..7).map{|num| pow(num, n)}.inject(0){|sum, num| sum + num})) end (1..100).each do |num| puts "#{num}:#{g(num)}" endScheme(Gauche)版が #!/usr/local/bin/gosh (use srfi-1) (define pow (lambda (x y) (if (= 1 y) x (* x (pow x (- y 1)))))) (define f (lambda (n) (modulo n 7))) (define g (lambda (n) (* 3 (f (fold + 0 (map (lambda (num) (pow num n)) (iota 7 1))))))) (map (lambda (num) (format #t "~a: ~a\n" num (g num))) (iota 100 1))となります。
どちらも100程度まではなんの問題もなく動きます。 Bignumなんかいらね、とか思ってたのですが、この程度でも必要になってくるのですね。 Bitmap#(set|get)Pixelは遅い.Net Frameworkで画像ファイルにフィルタなどの処理で たくさんのピクセルの値を変更したい場合(set|get)Pixelメソッドを 使用するとめちゃくちゃ遅いです。これはBitmapオブジェクトが 単なる画像のコンテナじゃなくて他のいろんなものとの調停とか があるからかな ? とりあえず遅いです そこで.Net Framework的にはBitmapデータの 画像データをロックして自由にいじっても大丈夫なようにし、 いじってアンロックするというのが作法みたいです。 手順
Microsoft Excelで使用するためのCSV形式のファイルを作成しようとしたらはまりました。 現象改行を含んだデータを1セルに入れるため、 ダブルクォーテーションで囲んだのですが、 中に入っている改行コードがCSV行末の改行と認識されてしまい 列がめちゃくちゃになってしまいました。 ダブルクォーテーションに関わるExcelの挙動何が原因だったかと言うと、 自分はいつもCSVファイルを書く時カンマの後ろにスペースを入れるのですが、 (そのため以下のように文字列前後のスペースを取り除く) Excel的にはそういうのはだめでスペースから始まる文字列と みなされてしまいました。 で、おまけにExcelは先頭にないダブルクォーテーションは制御記号ではなく ただの文字として扱ってしまい、結局ダブルクォーテーションで囲まれた改行は CSV的にエスケープされることなく行の終端記号として扱われてしまいました。 普段書いてたプログラム(in Ruby)row = line.split(',').map {|elm| elm.strip} ExcelのCSVファイル中の改行Excelはセル内の改行にはLFを行の終端にはCR + LFを使っていました。 これは、さすがにExcelがよきに計らってくれるかな。 とりあえず動くので検証はめんどい。 エディタでちょいちょいといかないかしら。 行終端がCR + LFなのは RFC4180的に妥当なのですが、 なんでセル内の改行はLFだけなんだろう。 同じように出力しようとするとちょっとめんどい まとめとりあえず、Excelで使うためのCSVファイルを作成する上での注意点を Excelとは直接関係ない(RFCで定められたCSVファイル一般のことも含めて) まとめると。
ちなみに使ったExcelはExcel2000 for Windows。 最新のExcelならUTF-8は使えるかな ? リンク雑感今日初めてCSVファイルフォーマットのRFCを読みました。 いろいろ、細かい点が知らなくてためになりました。 でもですよ、カンマの後ろにスペースは付けたいし、 人間に見やすいようにカンマの位置というか文字列の開始位置を そろえたいじゃないですか。 まぁ、そんな理由でmustでなくshould not be ignoredなのだと思います。 だからといって、自分一人で使うからいいやと自由な形式で プログラムを書いたりするとあとではまることになるんだな。きっと。 smtp認証プロバイダのメールアドレスがsmtp認証になったんです。 で、そのための設定をしなければならなかったのですが まったく設定の必要はなかったです。 (popサーバのアドレスの変更とかは必要だった) すごいですねMew
次のページ>>
|
カレンダー
カテゴリー
フリーエリア
最新CM
[11/30 Lehar9296
]
[11/19 Bihler7840
]
[04/09 pavelvolinkins]
最新記事
(05/04)
(03/13)
(02/18)
(10/30)
(04/17)
最新TB
プロフィール
HN:
No Name Ninja
性別:
非公開
ブログ内検索
最古記事
(12/25)
(01/10)
(01/17)
(02/14)
(04/17)
アクセス解析
|