Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

F#で数独を解く

863 views

Published on

.NETラボ 2013年1月に発表したスライドです。
F#の簡単な説明と、数独を解く/問題を作るまで。

  • Be the first to comment

F#で数独を解く

  1. 1. F#で数独を解く/作る Microsoft MVP C# 増田 智明 Moonmile Solutions
  2. 2. 自己紹介  増田 智明  主に、C#, Visual Basic, CakePHP を使ってプログラミング  去年の末に「Visual Basic 2013 逆引き大全」がでました。  もうそろそろ「Visual C# 2013 逆引き大全」がでます。  「IEを自在に操るExcel VBAプログラミング入門」の最後にF#とExcel VBAの連 携をいげ太さんに書いて頂きました。  F#を初めて1か月です。
  3. 3. F#とは何か?  F#を初めて1か月の私には「何か?」と言えることはできませんが…    OCaml とか Haskell とかと同じ。 .NET実装の関数型プログラム言語 という認識
  4. 4. 関数型プログラム言語とは?  これも1か月の初心者に言えることはりませんが…  発祥は、オブジェクト指向言語と同じころ(1990年代)
  5. 5. 関数型言語で何がいいのか?何が不得意 なのか  得意なところ    アルゴリズムを記述するのが得意 演算子がたくさんある(演算子を独自に定義する) 不得手なところ  普通のオブジェクト指向プログラミング  普通のGUIアクセス  高速化?メモリの節約?  相互運用?
  6. 6. F# Interactiveを使う  他の.NETアセンブリをロードできるのは powershell と同じ  #r "..." でロードする
  7. 7. 束縛(let)と変数(mutable)使う  束縛(let)と変数(mutable)では代入の仕方が違う。 let x = 10 let mutable y = 0 y <- 10  再帰関数は末尾に書くとスタックを利用しない。
  8. 8. 数独を解く  メモリを大量に使用する富豪的プログラミングへ  demo
  9. 9. 数独を作る  関数を組み合わせて作る  demo  C# の場合は、ラムダ式で?  C++ の場合は、関数内関数で?
  10. 10. 数式をそのまま書く  再帰(rec)とパターンマッチ(match)を使うと数式と同様に書ける  フィボナッチ数列 let rec fibo n = match n with | 0 -> 1 | 1 -> 1 | x -> fibo(x-1) + fibo(x-2)
  11. 11. (私の)F#の応用範囲  .NET言語と相互運用しやすいので、ViewをC#、ロジックをF#で書くことが可 能になる。パズルプログラムがやりやすいのでは?    パズルロジックをF#で(Luaなどの組み込み言語がある) パズル画面をC#で 数式を扱いやすいので、行列を扱う有限要素法などに利用できる。  FEMの計算をF#で  画面表示をWPF/C#で

×