1

ファイルから入力を取得し、各行を配列に変換してから、その配列をセットに変換しています。しかし、変換すると、セットは次のようなものを返します。

<Set:0x6268f8>

ただし、IRBで同じことを実行すると、正しい値が返されます。

require 'set'
n,p = gets.chomp.split.map { |e| e.to_i }
arr = gets.chomp.split( ).map{|x| x.to_i}
print arr
puts
old_set = arr.to_set
print old_set
if old_set.length != 1
    print "NO"
    exit
end

入力ファイル:

3 6
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2

これを実行すると、次のようになります。

C:\Ruby\kumar>ruby so.rb < abc.txt
[0, 0, 0, 0, 0, 0]
#<Set:0x3aad30>

IRBについて:

irb(main):010:0> arr = gets.chomp.split("")
aabbddefyy
=> ["a", "a", "b", "b", "d", "d", "e", "f", "y", "y"]
irb(main):011:0> se=arr.to_set
=> #<Set: {"a", "b", "d", "e", "f", "y"}>
irb(main):012:0> se
=> #<Set: {"a", "b", "d", "e", "f", "y"}>
4

1 に答える 1

1

その出力#<Set:0x3aad30>は、結果がSetオブジェクトであり、hex値がそのインスタンスオブジェクトのメモリアドレスであることを意味します。値を確認したい場合は、で行うことができますold_set.inspectあなたはここSetでクラスについてもっと読むことができます

于 2013-03-09T18:36:33.827 に答える