[問題]安全な数字(ruby編)
問題
4 桁のパスワードを考える上で法則性のある数字を避けようと考えています。
4 桁の数字で構成されたパスワードの文字列 s が入力されるので同じ数字が 2 つ以上存在すれば「NG」、そうでない場合は「OK」と出力してください。
入力される値
入力は以下のフォーマットで与えられます。
s
・1 行目に 4 桁の数字で構成されたパスワードの文字列 s が与えられます。
・入力は合計で 1 行となり、入力値最終行の末尾に改行が 1 つ入ります。
期待する出力
4 桁の数字で構成されたパスワードの文字列 s が入力されるので同じ数字が 2 つ以上存在すれば「NG」、そうでない場合は「OK」と出力してください。
入力例1
2020
出力例1
NG
入力例2
1234
出力例2
OK
私の答え
a = gets.chomp.chars
if (a.count - a.uniq.count) > 0
puts "NG"
else
puts "OK"
end
1行目のcharsメソッドで例1で例えると["2" "0" "2" "0"]のように1文字づつ分割している
2行目でa.countの返り値4からa.uniq.countの返り値2を引いた数が0より大きければ"NG"を出力するというもの。
uniqメソッド
配列の要素の中で重複している要素を削除して削除後の配列として返すメソッド
countメソッド
- 文字列の特定の文字の出現回数を数えるための機能(「こんばんは」という文字に「ん」は2回みたいに数える機能)
- 配列の要素の数を数えるための機能