gpt4 book ai didi

ruby - 在 Scala 中查找 'tidy numbers'

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:13 24 4
gpt4 key购买 nike

整洁的数字是数字按非递减顺序排列的数字,例如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/

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