2013-07-24 6 views
0

это мой код, чтобы вернуть элементы, которые присутствуют ровно один раз в массивеПринимая вход в виде разделенных запятыми список от пользователя

a = [1,2,2,3,3,4,5] 
p a.select{|i| a.count(i) == 1} 
# >> [1, 4, 5] 

может кто-нибудь предложить, пожалуйста, как сделать массив как ввод с клавиатуры от пользователя ??

+0

Ознакомьтесь с драгоценным камнем 'highline'. Вы можете использовать его напрямую или прочитать источник, чтобы узнать, как он обрабатывает вход массива. –

ответ

0

Ниже образом:

s=gets.chomp 
a = s.split("") 
0

Используйте метод gets, чтобы получить строку из стандартного ввода. (Это коротко для «get string»!) chomp удаляет конечные пробелы, то есть символ новой строки, который возникает после нажатия ввода в конце ввода.

Таким образом, вызывая str = gets.chomp и вводя 1 2 2 3 3 4 5, в ответ на запрос будет установлено str - "1 2 2 3 3 4 5". Затем просто используйте str.split, чтобы преобразовать его в массив.

1
print "Enter an array: " 
STDOUT.flush 
arr = STDIN.gets.chomp.split(/,/).map(&:to_i) 
# Enter an array: 1,2,2,3,3,4,5 <ENTER> 
arr # => [1, 2, 2, 3, 3, 4, 5] 
0

Вот довольно краткий способ сбора определенного количества ввода в массив:

n = 7 
a = n.times.collect { gets.chomp.to_i } 

Затем вы можете использовать существующий код на a.

irb(main):022:0> a = n.times.collect{gets.chomp.to_i} 
1 
2 
2 
3 
3 
4 
5 
=> [1, 2, 2, 3, 3, 4, 5] 
irb(main):023:0> a.select{|i| a.count(i) == 1} 
=> [1, 4, 5]