python3のコードをrubyに変換したいです.
def digitSum(n): # 桁数を判定する if len(str(n)) is 1: return n dst = sum(list(map(int, str(n)))) return digitSum(dst) if __name__ == "__main__": n = 12345 result = digitSum(n) print(int(result)) # 15
出力は6となります.
rubyで書いてみたのですがよく分からなくなってしまいました.
gets;a=gets.split.map(&:to_i).inject(:*) b=a.to_s.chars.map(&:to_i).sum p b.to_s.chars.map(&:to_i).sum if b.to_s.size >= 1
if修飾子の使い方やwhile修飾子の使い方がまだ分かってないのだと思います.
再帰もよくわかってません…
参考
整数の各桁の和を求める方法 | Python - suzu6
https://www.suzu6.net/posts/30/
"指定桁数になるまで再帰的に計算を繰り返してみます。
"""
各桁の合計値を計算
桁数が1になるまで繰り返す
"""
def digitSum(n):
# 桁数を判定する
if len(str(n)) is 1:
return n
dst = sum(list(map(int, str(n))))
return digitSum(dst)
if name == "main":
n = 12345
result = digitSum(n)
print(int(result)) # 15"
追記
25
39532 77816 39481 47622 16931 32489 56334 22924 71026 26191 10335 11788 77781 95817 89898 65677 23947 98056 61947 55674 21198 52752 21623 62340 82524
のとき
9
を出したいのですが
18が出力されます
yukicoder
https://yukicoder.me/problems/no/933/test#Test06.txt
"39532 77816 39481 47622 16931 32489 56334 22924 71026 26191 10335 11788 77781 95817 89898 65677 23947 98056 61947 55674 21198 52752 21623 62340 82524
"
回答2件
あなたの回答
tips
プレビュー