Sha256: bf8dc424ede1956897936ea7a206e6fedb5d89b30d3fb5029aa6c500fa9ca790

Contents?: true

Size: 838 Bytes

Versions: 77

Compression:

Stored size: 838 Bytes

Contents

module Transpose

let transpose (rows: string list): string list =
    let transposedCoordinates =
        rows
        |> List.mapi (fun row str -> str |> Seq.mapi (fun col char -> (col, (row, char))) |> List.ofSeq)
        |> List.concat

    let groupedByTransposedColumns =
        transposedCoordinates
        |> List.groupBy fst
        |> List.map (fun (row, chars) -> (row, chars |> List.map snd))

    let transposedColToRow (input: (int * char) list) =
        let maxCol = input |> List.map fst |> List.max
        let findCharacter col = 
            match List.tryFind (fun (c, _) -> c = col) input with
            | Some y -> snd y
            | None -> ' '

        [| 0..maxCol |] 
        |> Array.map findCharacter
        |> System.String

    groupedByTransposedColumns
    |> List.map (snd >> transposedColToRow)

Version data entries

77 entries across 77 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.179 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.178 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.177 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.176 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.175 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.174 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.173 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.172 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.171 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.170 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.169 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.167 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.166 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.165 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.164 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.163 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.162 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.161 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.160 tracks/fsharp/exercises/transpose/Example.fs