Второто предизвикателство е публикувано. Крайният срок е до събота на обяд.
Примерните тестове са тук.
Ако имате въпроси или проблеми, пишете смело.
Второто предизвикателство е публикувано. Крайният срок е до събота на обяд.
Примерните тестове са тук.
Ако имате въпроси или проблеми, пишете смело.
Аз искам само да попитам дали има ограничение в дължината на реда? В решенията от предното предизвикателство видях, че имаше решения с редове по-дълги от 80 символа.Примерно:
require 'matrix'
def zig_zag(n)
matrix = Matrix.build(n) { |row, col| row.even? ? col + n * row + 1 : n * (row + 1) - col }.to_a
end
Според мен тук идеята е сам да си налагаш ограничения и колкото по-строг си към себе си, толкова повече трикове научаваш.
Някакви тестове (надявам се верни) -> тук
@Кристиян Азманов, ограничения няма. Ако има, то те принципно се дават заедно с условието (както е при задачите).
Та както каза и @Методи Димитров, сам си налагаш ограниченията (:
@Ники - супер, че качваш тестове. Според мен е много добра идея да споделяме тестове, защото примерно на задачите въобще не се сетих да тествам за prime? когато масива съдържа nil
някъде по средата и съответно съм fail-нал този тест. Може би заедно ще може повече ситуации да обхванем.
Верни са, 3ти, 5ти и 6ти са с разместени елементи, но това едва ли е проблем. :)
При мен:
p homogenize([1, :a, 2, :b, 3, :c])# => [[1, 2, 3], [:a, :b, :c]]
p homogenize([:a, "Jimi", "Kurt", :b])# => [[:a, :b], ["Jimi", "Kurt"]]
p homogenize([:a, "Kurt", :b])# => [[:a, :b], ["Kurt"]]
p homogenize([:a,32,:b,3,"gosho"])# => [[:a, :b], [32, 3], ["gosho"]]
p homogenize([[],{},Hash.new(0),3,'gosho'])# => [[[]], [{}, {}], [3], ["gosho"]]
p homogenize([1.3,1/3r,:b,3,Array.new])# => [[1.3], [(1/3)], [:b], [3], [[]]]
p homogenize([])# => []
p homogenize([nil,[nil]])# => [[nil], [[nil]]]
p homogenize([NilClass,Array]) # => [[NilClass, Array]]
От условието - "Редът на самите подсписъци във върнатия списък не е от значение." И нарочно съм ги разместил и би трябвало да работи :)
Не разбирам, къде е проблема при мен. Решението ми е подобно, като на мнозинството, само съм добавил flatten, за да ми изглади масива, ако подам многомерен масив.
Ето ми кода:
def homogenize(array)
array.flatten.group_by { |element| element.class }.values
end
Ето и грешката:
1) homogenize returns array of homogeneous arrays
Failure/Error: [anonymous_nil]]
expected collection contained: [[5, 6], [:a, :b], [[1, 2], [3, 4]], [#]]
actual collection contained: [[1, 2, 3, 4, 5, 6], [:a, :b], [#]]
the missing elements were: [[5, 6], [[1, 2], [3, 4]]]
the extra elements were: [[1, 2, 3, 4, 5, 6]]
# /tmp/d20131019-16294-17dvgw4/spec.rb:16:in `block (2 levels) in '
# ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in '
# ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in '
Мерси : ))
Edit: Разбрах си грешката. Изобщо не е имало нужда от flatten, за да може да има елемент, който съдържа вътрешните масивите от входящия :).
Трябва да сте влезли в системата, за да може да отговаряте на теми.