(Scala)生成将1加到n位数字的序列

时间:2018-06-21 15:10:48

标签: scala loops sequence

如何生成大小为n的序列,如下所示:

n = 3
000
001
002
003
...
010
011
012
...
999

我可以将固定数量的for循环用于固定数量的数字,但是我该如何在序列中使用n个数字呢?

谢谢! ^^

2 个答案:

答案 0 :(得分:4)

这将提供您要查找的输出,但以Seq中的String为单位。您可以将3替换为n,以获得更多或更少的前导零。

Range(0,1000).map(n => "%03d".format(n))

scala.collection.immutable.IndexedSeq[String] = Vector(000, 001, 002, 003, 004, 005, 006, 007, 008, 009, 010, 011, ...)

答案 1 :(得分:1)

假设:

  • n指定数字中的位数
  • 范围是0 to Math.pow(10, n)

动态解决方案是:

val n = 3 //Or any number

def upperBound : Int = Math.pow(10, n).toInt
def formatNum(num : Int) : String = s"%0${n}d".format(num)
def range: Range = Range(0, upperBound)

range.map(formatNum)

这里的要点是,您可以使用字符串插值来使用s"..."对数字进行变量填充,其中变量用$var_name${var_name}

表示。