2012-06-01から1ヶ月間の記事一覧

Mercurial リファレンス

■設定ファイル ファイル名 内容(効果) 保存先 .hgignore リポジトリ除外リスト(addで追加できないようにする) .hgと同じフォルダに作成する事 ■.hgignore syntax: regexp \. /bin/ /obj/上記設定で .NET系(F#でしか確認してません) の要らないファイルは除…

(おまけ) Excel DNA for F# の日付の注意点2

日付に関して別の問題が発覚!ExcelDNAで日付を入力したセルに対しての読み取り方法 「yyyy/MM/dd」の形式のデータDouble型のシリアル値になる。 「yyyyMMdd」の形式のデータはDouble型の数値になる。 シリアル値の変換は以下のコードを利用 (おまけ) F#でEx…

(おまけ) F#でExcelの日付データのシリアル値をDateTime型に変換する。

Excelのバグで1900/2/29の日付が存在します。 そのため、それ以降の日付のシリアル値に誤差が生じるたりします。 それも踏まえた形で関数を作成。この関数はExcel-DNAくらいでしか使わないと思われます。 ■実行結果 > getDate 36526;; val it : DateTime = 2…

F#で Shift-JIS 文字列のカットと左詰右詰

F#

右詰の文字列カットはとりあえずこの仕様のままにします。 違和感はありますが、日本では入力が左から右なので問題ないと判断。 ■実行テスト > padLeftText '@' 10 "1234567890";; val it : string = "1234567890" > padLeftText '@' 10 "123456789";; val i…

実戦投入してみた

F# + ExcelDNAで実戦投入してみたところ、VBAで作るより多分早く作れたと実感できました。ただし、F#に結構慣れており、かつVBAをまったく使っていなかったからなのと、VBAで作成した過去の遺産がないからだとも考えられます。VBAなんかで作るより、F#で作る…

SQLでProject Euler − Problem 04

PostgreSQL なら文字列をテーブルに変換出来るからもっとスマートになりそう。 SQL Server だと桁数を知ってる上での書き方になります。 他に良い方法あるかな? /** 【問題】 左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される…

SQLでProject Euler − Problem 03

SQL Server では暗黙的なデータ変換の悪影響で下記SQLでは問題が解けません。 勝手なデータ型変換をやめさせる事が出来れば下記SQLでデータ型を全部 decimal(12,0) とかにすれば解けるかと思われます。 SQL Serverもまだまだだ。 個人的にはPostgreSQL最強と…

SQLで素数生成

素数生成が遅いのと、上限を定めないと行けないのがいまいち気に入りません。 もっと良い方法があればよいけれども・・・ WITH temp(p) AS ( SELECT 2 UNION ALL SELECT (CASE t.p WHEN 2 THEN 3 ELSE t.p + 2 END) FROM temp t WHERE (t.p + 2) <= 100000 )…

SQLでProject Euler − Problem 06

/** 【問題】 最初の10個の自然数について、その和の二乗と、二乗数の和は以下の通り。 1&#178; + 2&#178; + ... + 10&#178; = 385 (1 + 2 + ... + 10)&#178; = 3025 これらの数の差は 3025 - 385 = 2640 となる。 同様にして、最初の100個の自然数について…

SQLでProject Euler − Problem 02

PostgreSQLのgenerate_table?が欲しいなーと思っていましたが、再帰SQLがあれば問題ないかも! ただネスト数が多すぎるとどうなるかがまだ見えません。■ 新バージョン /** 【問題】 フィボナッチ数列の項は前の2つの項の和である。 最初の2項を 1, 2 とすれ…

SQLでProject Euler − Problem 01

再帰SQLを使ってみました。 シーケンスチックな感じで使えてとても良い感じです。 しかも分かりやすい!■ 新バージョン /** 1,000 未満の 3 or 5 の倍数になっている数字の合計を求めよ。 **/ WITH Temp (n) AS ( (SELECT 1) UNION ALL SELECT n+1 FROM Temp…

Problem 50

Problem 50数日速度で悩んだ問題。 下記のコードでは何と1秒も掛かってない速い速度で終わった。 集めた素数の数自体がそもそも少ないので、早いのは当然かもしれません。 module Problem_0050 (* 素数41は6つの連続する素数の和として表せる: 41 = 2 + 3 + …