Sha256: 2d2ad7b8af95b619f43053e580a2b3a4264034e716a0af790457db842a0248ed

Contents?: true

Size: 902 Bytes

Versions: 319

Compression:

Stored size: 902 Bytes

Contents

module Transpose

let transpose (input: string) = 
    let rows = input.Split '\n'

    let transposedCoordinates =
        rows
        |> Array.mapi (fun row str -> str |> Seq.mapi (fun col char -> (col, (row, char))) |> Seq.toArray)
        |> Array.concat

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

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

    groupedByTransposedColumns
    |> Seq.map (snd >> transposedColToRow)
    |> String.concat "\n"

Version data entries

319 entries across 319 versions & 1 rubygems

Version Path
trackler-2.2.1.101 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.100 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.99 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.98 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.97 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.96 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.95 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.94 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.93 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.92 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.91 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.90 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.89 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.88 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.87 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.86 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.85 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.84 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.83 tracks/fsharp/exercises/transpose/Example.fs
trackler-2.2.1.82 tracks/fsharp/exercises/transpose/Example.fs