如何在 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)