🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

再帰

情報工学における再帰とは、プログラムのあるメソッドの処理上で自身のメソッドが再び呼び出されている処理の事をいいます。

Q&A

解決済

2回答

844閲覧

python3のコードをRubyに変換したい(整数の桁の合計を1桁になるまで合計するコードです

DrqYuto

総合スコア432

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

再帰

情報工学における再帰とは、プログラムのあるメソッドの処理上で自身のメソッドが再び呼び出されている処理の事をいいます。

0グッド

0クリップ

投稿2019/11/30 15:24

編集2019/11/30 15:38

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
"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/12/01 00:37

> gets;a=gets.split.map(&:to_i).inject(:*) 最初から???です。 getsは元のPythonのどこに相当するつもりですか? なぜ足すのでなく、掛けようとしているのですか? > if修飾子の使い方やwhile修飾子の使い方がまだ分かってないのだと思います. 修飾子じゃなくt、if 文、while 文ならわかるのですか?であれば、修飾子を使う必要性は無いので、わかる構文を使いましょう。 if文がわからないとなると、まずそこから勉強しましょう。
DrqYuto

2019/12/01 13:33

先ずは分かるところからやってみます!
guest

回答2

0

別解として、「9で割った余りを出す(ただし、0のときはもとが0でない限り9にする)」という方法があります。

数字根 - Wikipedia

投稿2019/12/01 01:52

maisumakun

総合スコア145975

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DrqYuto

2019/12/01 13:35

数字根は知りませんでした!ありがとうございます!
guest

0

ベストアンサー

ruby

1a = a.digits.sum while a > 9 2p a

投稿2019/11/30 16:00

編集2019/12/04 02:12
asm

総合スコア15149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DrqYuto

2019/11/30 16:01

digitsは知らなかったです.ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問