Skip to main content

tk3++

Tag: Fsharp

バブルソート F#

dojo/fsharp/MyList/Program.fs at main · tk3/dojo

何とか書けました。もっと早く書けそうな気がしたんだけれど、自信をなくしてしまいました。愚直にforを使っています。もっと短く書けそうな気がしますが、また今度。

open System

[<EntryPoint>]
let main argv =
    let rnd = Random()
    let randomArray = [| for i in 1 .. 10 -> rnd.Next(1, 101) |]

    for i = 0 to randomArray.Length - 2 do
        for j = 0 to randomArray.Length - 2 - i do
            if randomArray[j] > randomArray[j + 1] then
                let tmp = randomArray[j]
                randomArray[j] <- randomArray[j + 1]
                randomArray[j + 1] <- tmp

    printfn "%A" randomArray
    0

# 今回分かったこと

  • ランダムな数値の生成方法
  • Arrayは長さは変更できないが、値を後から書き換えることができる
    • randomArray.[j] <- randomArray.[j + 1]
  • 書き込みをさせたくないならListを使う
  • Array生成と同時に値を設定することが可能で、式を指定することができる
    • let randomArray = [| for i in 1 .. 10 -> rnd.Next(1, 101) |]
  • Arrayの値をアクセスは randomArray[i] なのか randomArray.[i] なのか。一緒には見える

F#はじめます

F#は以前書いてたりはしたけれど、中途半端だったので、またやり始めます。

まずはインストール。

Ubuntu に.NETをインストールする - .NET | Microsoft Learn おきまりのHello Worldをこちらのチュートリアルで。

F# チュートリアル - 5 分でできる Hello World | .NET

出力

$ dotnet run
Hello from F#

あと、コマンドの使用状況を送信しているようで、オプトアウトしたい場合は次のリンクを参考に環境変数を設定する必要があります。

https://learn.microsoft.com/ja-jp/dotnet/core/tools/telemetry

export DOTNET_CLI_TELEMETRY_OPTOUT=true