###悩み
コードは途中まで考えることができたのですが、エラーが起こったりして問題の答えとなるコードの考えが及びません。
この途中のコードを実行までに至るまでにはどうすればいいのか、または私のコードを無視して一から考えるならばどのようなコードになるのか教えていただきたいです。
根本的に考え方が間違っている点もあると思いますので、指摘していただると嬉しいです。
初心者なので、何行目のコードがどういう処理をもたらすのかも記載していただけますと大変助かります。
お力を貸していただけると幸いです。よろしくお願いいたします。
###問題
言語はRUBYです。 丸括弧、波括弧、角括弧から構成される文字列について、 各括弧が正しい入れ子関係になっているかどうかを判定するプログラムを作ってください。 <正しい入れ子関係の例> [] []{} [()]{} ([()]{}) <誤った入れ子関係の例> (]) ... 開いていない角括弧を閉じている []( ... 開いた丸括弧を閉じていない ([)] ... 開いた角括弧を閉じる前に丸括弧を閉じている
###途中で行き詰ったコード
puts "括弧の文字列を入力してください" #例:{()} str = gets #入力された文字を正しい入れ子関係になっているかを判断したい。 #条件式 str.each_char do |brackets| str.gsub(/ \( \) | \{ \} | \[ \] /) #strから"()"または"{}","[]"を取り除く。取り除かれなかったものはstrに残る。 #(このコードは間違っているかもしれません) #取り除いたものからtrueかfalseか判断する条件式 #strに文字列が一つも残らなければtrue.残ればfalse if brackets.size.zero? puts "正しい入れ子です" else puts "誤った入れ子です" end end
###考え方
getsで入力された括弧の文字列に対してgsubで括弧のペアを削除し、変数bracketsに文字列が残らなければtrueとなり正しいと出力される。文字列が残っていればfalseとなるコードを考えています。
この考えをコードに落とし込みたいのですがわかりませんでした。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/31 15:50
退会済みユーザー
2017/07/31 15:56 編集
2017/08/01 06:03