2011-11-01から1ヶ月間の記事一覧

Problem 24

Problem 24■書き直したコード module Problem_0024 (* 【問題】 順列とはモノの順番付きの並びのことである. たとえば, 3124は数1, 2, 3, 4の一つの順列である. すべての順列を数の大小でまたは辞書式に並べたものを辞書順と呼ぶ. 0と1と2の順列を辞書順に並…

Problem 25

Problem 25 module Problem_0025 (* フィボナッチ数列は以下の漸化式で定義される: Fn = Fn-1 + Fn-2, ただし F1 = 1, F2 = 1. 最初の12項は以下である. F1 = 1 F2 = 1 F3 = 2 F4 = 3 F5 = 5 F6 = 8 F7 = 13 F8 = 21 F9 = 34 F10 = 55 F11 = 89 F12 = 144 12…

イベントログをUTF8のテキストファイルで出力

########################################################## $ldate = (date -f "yyyyMMdd") $log_dir = '.\' $log_name = "$log_dir{0}_{1}_eventlog.txt" $edate = (date).AddDays(-8) $eventlogs = "Application","System"#,"Security" ###############…

Problem 23

Problem 23 module Problem_0023 (* 完全数とは, その数の真の約数の和がそれ自身と一致する数のことである. たとえば, 28の真の約数の和は, 1 + 2 + 4 + 7 + 14 = 28であるので, 28は完全数である. 真の約数の和がその数よりも少ないものを不足数といい, 真…

Problem 22

Problem 22 module Problem_0022 (* 【問題】 5000個以上の名前が書かれている46Kのテキストファイルnames.txtを 用いる. まずアルファベット順にソートせよ. のち,各名前についてアルファベットに値を割り振り, リスト中の出現順の数と掛け合わせることで,…

Problem 20

Problem 20 module Problem_0020 (* 【問題】 n × (n - 1) × ... × 3 × 2 × 1 を n! と表す。 100! の各桁の数字の合計を求めよ。 *) // 通常パターン // 648 // 59 ms let calc = let fac n = seq { 2I..n } |> Seq.reduce (*) fac 100I |> (string) |> (fu…

Problem 19

Problem 19■.NETライブラリを使ったパターン module Problem_0019 (* 【問題】 次の情報が与えられている。 1900年1月1日は月曜日である。 9月、4月、6月、11月は30日まであり、2月を除く他の月は31日まである。 2月は28日まであるが、うるう年のときは29日…

Problem 21

Problem 21 module Problem_0021 (* 【問題】 d(n)をnの真の約数の和と定義する。 (真の約数とはn以外の約数のことである。) もし、d(a) = b かつ d(b) = a(a ≠ b)を満たすとき、 aとbは友愛数(親和数)であるという。 例えば、220の約数は1,2,4,5,10,1…

Advent Calendar 2011

Advent Calendar 2011こういったイベントがあるんですね。 F#枠はないので、PowerShellで参加してみようか考えてみます。

Problem 18

Problem 18 module Problem_0018 (* 【問題】 以下の三角形の頂点から下まで移動するとき、 その数値の合計の最大値は23になる。 3 7 4 [10; 7] 2 4 6 [12;14;13] 8 5 9 3 [20;(19);(23);16;] この例では 3 + 7 + 4 + 9 = 23 以下の三角形を頂点から下まで移…

Problem 17

Problem 17 module Problem_0017 (* 【問題】 1 から 5 までの数字を英単語で書けば one, two, three, four, five であり、 全部で 3 + 3 + 5 + 4 + 4 = 19 の文字が使われている。 では 1 から 1000 (one thousand) までの数字をすべて英単語で書けば、 全…

Problem 16

Problem 16 module Problem_0016 (* 【問題】 2^15 = 32768 であり、これの各数字の合計は 3 + 2 + 7 + 6 + 8 = 26 となる。 同様にして、2^1000 の各数字の合計を求めよ。 A. 1366 55 ms *) open System let run() = let ret = 2I<<<999 |> string seq { fo…

Problem 15

Problem 15この問題はリスナー様に解き方(答えを?)教えて頂きました。 教えて頂いき、有り難う御座います!ちなみに、パスカルの三角形の問題だったらしいです。 module Problem_0015 (* 【問題】 2 × 2 のマス目の左上からスタートした場合、引き返しな…

Problem 14

Problem 14 module Problem_0014 (* 【問題】 正の整数に以下の式で繰り返し生成する数列を定義する。 n → n/2 (n が偶数) n → 3n + 1 (n が奇数) 13からはじめるとこの数列は以下のようになる。 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 13から1まで10…

Problem 13

Problem 13 module Problem_0013 (* 【問題】 以下の50桁の数字100個の総和の上位10桁を求めよ。 37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 7432498619952474105947423330951305812372661730…

Problem 12

Problem 12邪道かもしれませんが、問題文には「501個以上の...」と書かれていたので、完全数から導き出しました。 完全数の偶数ならもう少し早いかも良かったかも? module Problem_0012 (* 【問題】 三角数の数列は自然数の和で表わされ、7番目の三角数は 1…

Problem 11

Problem 11 module Problem_0011 (* 【問題】 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 6…

Problem 10

Problem 10 module Problem_0010 (* 【問題】 10以下の素数の和は2 + 3 + 5 + 7 = 17である. 200万以下の全ての素数の和を計算しなさい. A. 142913828922L 694 ms *) // ぱくりコード // http://blogs.msdn.com/b/mpeck/archive/2009/03/03/solving-problems…

Problem 9

Problem 9 module Problem_0009 (* 【問題】 ピタゴラスの三つ組(ピタゴラスの定理を満たす自然数)とはa

Problem 8

Problem 8 module Problem_0008 (* 【問題】 以下の1000桁の数字から5つの連続する数字を取り出して その積を計算する。そのような積の中で最大のものの値はいくらか A. 104743 861 ms *) let ex = let tmp = @"7316717653133062491922511967442657474235534…

let バインディングのグローバル(?)関数の属性を取得

F#

コードはかなり汚いです。 コードとして MSIL から CALL を探してきて、[CALL+1]したポインタを取得し、 そのポインタのメンバーを取得すると関数が取得出来ます。 MSILを触ることになるなんて、属性を取得したいだけなのに非常に面倒でした。 属性を扱う場…

Problem 6

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

Problem 5

Problem 5かなり間違いなコード // パターン3 // ユークリッドの互除法 let lcl zero list = let rec _gcd x y = let i = y % x if i = zero then x else _gcd i x let rec _lcl list gcd lcm = match list with | [] -> (gcd, lcm) | hd :: tail -> let x =…

Problem 4

Problem 4 module Problem_0004 (* 【問題】 左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。 では、3桁の数の積で表される回文数のうち 最大のものはいくらになるか。 *) …

元のファイル名の数字に特定の数値を加算した連番でリネーム

$list = dir | % { @{ name = $_.Name; num = [Convert]::ToInt32(($_.Name -replace 'WS_(\d+)\.bmp', '$1')) + 13 } } $list | % { ren $_.name ("画像_01_01_{0}.bmp" -f $_.num) }

Problem 3

Problem 3 module Problem_0003 (* 【問題】 13195 の素因数は 5、7、13、29 である。 600851475143 の素因数のうち最大のものを求めよ。 *) /// 素因数分解関数 let pf num = let rec pfRT list num p = if p <= num then if num % p = 0M then pfRT (p :: …

Problem 2

Problem 2 module Problem_0002 (* 【問題】 フィボナッチ数列の項は前の2つの項の和である。 最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。 「1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...」 数列の項の値が400万を超えない範囲で、偶数値の項の…

Problem 1

Problem 1 module Problem_0001 (* 1,000 未満の 3 or 5 の倍数になっている数字の合計を求めよ。 *) let exp x y = (y % x = 0) let exp2 a = (exp 3 a) || (exp 5 a) let run ()= // 数学的な解(ぱくりコード) let n = 1000 - 1 let a = 3 * (n/3) * (n/…

まずは Program.fs を定義

非同期処理+ポーリングによる60秒制限を盛り込みました。 ポーリングは苦肉の策です。 これ以外に書き方が分からない・・・・ 後エラー処理も取ってしまう羽目に、どうしたものか open System open System.Diagnostics open Common // モジュール名を変え…

Excel が熱い!? .NET Framework でマクロを記述

F# C#

Excel-DNA公式サイトExcel-DNA のセルに対する書き込み性能を計ってみたExcel-DNA で XLL をつくる (その17) を F# でやってみた F#の List メンバをPowerShell用のもので作られたものがないかと探していた矢先、Excel-DNAが引っかかってくれました。 VBAや…