如何在F#中的打印表中添加填充?

时间:2015-05-24 07:24:25

标签: f#

我正在尝试打印一个因子:

输入:一个int n。

输出:1表的阶乘结果表!到n!。

这是我做的:

let toBigInt (n: int) = bigint(n)  // Convert an "int" to a "bigint".

// Factorial with bigint support:
let fac n = 
    [1..n] 
    |> List.map toBigInt 
    |> List.reduce (*) 

let printFacTable n =
    let listNum = [1 .. n]
    let listFac = listNum |> List.map fac
    let numFacPair = List.zip listNum listFac
    for (k, v)  in numFacPair
        do printfn "%d ! = %A" k v

结果:

> printFacTable 12;;
1 ! = 1
2 ! = 2
3 ! = 6
4 ! = 24
5 ! = 120
6 ! = 720
7 ! = 5040
8 ! = 40320
9 ! = 362880
10 ! = 3628800
11 ! = 39916800
12 ! = 479001600
val it : unit = ()

结果很好。我想通过! =前面的调整填充来垂直对齐!。假设此程序接受最多8位数作为输入。我想填充应该是:

let padding = 8 - eachNum.length

但我不知道怎么把它放到程序块中。任何的想法?

3 个答案:

答案 0 :(得分:2)

Printf module documentation中所述,您只需指定字段的宽度:

printfn "%8d ! = %A" k v

答案 1 :(得分:1)

试试这个:

do printfn "%8d ! = %A" k v

答案 2 :(得分:1)

我认为最好在左侧进行格式化:

for (k, v)  in numFacPair
    do printfn "%-2d ! = %A" k v

然后printFacTable 12:

1  ! = 1
2  ! = 2
3  ! = 6
4  ! = 24
5  ! = 120
6  ! = 720
7  ! = 5040
8  ! = 40320
9  ! = 362880
10 ! = 3628800
11 ! = 39916800
12 ! = 479001600

链接:http://ideone.com/gJeK0B