【問題】
考古学者兼ITエンジニアであるあなたはA遺跡の発掘に成功し、そこに数式のようなものが刻まれていることに気づきました。
あなたはこの数式の記法を特殊記法と命名し、解読を試みたところ、以下のルールを見つけ出しました。
・数式はすべて 2 個以上の整数の足し算となっている ・使用する整数は 1 から 99 までで、10 進法を用いる ・連続する "<" の数が整数の 10 の位を表し、それに続く連続する "/" (スラッシュ) の数が整数の 1 の位を表す ・"+" が足し算の記号を表す
このルールをもとに、特殊記法で書かれた数式を解釈し、その結果を返すプログラムを作成してください。なお、上記のルールで解釈不能な入力は与えられません。
例)
///+//// → 3 + 4 = 7 //+////// → 2 + 6 = 8 <///////+<<</+//// → 17 + 31 + 4 = 52
入力される値
入力は以下のフォーマットで与えられます。
E
・1 行目には特殊記法で書かれた数式を表す文字列 E が与えられます。
・入力は 1 行で、末尾に改行が1つ入ります。
条件
すべてのテストケースにおいて、以下の条件をみたします。
・E は半角記号 "<", "/", "+" で構成される
・3 ≦ (E の長さ) ≦ 100
入力例1
///+////
出力例1
7
入力例2
<///////+<<</+////
出力例2
52
入力例3
<<<<<<<<</////////+<<<<<<<<</////////
出力例3
198
【自分で書いたコード】
Ruby
1n = gets.split("+").map(&:to_s) 2A = n.select{|i| i.include?("<") && i.include?("/")} 3b = n - A 4B = b.select{|j| j.include?("<")} 5c = b - B 6C = c.select{|k| k.include?("/")} 7 8puts A 9puts A[1] 10a1 = A.count("/") 11puts a1 12a2 = A.count("<") 13b1 = B.count("<") 14c1 = C.count("/") 15puts c1 16 17puts a1 + a2*10 + b1*10 + c1
出力結果
</////// <<</ <<</ 0 0 0
【困っていること】
各配列のA、B、Cは想定しているものが取得できていると思っています。ただ、各々の配列に対してcountメソッドを適用するとすべて0
という結果が出てきます。どうして指定した文字でcountができないのでしょうか。ご教授いただけたら嬉しいです。
回答1件
あなたの回答
tips
プレビュー