LoginSignup
3
0

More than 3 years have passed since last update.

【Ruby】各桁の和を求める方法

Last updated at Posted at 2021-01-14

目的

例えば、1,234という数値。この数値の各桁の和は、1 + 2 + 3 + 4で、答えは10になります。
これをRubyを使用して出力する方法が二通りあります。

演算子を使用する方法

一つは演算子を使用し、それぞれの桁の値を抽出し、全て足す方法です。


num = 1234

thousand = (num / 1000) % 10   # => 1
hundred = (num / 100) % 10     # => 2
ten = (num / 10) % 10          # => 3
one = num % 10                 # => 4

answer = thousand + hundred + ten + one

p answer
# => 10

使用した演算子

演算子 意味
+ 加算(足し算)
/ 除算(割り算)
% 剰余(余り)

解説

まず、一の位の値を出す方法
1234という数値の中の4だけが欲しい時、
1234から4を取り出す方法は、123410で割れば、その余りが一の位の4になります。


1234 ÷ 10 = 123.4   ===>    123 ・・・4

この余りを求める方法は、演算子の%を使用すれば可能です。


1234 % 10
# => 4

%は、商の整数部分を取り除き、余りのみを返してくれます。


次に、二桁以上の位の値を出す方法
十の位、百の位、それ以上の位の値を求めるには、求めたい値の位を一の位に持って来ることができれば、上記の一の位の値を出す方法で求めることができます。
つまり、1234

  • 十の位が欲しい時、 => 123.4 =小数点以下を切り捨て=> 123
  • 百の位が欲しい時、 => 12.34 =小数点以下を切り捨て=> 12
  • 千の位が欲しい時、 => 1.234 =小数点以下を切り捨て=> 1

このようにするには数値を求めたい桁の位で割れば可能です。


# 十の位
1234 ÷ 10 = 123.4
# 百の位
1234 ÷ 100 = 12.34
# 千の位
1234 ÷ 1000 = 1.234

演算子の除算は/を使用します。


# 十の位
1234 / 10
# => 123

# 百の位
1234 / 100
# => 12

# 千の位
1234 / 1000
# => 1

/は商の小数点以下を取り除き、整数部分のみ返してくれます。

これに上記の一の位の値を出す方法を組み合わせると、求めたい位の値を出すことができます。


# 百の位
(1234 / 100) % 10
# => 3

あとは計算で出た値を全て足すだけです。




メソッドを使用する方法

もう一つはメソッドを使用し、数値を配列にして合わせる方法です。

num = 1234
answer = num.digits.sum

p answer
# => 10

使用したメソッド

メソッド 役割
digits 数値を位ごとにバラバラにする
sum 配列の要素を合計する

解説

まず、digitsメソッドを使用して、位ごとに分割します。
digitsメソッドは位ごとに分割し、一の位から並べた配列を返してくれます。

1234.digits
# => [4, 3, 2, 1]

そして、sumメソッドで配列の各要素を足します。


[4, 3, 2, 1].sum
# => 10




最後に

各桁の値を出すのみであれば演算子で計算をすれば良いのですが、和を求める場合はメソッドを使用した方が簡単です。

ご覧いただき、ありがとうございました。

3
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0