Skip to main content

tk3++

バブルソート 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] なのか。一緒には見える