Size: a a a

2017 October 24

DB

Dmitry Batracov in RubyRush
a =  [ 1, 1, 2, 2, 2, 3, 3 ]
a.uniq.map { |x| "#{x}-#{a.count(x)}" }.join(', ')
источник

DB

Dmitry Batracov in RubyRush
Можешь попробовать вообще свой итератор написать, подходящий под данную задачу
источник

ИС

Илья Солдаткин... in RubyRush
Ок, спасибо!
источник

S

Shurik in RubyRush
можно получить красивый хэш с результатами
arr = [1, 1, 2, 3, 4, 5, 6, 6, 5, 3, 5, 7, 8]
hash = {}
hash.default = 0
arr.each { |elem| hash[elem] += 1 }
p hash # => {1=>2, 2=>1, 3=>2, 4=>1, 5=>3, 6=>2, 7=>1, 8=>1}
источник

ИС

Илья Солдаткин... in RubyRush
О, благодарю: так 12-ть раз не надо по массиву проходить count-ом!)
источник

VV

Vadim Venediktov in RubyRush
Илья Солдаткин
Например, есть такой массив: [ 1, 1, 2, 2, 2, 3, 3 ] как посчитать сколько в нём единиц, сколько двоек, троек, не делая count 1, 2, 3 ?
А что значит не делая count 1, 2, 3?
источник

VV

Vadim Venediktov in RubyRush
$ irb
2.3.3 :001 > [1, 1, 2, 2, 2, 3, 3].count(1)
=> 2


Вот так нельзя типа?
источник
2017 October 25

ИС

Илья Солдаткин... in RubyRush
Vadim Venediktov
$ irb
2.3.3 :001 > [1, 1, 2, 2, 2, 3, 3].count(1)
=> 2


Вот так нельзя типа?
Да.
источник

ИС

Илья Солдаткин... in RubyRush
Vadim Venediktov
А что значит не делая count 1, 2, 3?
Ну, чтобы не .count(1), потом .count(2) и без цикла для 1,2,3
источник

VV

Vadim Venediktov in RubyRush
$ irb
2.4.1 :001 > array =  [1, 1, 2, 2, 2, 3, 3]
2.4.1 :002 > array.uniq.map { |i| [i, array.count(i)] }
=> [[1, 2], [2, 3], [3, 2]]
источник

DB

Dmitry Batracov in RubyRush
Ну, я примерно тоже самое скинул)
источник

VV

Vadim Venediktov in RubyRush
Угу
источник

ИС

Илья Солдаткин... in RubyRush
Но, в этом случае count-у нужно 7 раз пройтись по массиву, ведь так?
источник

VV

Vadim Venediktov in RubyRush
столько раз, сколько уникальных цифр в массиве
источник

ИС

Илья Солдаткин... in RubyRush
А, ну да, три
источник

VV

Vadim Venediktov in RubyRush
Shurik
можно получить красивый хэш с результатами
arr = [1, 1, 2, 3, 4, 5, 6, 6, 5, 3, 5, 7, 8]
hash = {}
hash.default = 0
arr.each { |elem| hash[elem] += 1 }
p hash # => {1=>2, 2=>1, 3=>2, 4=>1, 5=>3, 6=>2, 7=>1, 8=>1}
Не, если есть задача в один проход все сделать, то вот решение
источник

VV

Vadim Venediktov in RubyRush
похоже на задачу с какого-то галимого собеседования :)
источник

ИС

Илья Солдаткин... in RubyRush
Ну, эт я нагуглил, да)
источник

VV

Vadim Venediktov in RubyRush
Ну в задаче есть условие на сложность алгоритма по времени?
источник

ИС

Илья Солдаткин... in RubyRush
Просто нужно сделать в один проход. После трёх дней попыток и догадок захотелось понять сторонние мнения)
источник