Решение на Девета задача от Виктор Радивчев

Обратно към всички решения

Към профила на Виктор Радивчев

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 1 успешни тест(а)
  • 0 неуспешни тест(а)

Код

REPOSITORY = 'https://github.com/victor2992/ruby-retrospective-2015-1'
=begin
Двадесет неща, които научих:
1. Как да използвам hash, за да си спестя излишни проверки.
2. Наличието на оператор <=>, както и факта, че реализирането му ми дава
наготово всички функции от comparable.
3. Много от функциите, като тази за закръгляне до знак след десетичната
запетая ги има наготово и няма нужда аз да ги реализирам.
4. Достъпът до елементите на масив може и да се осъществява, броеейки от края му.
Например последния елемент може да се достъпи с [-1].
5. Функциите values и keys за хешове връщат масиви, в които ключовете и стойностите
са не непременно в реда, в който са в хеша, поради което не е добре да ги използвам
ако искам да достъпя конкретен елемент.
6. Функцията sample, дефинирана в Array и мога да използвам за генериране на
произволен елемент от масив.
7. Работа с области в Ruby - разликата между .. и ... при range.
8. Какво представлява monkey patch.
9. Как да работя с блокове, вместо да въртя цикли.
10. Научих различни функции от Enumerable като reduce, map и др.
11. Как да си структурирам цялостно решението, така че кодът ми да е четим.
12. Как да използвам декартово произведение на множества, за са си генерирам
целите тестета.
13. Функцията each_slice и как да я използвам, когато трябва да групирам елементите
е маси в по двойки.
14. Как да използвам наследяването по - ефективно, за да ми се налага да си
предефинирам минимален брой функции.
15. Когато си предефинирам each, да използвам вече готовия, вместо да го пиша от
нулата.
16. Как да използвам reduce за операции различни от умножение и събиране, налагайки
се да давам начална стойност.
17. Функцията upto чрез която мога да извършвам определена операция много пъти, без
да се налага да използвам цикъл.
18. Когато имам израз с and или or, той се оценява до истина или лъжа и мога
да избегна писането на ненужни if-oве.
19. Да използвам вградените фукции за действия с множества като + и -.
20. Функцията each_cons и как да я изполвам, когато искам да разгледам всички групи
с определена дължина от поредни елементи.
=end

Лог от изпълнението

From https://github.com/fmi/ruby-retrospective-2015-1
 * branch            master     -> FETCH_HEAD
HEAD is now at 767dd8d Update the task name in the readme for clarity
Cloning into 'submission'...
HEAD is now at 9bfb393 removed syntax error
From /tmp/ruby-retrospective-2015-1/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
https://github.com/victor2992/ruby-retrospective-2015-1/compare/767dd8dfe46...9bfb3933841

‘solutions/04.rb’ -> ‘/tmp/ruby-retrospective-2015-1/checker/solutions/04.rb’
‘solutions/02.rb’ -> ‘/tmp/ruby-retrospective-2015-1/checker/solutions/02.rb’
‘solutions/03.rb’ -> ‘/tmp/ruby-retrospective-2015-1/checker/solutions/03.rb’
‘solutions/01.rb’ -> ‘/tmp/ruby-retrospective-2015-1/checker/solutions/01.rb’
OK
........

Finished in 0.0049 seconds
8 examples, 0 failures
OK
....................

Finished in 0.0111 seconds
20 examples, 0 failures
OK
....................

Finished in 0.01001 seconds
20 examples, 0 failures
OK
.........................................................

Finished in 0.02305 seconds
57 examples, 0 failures
From https://github.com/fmi/ruby-homework
 * branch            master     -> FETCH_HEAD
HEAD is now at 9dd040c Modify a test in task 8 to not include empty cells
.

Finished in 0.00157 seconds
1 example, 0 failures

История (1 версия и 1 коментар)

Виктор обнови решението на 27.01.2016 22:38 (преди над 9 години)

+REPOSITORY = 'https://github.com/victor2992/ruby-retrospective-2015-1'
+
+=begin
+
+Двадесет неща, които научих:
+
+1. Как да използвам hash, за да си спестя излишни проверки.
+2. Наличието на оператор <=>, както и факта, че реализирането му ми дава
+наготово всички функции от comparable.
+3. Много от функциите, като тази за закръгляне до знак след десетичната
+запетая ги има наготово и няма нужда аз да ги реализирам.
+4. Достъпът до елементите на масив може и да се осъществява, броеейки от края му.
+Например последния елемент може да се достъпи с [-1].
+5. Функциите values и keys за хешове връщат масиви, в които ключовете и стойностите
+са не непременно в реда, в който са в хеша, поради което не е добре да ги използвам
+ако искам да достъпя конкретен елемент.
+6. Функцията sample, дефинирана в Array и мога да използвам за генериране на
+произволен елемент от масив.
+7. Работа с области в Ruby - разликата между .. и ... при range.
+8. Какво представлява monkey patch.
+9. Как да работя с блокове, вместо да въртя цикли.
+10. Научих различни функции от Enumerable като reduce, map и др.
+11. Как да си структурирам цялостно решението, така че кодът ми да е четим.
+12. Как да използвам декартово произведение на множества, за са си генерирам
+целите тестета.
+13. Функцията each_slice и как да я използвам, когато трябва да групирам елементите
+е маси в по двойки.
+14. Как да използвам наследяването по - ефективно, за да ми се налага да си
+предефинирам минимален брой функции.
+15. Когато си предефинирам each, да използвам вече готовия, вместо да го пиша от
+нулата.
+16. Как да използвам reduce за операции различни от умножение и събиране, налагайки
+се да давам начална стойност.
+17. Функцията upto чрез която мога да извършвам определена операция много пъти, без
+да се налага да използвам цикъл.
+18. Когато имам израз с and или or, той се оценява до истина или лъжа и мога
+да избегна писането на ненужни if-oве.
+19. Да използвам вградените фукции за действия с множества като + и -.
+20. Функцията each_cons и как да я изполвам, когато искам да разгледам всички групи
+с определена дължина от поредни елементи.
+
+=end
  • 2. Не си използвал comparable в Card в 4-та задача :)
  • 5. (Ключ => стойност)-ите в Hash са в реда на въвеждане. Тоест като кажеш {b: 1, a: 2}.each { |k, v| } първо ще е к = :b; v = 1, после другото. В документацията не пише експлицитно за values и keys, но бих твърдял, че и те са в същия ред. Поне имат примери, които очакват такъв ред и в повечето spec-овете за езика пак се очаква подобно подреждане.