目標:なにがしたいか?
全要素がユニークな文字列Aと全要素がユニークな文字列Bはほぼ同じかどうか
問題
ある文字列”xyz”があります。これを用いてパスワードを作成することにしました。
条件を満たしたとき、”OK”を出力し、満たさないときは”NG”を出力します。
条件1:完全に一致した場合NGとする。(ほぼ同じではないので)例: “xyz”
条件2:文字列の長さが同じでない場合もNG 例: “xy”
条件3:文字列を入れ替えたとき同じならOK 例:”zyx”
条件4:文字列の要素はユニークである例:”abcd” ◎ 例:”aabc”×
与えられる入力値1
xyz xy
期待する出力
"NG"
与えられる入力値2
xyz zyx
期待する出力2
"OK"
コードと解説
a = gets.chomp.chars b = gets.chomp.chars if a == b || a.size != b.size puts "NG" elsif a - b == [] puts "OK" else puts "NG" end
https://paiza.io/ja/projects/new
↑こちらにコピペして「実行」で確認できます。
↓このような出力結果になっていればOKです。
※配列と配列の重複している部分は差集合-を使うことで
順番が違う場合でも適用される
差集合
※更に詳しく
実際に
["x", "y", "z"] - ["z", "y", "x"]
の時[]になるので、[]になったときに”OK”を出力している
ただし↓の場合