F#

半角文字を全角文字に変換

F#

以下のコードをそのままC#またはVBには移植不可 F#のための軽そう?なコードを自作してみました。 ■実行結果 > "゙ア゙イヴエオ゙".StrCnv();; > リアル: 00:00:00.000、CPU: 00:00:00.000、GC gen0: 0, gen1: 0, gen2: 0 val it : System.String = "゛ア゛イヴエオ…

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

F#

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

実戦投入してみた

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

Problem 50

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

ソートされた(?) 順列シーケンス

F#

ソースコードはこちら ■実行方法 let run() = "abcd".ToCharArray() |> Array.toList |> permutation |> Seq.iter (printfn "%A") ■実行結果 ['a'; 'b'; 'c'; 'd'] ['a'; 'b'; 'd'; 'c'] ['a'; 'c'; 'b'; 'd'] ['a'; 'c'; 'd'; 'b'] ['a'; 'd'; 'b'; 'c'] ['…

低レベル グローバルフック による キーボード マウス ビューアー for F#

F#

キーボード&マウス ビューアー ひとまず完成!アプリに設定出来る項目はいくつかあるけれども、プログラム内にハードコーディングしているため毎回ビルドする必要あり。 自分用アプリなので設定は変えるつもり無いため、とりあえずこのまま使います。欲しい…

F# で ビジュアルデザイナを使ったGUI編集が出来るかも

F#

XAMLのデザイナは動きますが、イベントとかにコードジェネレータに対して働きかける事は出来ませんでした。 コードジェネレータが動きませんので、Classディレクティブ?が含まれてるXAMLも例外がはかれてダメダメでした。 x:Classなどのコードを削除すれば…

グローバルフック − F#で低レベルフック

F#

F# から SetWindowsHookEx を使った低レベルフックのコードを書いてみた。 作るのに1日掛かった orz ■作るのに必要な知識(覚えた知識) マーシャリング WindowsAPI F#の構造体 32bitアプリと64bitアプリ事に作る意味? ■使用しているWindowsAPI SetWindowsH…

ニコ生 コメントビューアーのソースコード一式

F#

ニコ生放送のコメントの送受信を行うためのライブラリです。 非同期送受信を行う為、使う側はマルチスレッドを意識せず使うことが可能です。 ソースコード一式は以下のファイルをダウンロード下さい。 NiconicoAPI.rar ■ 注意 解凍出来ないというコメントは…

F# 3.0 の本

F#

Programming F# 3.0, Second Edition 23ドル!

ニコ生 コメントビューアー API - HTTPCommunication.fs

F#

namespace RLib.NiconicoAPI #light open System open System.Net open System.Net.Security open System.Net.Sockets open System.IO open System.Text /// HTTP簡易通信モジュール module public HTTPCommunication = /// HTTPCommunicationモジュール内専…

ニコ生 コメントビューアー API - Commons.fs

F#

namespace RLib.NiconicoAPI #light open System open System.Text.RegularExpressions /// ニコニコIDの入力規則が一致しない場合に投げられる例外 exception NiconicoIDException ///<summary>ニコニコIDに関するモジュール</summary> module internal NiconicoID = ///<summary>ライブ</summary>…

判別共用体でのシリアライズ

F#

F# – Serializing F# Record and Discriminated Union typesF# Discriminated Union WCF, and DataContract attribute DataContractSerializer クラス XmlSerializer クラス データ コントラクト シリアライザーでサポートされる型

NUnit 参考サイト

F#

NUnit 2.5

ニコ生のコメントを取得 (実験用)

F#

実験用なのでかなり汚いです。 コメントもないので参考にならないかもしれません。 ■メインコード namespace Samples open RLib.Niconico.Net.Cookies open RLib.Niconico.Net.NiconicoNet open System open System.IO open System.Net.Sockets open System.…

スレッドプールについて

F#

※結果は「Windows7 Ultimate 64bit SP1」の環境MSDNより ThreadPool.GetAvailableThreads メソッド スレッド プール スレッドの最大数 (GetMaxThreads メソッドから返される) と現在アクティブなスレッドの数との差を取得します。 ■コード System.Threading.…

各ビット位置の10進数値が知りたい場合

F#

もっとスマートな書き方があると思うけれども、これでも十分F#は素晴らしいと思う今日この頃 F#からC#に戻れないかも■コード let bitSeq = seq { for x in Seq.initInfinite ((+)0) -> (1 <<< x) } bitSeq |> Seq.take 10 |> Seq.toList ■結果 val it : int …

Reactive Programmingについて

F#

参考になりそうなサイトのリンク Reactive Extensions再入門 その6「HotなIObservableを作成するファクトリ」 http://d.hatena.ne.jp/okazuki/20111109/1320849106Rxでのイベント変換まとめ - FromEvent vs FromEventPattern http://neue.cc/2011/07/06_332…

連番文字列生成

ちょっとした文字列生成は以前までExcelでやっていましたが、PowerShellやF#がとっても楽だと最近気づいたという■ PowerShell 1..20 | % { "btnTest_{0:000}" -f $_ } ■ F# [1..20] |> Seq.iter (printfn "btnTest_%03d");; ■ 結果 btnTest_001 btnTest_002 …

Problem 40

Problem 40 module Problem_0040 (* 正の整数を順に連結して得られる以下の10進の無理数を考える: 0.123456789101112131415161718192021... 小数第12位は1である. dnで小数第n位の数を表す. d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000 を求めよ…

Problem 39

Problem 39 module Problem_0039 (* 辺の長さが{a,b,c}と整数の3つ組である 直角三角形を考え,その周囲の長さをpとする. p = 120のときには3つの解が存在する {20,48,52}, {24,45,51}, {30,40,50} p ≦ 1000 で解の数が最大になる p を求めよ. *) //(840, 8) …

Problem 38

Problem 38 module Problem_0038 (* 192を1, 2, 3で掛けてみよう. 192 × 1 = 192 192 × 2 = 384 192 × 3 = 576 積を連結することで1から9のPandigital数 192384576 が得られる. 192384576を192と(1,2,3)の連結積と呼ぶ. 同じようにして,9を1,2,3,4,5と掛け連…

Problem 37

Problem 37748317 module Problem_0037 (* 3797は面白い性質を持っている. まずそれ自身が素数であり,左から右に桁を除いたときに全て素数になっている (3797, 797, 97, 7). 同様に右から左に桁を除いたときも全て素数である (3797, 379, 37, 3). 右から切り…

Problem 36

Problem 36 (* 585 = 10010010012 (2進) は10進でも2進でも回文数である. 100万未満で10進でも2進でも回文数になるような数の総和を求めよ. (注: 先頭に0を含めて回文にすることは許されない.) *) (* 872187 -- 0 1 3 5 7 9 33 99 313 585 717 7447 9009 153…

Problem 35

Problem 35 module Problem_0035 (* 197は巡回素数と呼ばれる. 桁を回転させたときに得られる数 197, 971, 719 が全て素数だからである. 100未満には巡回素数が13個ある: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, および97である. 100万未満の巡回素数…

Problem 34

Problem 34 module Problem_0034 (* 145は面白い数である. 1! + 4! + 5! = 1 + 24 + 120 = 145となる. 各桁の数の階乗の和が自分自身と一致するような数の総和を求めよ. 注: 1! = 1 と 2! = 2 は総和に含めてはならない. *) (* 40730 4443 ms *) let calc() …

Problem 33

Problem 33 分数として扱わなくても計算できるだろうという観点で考えます。以下がこれまで考えた結果のまとめみたいなもの、4通りに絞れるはずが、3通りしかでなかったので、どこかに見落としが含まれているはず。。======================================…

Problem 32

Problem 32 module Problem_0032 (* 7254は面白い性質を持っている. 39 × 186 = 7254と書け, 掛けられる数/掛ける数/積に1から9の数が1回ずつ出現する. 掛けられる数/掛ける数/積に1から9の数が1回ずつ出現するような 積の総和を求めよ. HINT: いくつかの積…

ローカルマシンのHDD容量確認

F#

ASP.NET + Ajax による対象サーバの容量確認ページを作りたいので、.NET Framework の API の使い方実験コードを書いてみました。実験的なコードは fsi.exe を利用するのが非常に楽です。 すぐ確認出来るのが素晴らしい! open System open System.IO DriveI…

整数をカンマ区切りの文字列で取得

F#

何故 sprintf で出来ないのだろうか。。 open System; let fn (x:int) = String.Format("{0:#,#}", x);; let fn x = let cc = [| ""; ""; ""; ","; |] let rec fn' x (s:string) = if x <= 0 then s else fn' (x/10) ((string (x%10)) + cc.[s.Length % 4] +…