質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

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

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

246閲覧

countメソッドが適用されない

mingo09

総合スコア23

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

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

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2022/06/24 06:06

【問題】
考古学者兼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ができないのでしょうか。ご教授いただけたら嬉しいです。

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

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

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

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

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

maisumakun

2022/06/24 06:17

> 各配列のA、B、Cは想定しているものが取得できていると思っています。 要素ごとに区切ってみないと、きちんと区切れているのか判別がつかないように見えます。
melian

2022/06/24 06:18

> どうして指定した文字でcountができないのでしょうか。 A が array だから、です。
mingo09

2022/06/24 06:43

maisumakunさま、ご回答ありがとうございます。 puts A puts 0 puts A[0] puts 1 puts A[1] このようにコードを書いた結果、次のような結果が出たので、ちゃんと区切れているかと思います。 </////// <<</ 0 </////// 1 <<</
melian

2022/06/24 06:49

入力例2の場合の、A.count("/") と A[0].count("/") の違いを確認してみて下さい。
guest

回答1

0

ベストアンサー

どうして指定した文字でcountができないのでしょうか。

1引数のArray#countは、引数と完全一致する要素の数を数えます。<///////は、.count('/')で数える対象になりません。

投稿2022/06/24 06:50

maisumakun

総合スコア145184

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

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

mingo09

2022/06/24 07:34

文字列で評価しないといけないんですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問