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

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

Към профила на Йоан Динков

Резултати

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

Код

REPOSITORY = 'https://github.com/yoandinkov/ruby-retrospective-2015-1'
# (не точно) Двадесет неща, които научих.
# 1. използване на Constant промениливи - до сега не ги бях използвал никъде, полезни са за премахване на
# дублиран код.
# 2. използване на Array#sample - лесен, а и вграден начин за изваждане на случайна проба. Явно в
# задачата(2) се е очаквало точно това.
# 3. използване на Array#+ - създава нов масив без нужда от дублиране, може да е залъгващо, но
# на мен ми изглежда по "чисто".
# 4. използване на times - по-лесен начин за циклене, тъй като не ми трябва самата "стъпка" от итерацията.
# 5. използване на Enumerable#partition - по-лесен и четим начин за разделяне на масива на групи.
# 6. използване на enum_for - лесен начин за превръщане на масив в enumerable.
# 7. използване на lazy - спестяваме си memory leak-a при безкрайни редици.
# 8. използване на ** 0.5 вместо Math.sqrt - не бях използвал в Ruby корен квадратен, като повдигане на
# степен 1/2 - може би не е толкова типично, но реших да го използвам като "математически подход".
# 9. използване на Rational вместо #rationalize - използвам конструктора на Rational, за по четим
# и лесен код.
# 10. използване на loop - тъй като в случая (задача 3) няма логическо значение дали ще имам while
# с някакво условие или ще го "break"-на вътре реших да използвам loop - изглежда с по-прост синтаксис.
# 11. използване на Enumerator#any? - любимата ми промяна (задача 4). Лесно и бързо връща булеви стойности
# като имаме някакви операции за проверка върху масиви.
# 12. използване на attr_reader за няколко променливи едновременно
# 13. използване на self - за предаване на методи от класа го предаваме като обект чрез self.
# 14. използване на alias_method - не знаех, че работи ако методите имат параметри, не се задълбочих, но явно
# ако параметрите са в същата последователност няма проблеми.

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

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 b3ed2df [Task 04] - Removing unused method.
From /tmp/ruby-retrospective-2015-1/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
https://github.com/yoandinkov/ruby-retrospective-2015-1/compare/767dd8dfe46...b3ed2dfa9c4

‘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.00483 seconds
8 examples, 0 failures
OK
....................

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

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

Finished in 0.02734 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.00168 seconds
1 example, 0 failures

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

Йоан обнови решението на 26.01.2016 19:37 (преди около 9 години)

+REPOSITORY = 'https://github.com/yoandinkov/ruby-retrospective-2015-1'
+
+# (не точно) Двадесет неща, които научих.
+# 1. използване на Constant промениливи - до сега не ги бях използвал никъде, полезни са за премахване на
+# дублиран код.
+# 2. използване на Array#sample - лесен, а и вграден начин за изваждане на случайна проба. Явно в
+# задачата(2) се е очаквало точно това.
+# 3. изпозване на Array#+ - създава нов масив без нужда от дублиране, може да е залъгващо, но
+# на мен ми изглежда по "чисто".
+# 4. използване на times - по-лесен начин за циклене, тъй като не ми трябва самата "стъпка" от итерацията.
+# 5. използване на Enumerable#partition - по-лесен и четим начин за разделя на масива на групи.
+# 6. използване на enum_for - лесен начин за превръщане на масив в enumerable.
+# 7. използване на lazy - спестяваме си memory leak-a при безкрайни редици.
+# 8. използване на ** 0.5 вместо Math.sqrt - не бях използвал в Ruby корен квадратен, като повдигане на
+# степен 1/2 - може би не е толкова типично, но реших да го използвам като "математически подход".
+# 9. използване на Rational вместо #rationalize - използвам конструктора на Rational, за по четим
+# и лесен код.
+# 10. използване на loop - тъй като в случая (задача 3) няма логическо значение дали ще имам while
+# с някакво условие или ще го "break"-на вътре реших да използвам loop - изглежда с по-прост синтаксис.
+# 11. изпозлване на Enumerator#any? - любимата ми промяна (задача 4). Лесно и бързо връща булеви стойности
+# като имаме някакви операции за проверка върху масиви.
+# 12. изпозване на attr_reader за няколко променливи едновременно
+# 13. изпозлване на self - за предаване на методи от класа го предаваме като обект чрез self.
+# 14. използване на alias_method - не знаех, че работи ако методите имат параметри, не се задълбочих, но явно
+# ако параметрите са в същата последователност няма проблеми.

Йоан обнови решението на 26.01.2016 23:34 (преди около 9 години)

REPOSITORY = 'https://github.com/yoandinkov/ruby-retrospective-2015-1'
# (не точно) Двадесет неща, които научих.
# 1. използване на Constant промениливи - до сега не ги бях използвал никъде, полезни са за премахване на
# дублиран код.
# 2. използване на Array#sample - лесен, а и вграден начин за изваждане на случайна проба. Явно в
# задачата(2) се е очаквало точно това.
-# 3. изпозване на Array#+ - създава нов масив без нужда от дублиране, може да е залъгващо, но
+# 3. използване на Array#+ - създава нов масив без нужда от дублиране, може да е залъгващо, но
# на мен ми изглежда по "чисто".
# 4. използване на times - по-лесен начин за циклене, тъй като не ми трябва самата "стъпка" от итерацията.
-# 5. използване на Enumerable#partition - по-лесен и четим начин за разделя на масива на групи.
+# 5. използване на Enumerable#partition - по-лесен и четим начин за разделяне на масива на групи.
# 6. използване на enum_for - лесен начин за превръщане на масив в enumerable.
# 7. използване на lazy - спестяваме си memory leak-a при безкрайни редици.
# 8. използване на ** 0.5 вместо Math.sqrt - не бях използвал в Ruby корен квадратен, като повдигане на
# степен 1/2 - може би не е толкова типично, но реших да го използвам като "математически подход".
# 9. използване на Rational вместо #rationalize - използвам конструктора на Rational, за по четим
# и лесен код.
# 10. използване на loop - тъй като в случая (задача 3) няма логическо значение дали ще имам while
# с някакво условие или ще го "break"-на вътре реших да използвам loop - изглежда с по-прост синтаксис.
-# 11. изпозлване на Enumerator#any? - любимата ми промяна (задача 4). Лесно и бързо връща булеви стойности
+# 11. използване на Enumerator#any? - любимата ми промяна (задача 4). Лесно и бързо връща булеви стойности
# като имаме някакви операции за проверка върху масиви.
-# 12. изпозване на attr_reader за няколко променливи едновременно
-# 13. изпозлване на self - за предаване на методи от класа го предаваме като обект чрез self.
+# 12. използване на attr_reader за няколко променливи едновременно
+# 13. използване на self - за предаване на методи от класа го предаваме като обект чрез self.
# 14. използване на alias_method - не знаех, че работи ако методите имат параметри, не се задълбочих, но явно
# ако параметрите са в същата последователност няма проблеми.

Привет :)

Нямаш 20 неща и не са особено подробни, но пък си отделил достатъчно време и ми харесва, че си правил много промени и commit-и, затова ще ти компенсирам отнетите (заради броя неща) точки с бонус.

Една забележка към commit съобщенията - пиши ги в сегашно време. Например [Task 04] - Removing unused default values. би било добре да е [Task 04] - Remove unused default values. Също, не се оставя точка на първия ред от съобщението, то е като заглавие.