LoginSignup
0
0

More than 3 years have passed since last update.

安全な数字(ruby編)

Posted at

[問題]安全な数字(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回みたいに数える機能)
  • 配列の要素の数を数えるための機能

以上!

0
0
1

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