0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rubyでハッシュを使ってみた。

Posted at

注意

AtCoderのabc261_C - NewFolder(1)のネタバレあり。

ACしたコード

n = gets.to_i
# puts n
s = readlines
# puts s

count = {}
s.each do |b|
	if count[b]==nil then
		count[b]=1
	else
		count[b]+=1
	end
		if count[b]>=2 then
			str="#{b.chomp}(#{count[b]-1})"
			puts str
		else
			puts b
		end
	end

実行結果
入力例 1:
5
newfile
newfile
newfolder
newfile
newfolder

実行結果 1:
newfile
newfile(1)
newfolder
newfile(2)
newfolder(1)

出力例 1:
newfile
newfile(1)
newfolder
newfile(2)
newfolder(1)

入力例 2:
11
a
a
a
a
a
a
a
a
a
a
a

実行結果 2:
a
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
a(7)
a(8)
a(9)
a(10)

出力例 2:
a
a(1)
a(2)
a(3)
a(4)
a(5)
a(6)
a(7)
a(8)
a(9)
a(10)

ACするまでの道のり

ハッシュの基本的な使い方を写経してみた。

hash1 = {"Ruby" =>0, "Pyson" =>0}
p hash1["Ruby"]
p hash1["Pyson"]

hash1["Ruby"]+=1
p hash1["Ruby"]

実行結果
0
0
1

・同じ文字列があればカウントするという問題なのでカウントできるようにしてみた。

hash={}   #ハッシュの初期化

a.each do |b|
    if hash[b]==nil then
        hash[b]=1
    else 
        hash[b]+=1
    end
    p "#{b}の値は#{hash[b]}"
end

実行結果
"Rubyの値は1"
"Pysonの値は1"
"Rubyの値は2"
"PHPの値は1"
"Rubyの値は3"
"Pysonの値は2"

Rubyの条件分岐でthenを使うのが気になったから調べてみた。

ACしたコードの条件分岐にchomp関数を使っていなかったので改行が入っていてACできなかった事に気づいた記事
chomp man
・ACしたコードのputsをpと書いていたので実行結果にダブルクォーテーションが付いていてACにならなかったのでputsとpの違いについてopenAIに聞いてみた。
Q.pをputsに変更したらダブルクォーテーションがなくなる理由を教えてください。

A.pメソッドは、引数として渡されたオブジェクトを可読性の高い形式で出力するために使用されます。pメソッドに文字列を渡すと、文字列がダブルクォーテーションで囲まれて出力されます。一方、putsメソッドは、渡されたオブジェクトの文字列表現を単に出力するため、ダブルクォーテーションを含む文字列でも、ダブルクォーテーションは取り除かれます。
したがって、pメソッドをputsメソッドに置き換えることで、出力結果からダブルクォーテーションが自動的に取り除かれることになります。

Q.pはデバック用ですか?

A.
はい、pメソッドは主にデバッグ目的で使用されることが多いメソッドです。pメソッドを使うことで、デバッグ中に変数の値や式の評価結果を出力し、コードの挙動を理解することができます。pメソッドは、引数として渡されたオブジェクトを出力するだけでなく、そのオブジェクトのクラス名やメソッドなどの情報も出力するため、デバッグに役立ちます。
一方で、pメソッドはデバッグ以外の用途でも使用することができます。例えば、配列やハッシュなどの複雑なデータ構造を出力する場合にも便利です。しかし、実際のプログラムで使用する際には、出力される情報が不要な場合や、出力される情報が読みにくい場合もあるため、適宜pメソッドとputsメソッドを使い分けることが望ましいです。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?