目的
例えば、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
を取り出す方法は、1234
を10
で割れば、その余りが一の位の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
最後に
各桁の値を出すのみであれば演算子で計算をすれば良いのですが、和を求める場合はメソッドを使用した方が簡単です。
ご覧いただき、ありがとうございました。