コラッツ予想がとけたらいいな2

自分の考察を書いていきます。

F#

F#と戯れよう その6(ジャグ配列)

F#

「配列の配列」のことをジャグ配列と呼び、多次元配列とはまた別物らしい。 このジャグ配列に、罠があった。 こう定義してしまうと、 let arr = Array.create 3 (Array.zeroCreate 4) 例えばarr.[2].[1] <- 99と代入すると、 arr.[0].[1]もarr.[1].[1]も99に…

F#と戯れよう その5(F#からC#にレコードを渡して、C#側で変更する)

F#

元ネタは私のGitHub。 やり方 1. C#側の引数にrefをつける public static LibFS.TpReduceRet Reduce( ref LibFS.TpReducePack1 rP1, ref LibFS.TpReducePack2 rP2, LibFS.TpAxle axles) { 2. F#側の、渡す変数をmutableにする let mutable redpk1 : LibFS.…

F#と戯れよう その4(アサートでフォーマット)

F#

Debug.Assert()で、アサートすることができる。 第一引数が偽の時に、第二引数の文字列を出力して、プログラムは停止する。 スクリプトでは使えないようだ。 open System.Diagnostics [<EntryPoint>] let main argv = let x = -1 Debug.Assert(x >= 0, "negate!") 0 // =</entrypoint>…

F#と戯れよう その3(メソッドを高階関数に渡す)

F#

メソッドは、オブジェクトに引っ付いている(.を使う)ものなので、 そのまま高階関数に渡すことはできない。 そういう時は、ラムダ式funを使おう。 以下の例のように、ラムダ式で束縛したstrに.Splitを取り付ける事により、 目的を達成できる。 module foo …

F#と戯れよう その2(F#からC#を呼ぶ)

F#

なんかいきなり邪道な事やってますけど、気にしないでください。 Visual Studioを使います。VSCodeでできるかどうかは未確認です。 手順 Visual Studioを起動して、「新しいプロジェクトの作成」を選択する。 「F#のコンソールアプリ(.NET Core)」を選択する…

F#と戯れよう その1(環境構築)

F#

.NET Core をインストール https://dotnet.microsoft.com/download 「Download .NET Core SDK」をダウンロード。 VSCodeで拡張機能「Ionide-fsharp」をインストール インタプリタ ctrl + @ でターミナルを開く $ dotnet fsi ... > printfn "Hello, World!";;…

Go,C++,F#,Haskellでコラッツを計算してみた

こんな感じで。 3から79999999で4x+3のみおこなう。 初期値を下回ったらそのxは終了する。 多倍長整数を使う。 並列計算する。相互作用はしない。 反例があった時のケアはしない。 出力はしたりしなかったり。 実行時間を出力する。 CPUはCOREi7-4770です。 …