gpt4 book ai didi

Scala 将参数拆分为多行并解析为 Int

转载 作者:行者123 更新时间:2023-12-04 04:35:57 24 4
gpt4 key购买 nike

这可能最终会变得非常简单,但我要求更多帮助我学习更好的 Scala 习语(Python 专业人士希望学习一些 Scala 技巧。)

我正在做一些黑客等级问题,输入方法需要从标准输入读取行。规范引用如下:

The first line contains the number of test cases T. T test cases follow. Each case contains two integers N and M.



所以在传递给脚本的输入中看起来像这样:
4
2 2
3 2
2 3
4 4

我想知道什么是正确的、惯用的方法来做到这一点。我想了几个:
  • 使用 io.Source.stdin.readLines.zipWithIndex ,然后在 foreach 中,如果索引大于 0,则在空白处拆分并映射到 (_.toInt)
  • 使用相同的 readLines函数来获取输入,然后对索引进行模式匹配。
  • 在空格和换行符上拆分以制作单个数字列表,映射 toInt ,弹出第一个元素(问题大小),然后对 2 取模,为我的问题函数创建参数元组。

  • 我想知道更有经验的 Scala 程序员会考虑解析这些 args 的最佳方法,其中 2 个元素行是函数的 args,第一个单数行只是要解决的问题数量。

    最佳答案

    也许你正在寻找这样的东西?

    def f(x: Int, y: Int) = { f"do something with $x and $y" }

    io.Source.stdin.readLines
    .map(_.trim.split("\\s+").map(_.toInt)) // split and convert to ints
    .collect { case Array(a, b) => f(a, b) } // pass to f if there are two arguments
    .foreach(println) // print the result of each function call

    关于Scala 将参数拆分为多行并解析为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755018/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com