ruby - 在 Scala 中查找 'tidy numbers'

标签 ruby scala integer

整洁的数字是数字按非递减顺序排列的数字,例如1234. 这是一种用 Ruby 编写的查找整洁数字的方法:

def tidy_number(n)
  n.to_s.chars.sort.join.to_i == n
end

p tidy_number(12345678)     # true
p tidy_number(12345878)     # false

我试着用 Scala 写同样的东西,结果如下:

object MyClass {
def tidy_number(n:Int) = n.toString.toList.sorted.mkString.toInt == n;

    def main(args: Array[String]) {
      println(tidy_number(12345678))        // true
      println(tidy_number(12345878))        // false
    }
}

我在 Scala 中可以做到的唯一方法是将整数转换为字符串再转换为列表,然后对列表进行排序并再次返回。我的问题:有更好的方法吗? “更好”的意思是转化次数较少。我主要是在寻找一个简洁的 Scala 片段,但如果有人指出用 Ruby 实现它的更简洁的方法,我将不胜感激。

最佳答案

您可以在 Scala 中对字符串使用 sorted,所以

def tidy_number(n: Int) = {
  val s = n.toString
  s == s.sorted
}

分两部分进行还可以避免额外的 toInt 转换。

我从未使用过 ruby ,但是 this post建议你以最好的方式做到这一点

关于ruby - 在 Scala 中查找 'tidy numbers',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51812677/

相关文章:

ruby - ActionMailer 字符串编码

ruby - 如何使用命令替换将 ruby​​ 脚本的输出作为参数传递给 shell 命令?

scala - 访问 Lift Scala net.liftweb.util.Box 对象中的实体

scala - 如何为SBT中的所有子项目设置默认依赖项?

C# SqlDataReader for int

Ruby 将数组与数组的哈希进行比较和匹配

ruby-on-rails - 在 rails 中按两列版本号查询

java - 在 Java/Scala 中,如何以最少量的代码/以最优雅的方式以秒为单位获取特定的 UTC 日期?

c++ - 如何在 C++ 中操作 float 的小数部分?

string - 在 Swift 中重新排序字符串字符