如何在 hackerrank.com 上提交 Scala 挑战时获取标准输入
How to get a hold of standard input while submitting a scala challenge on hackerrank.com
使用 Scala 解决 HackerRank 的挑战。
对于 "Swap Nodes" 这样的挑战,我需要掌握标准输入。怎么样?
您的问题本质上是关于如何轻松地从标准输入中读取数据。
对于 Hackerrank,我从 scala.io.Source.stdin 切换到使用 readInt() 和 readLine() 等函数。我不认为 getLines returns 你是一个空迭代器,你尝试过 toList 吗?使用迭代器的优点是内存占用少,因为只有实际行保留在内存中。
所以问题中的问题要求你读入一个整数 N 然后给你 N 行整数对或 -1。然后它跟随一个整数 T 并且在 T 行中单个数字 k.
val N = readInt()
// process these into a tree structure
val edges : Seq[Array[Int]] =
for (_ <- 1 to N)
yield readLine().split(" ").map(_.toInt)
val T = readInt()
for (_ <- 1 to T) {
val k = readInt()
// process k
}
另一个技巧是如果你说读取一行有两个整数 a, b 你可以按如下方式读取它们:
val Array(a,b) = readLine().split(" ").map(_.toInt)
使用 Scala 解决 HackerRank 的挑战。
对于 "Swap Nodes" 这样的挑战,我需要掌握标准输入。怎么样?
您的问题本质上是关于如何轻松地从标准输入中读取数据。
对于 Hackerrank,我从 scala.io.Source.stdin 切换到使用 readInt() 和 readLine() 等函数。我不认为 getLines returns 你是一个空迭代器,你尝试过 toList 吗?使用迭代器的优点是内存占用少,因为只有实际行保留在内存中。
所以问题中的问题要求你读入一个整数 N 然后给你 N 行整数对或 -1。然后它跟随一个整数 T 并且在 T 行中单个数字 k.
val N = readInt()
// process these into a tree structure
val edges : Seq[Array[Int]] =
for (_ <- 1 to N)
yield readLine().split(" ").map(_.toInt)
val T = readInt()
for (_ <- 1 to T) {
val k = readInt()
// process k
}
另一个技巧是如果你说读取一行有两个整数 a, b 你可以按如下方式读取它们:
val Array(a,b) = readLine().split(" ").map(_.toInt)