Решение на Пета задача от Николай Колев

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

Към профила на Николай Колев

Резултати

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

Код

REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3'
# Забележка: Премахнах english_words_for_names поради крашване на skeptic със съобщение за libaspell.so.
# Проблемите продължиха и редактирах english_word? в моя /skeptic/rules/english_words_for_names.rb да връща true.
#
#
# Двадесет неща, които научих.
#
# 01. Кога имплементирането на Enumerable е по-удобно от използване на масив.
# 02. find_all не е уместен, когато искам да премахна кратните на N номера, имало reject.with_index;
# 03. Използвам git-командите COMMIT и PUSH, преди това знаех само CLONE;
# 04 Правилния начин да иницализирам празен масив с [], както и да го инициализирам със съдържание, пак с такива скоби
# 05. Kонфигурирам sublime за да мога да следя за trailing whitespace и да заместя автоматично TAB с whitespace;
# 06. Спестя редове, като инициализирам променливите по този начин a,b,c = 1,2,3, което не ми изглежда красиво, но върши работа за skeptic;
# 07. Да пиша променливите в snake_case, защото се оказа че преди това съм ги пишел в camelCase;
# 08. Да използвам zip и flatten вместо да итерирам C-like;
# 09. Лесния и бърз начин да инициализирам хеш с {};
# 10. именувам описателно променливи, а не да пиша криптирани имена като __uint_ptr;
# 11. Използвам регулярни изрази, има още много да науча по въпроса;
# 12. Как да използвам ламбда функции;
# 13. Метапрограмирането може да бъде лошо, когато се използва за тривиални неща, че е по-добре да се старай да пазя кода четим и разбираем отколкото кратък;
# 14. използвам attr_accessor за по-бързо и удобно достъпване на променливи;
# 15. мога да използвам method_missing за да определя какво се случва, когато бива извикан метод, който не е дефиниран;
# 16. да използвам BasicObject, когато не искам namespace-то ми да е замърсено;
# 17. Как да използвам функции верижно, като всяка да използва резултата от предишната и защо това е възможно;
# 18. Важноста на кодирането на сорскода при използване на REGEX (опасността от български букви вътре);
# 19. Съществуването на ключва дума elsif;
# 20. Мога да настроя Hash да връща стойност по подразбиране;

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

Николай обнови решението на 22.01.2014 17:01 (преди около 10 години)

+REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3.git'
+
+#
+#Двадесет неща, които научих.
+#
+# 01. Кога имплементирането на Enumerable е по-удобно от използване на масив.
+# 02. find_all не е уместен, когато искам да премахна кратните на N номера, имало reject.with_index;
+# 03. Използвам git-командите COMMIT и PUSH, преди това знаех само CLONE;
+# 04 Правилния начин да иницализирам празен масив с [], както и да го инициализирам със съдържание, пак с такива скоби
+# 05. Kонфигурирам sublime за да мога да следя за trailing whitespace и да заместя автоматично TAB с whitespace;
+# 06. Спестя редове, като инициализирам променливите по този начин a,b,c = 1,2,3, което не ми изглежда красиво, но върши работа за skeptic;
+# 07. Да пиша променливите в snake_case, защото се оказа че преди това съм ги пишел в camelCase;
+# 08. Да използвам zip и flatten вместо да итерирам C-like;
+# 09. Лесния и бърз начин да инициализирам хеш с {};
+# 10. именувам описателно променливи, а не да пиша криптирани имена като __uint_ptr;
+# 11. Използвам регулярни изрази, има още много да науча по въпроса;
+# 12. Как да използвам ламбда функции;
+# 13. Метапрограмирането може да бъде лошо, когато се използва за тривиални неща, че е по-добре да се старай да пазя кода четим и разбираем отколкото кратък;
+# 14. използвам attr_accessor за по-бързо и удобно достъпване на променливи;
+# 15. мога да използвам method_missing за да определя какво се случва, когато бива извикан метод, който не е дефиниран;
+# 16. да използвам BasicObject, когато не искам namespace-то ми да е замърсено;
+# 17. Как да използвам функции верижно, като всяка да използва резултата от предишната и защо това е възможно;
+# 18. Важноста на кодирането на сорскода при използване на REGEX (опасността от български букви вътре);
+# 19. Съществуването на ключва дума elsif;
+# 20. Мога да настроя Hash да връща стойност по подразбиране;

Николай обнови решението на 22.01.2014 17:10 (преди около 10 години)

REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3.git'
+
+# Забележка: Имах проблем с проверката на английски думи (крашваше със съобщение за libaspell.so), но дори когато премахнах english_words_for_names, но това не помогна и затова редактирах проверката на моя skeptic да смята всякa дума за верен английски.
#
#Двадесет неща, които научих.
#
# 01. Кога имплементирането на Enumerable е по-удобно от използване на масив.
# 02. find_all не е уместен, когато искам да премахна кратните на N номера, имало reject.with_index;
# 03. Използвам git-командите COMMIT и PUSH, преди това знаех само CLONE;
# 04 Правилния начин да иницализирам празен масив с [], както и да го инициализирам със съдържание, пак с такива скоби
# 05. Kонфигурирам sublime за да мога да следя за trailing whitespace и да заместя автоматично TAB с whitespace;
# 06. Спестя редове, като инициализирам променливите по този начин a,b,c = 1,2,3, което не ми изглежда красиво, но върши работа за skeptic;
# 07. Да пиша променливите в snake_case, защото се оказа че преди това съм ги пишел в camelCase;
# 08. Да използвам zip и flatten вместо да итерирам C-like;
# 09. Лесния и бърз начин да инициализирам хеш с {};
# 10. именувам описателно променливи, а не да пиша криптирани имена като __uint_ptr;
# 11. Използвам регулярни изрази, има още много да науча по въпроса;
# 12. Как да използвам ламбда функции;
# 13. Метапрограмирането може да бъде лошо, когато се използва за тривиални неща, че е по-добре да се старай да пазя кода четим и разбираем отколкото кратък;
# 14. използвам attr_accessor за по-бързо и удобно достъпване на променливи;
# 15. мога да използвам method_missing за да определя какво се случва, когато бива извикан метод, който не е дефиниран;
# 16. да използвам BasicObject, когато не искам namespace-то ми да е замърсено;
# 17. Как да използвам функции верижно, като всяка да използва резултата от предишната и защо това е възможно;
# 18. Важноста на кодирането на сорскода при използване на REGEX (опасността от български букви вътре);
# 19. Съществуването на ключва дума elsif;
# 20. Мога да настроя Hash да връща стойност по подразбиране;

Николай обнови решението на 22.01.2014 17:11 (преди около 10 години)

-REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3.git'
+REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3'
# Забележка: Имах проблем с проверката на английски думи (крашваше със съобщение за libaspell.so), но дори когато премахнах english_words_for_names, но това не помогна и затова редактирах проверката на моя skeptic да смята всякa дума за верен английски.
#
#Двадесет неща, които научих.
#
# 01. Кога имплементирането на Enumerable е по-удобно от използване на масив.
# 02. find_all не е уместен, когато искам да премахна кратните на N номера, имало reject.with_index;
# 03. Използвам git-командите COMMIT и PUSH, преди това знаех само CLONE;
# 04 Правилния начин да иницализирам празен масив с [], както и да го инициализирам със съдържание, пак с такива скоби
# 05. Kонфигурирам sublime за да мога да следя за trailing whitespace и да заместя автоматично TAB с whitespace;
# 06. Спестя редове, като инициализирам променливите по този начин a,b,c = 1,2,3, което не ми изглежда красиво, но върши работа за skeptic;
# 07. Да пиша променливите в snake_case, защото се оказа че преди това съм ги пишел в camelCase;
# 08. Да използвам zip и flatten вместо да итерирам C-like;
# 09. Лесния и бърз начин да инициализирам хеш с {};
# 10. именувам описателно променливи, а не да пиша криптирани имена като __uint_ptr;
# 11. Използвам регулярни изрази, има още много да науча по въпроса;
# 12. Как да използвам ламбда функции;
# 13. Метапрограмирането може да бъде лошо, когато се използва за тривиални неща, че е по-добре да се старай да пазя кода четим и разбираем отколкото кратък;
# 14. използвам attr_accessor за по-бързо и удобно достъпване на променливи;
# 15. мога да използвам method_missing за да определя какво се случва, когато бива извикан метод, който не е дефиниран;
# 16. да използвам BasicObject, когато не искам namespace-то ми да е замърсено;
# 17. Как да използвам функции верижно, като всяка да използва резултата от предишната и защо това е възможно;
# 18. Важноста на кодирането на сорскода при използване на REGEX (опасността от български букви вътре);
# 19. Съществуването на ключва дума elsif;
# 20. Мога да настроя Hash да връща стойност по подразбиране;

Николай обнови решението на 22.01.2014 17:12 (преди около 10 години)

REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3'
# Забележка: Имах проблем с проверката на английски думи (крашваше със съобщение за libaspell.so), но дори когато премахнах english_words_for_names, но това не помогна и затова редактирах проверката на моя skeptic да смята всякa дума за верен английски.
#
-#Двадесет неща, които научих.
+# Двадесет неща, които научих.
#
# 01. Кога имплементирането на Enumerable е по-удобно от използване на масив.
# 02. find_all не е уместен, когато искам да премахна кратните на N номера, имало reject.with_index;
# 03. Използвам git-командите COMMIT и PUSH, преди това знаех само CLONE;
# 04 Правилния начин да иницализирам празен масив с [], както и да го инициализирам със съдържание, пак с такива скоби
# 05. Kонфигурирам sublime за да мога да следя за trailing whitespace и да заместя автоматично TAB с whitespace;
# 06. Спестя редове, като инициализирам променливите по този начин a,b,c = 1,2,3, което не ми изглежда красиво, но върши работа за skeptic;
# 07. Да пиша променливите в snake_case, защото се оказа че преди това съм ги пишел в camelCase;
# 08. Да използвам zip и flatten вместо да итерирам C-like;
# 09. Лесния и бърз начин да инициализирам хеш с {};
# 10. именувам описателно променливи, а не да пиша криптирани имена като __uint_ptr;
# 11. Използвам регулярни изрази, има още много да науча по въпроса;
# 12. Как да използвам ламбда функции;
# 13. Метапрограмирането може да бъде лошо, когато се използва за тривиални неща, че е по-добре да се старай да пазя кода четим и разбираем отколкото кратък;
# 14. използвам attr_accessor за по-бързо и удобно достъпване на променливи;
# 15. мога да използвам method_missing за да определя какво се случва, когато бива извикан метод, който не е дефиниран;
# 16. да използвам BasicObject, когато не искам namespace-то ми да е замърсено;
# 17. Как да използвам функции верижно, като всяка да използва резултата от предишната и защо това е възможно;
# 18. Важноста на кодирането на сорскода при използване на REGEX (опасността от български букви вътре);
# 19. Съществуването на ключва дума elsif;
# 20. Мога да настроя Hash да връща стойност по подразбиране;

Николай обнови решението на 22.01.2014 17:20 (преди около 10 години)

-REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3'
+REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3.git'
-# Забележка: Имах проблем с проверката на английски думи (крашваше със съобщение за libaspell.so), но дори когато премахнах english_words_for_names, но това не помогна и затова редактирах проверката на моя skeptic да смята всякa дума за верен английски.
+# Забележка: Премахнах english_words_for_names поради крашване на skeptic със съобщение за libaspell.so.
+# Проблемите продължиха и редактирах english_word? в моя /skeptic/rules/english_words_for_names.rb да връща true
#
-# Двадесет неща, които научих.
+#
+#Двадесет неща, които научих.
#
# 01. Кога имплементирането на Enumerable е по-удобно от използване на масив.
# 02. find_all не е уместен, когато искам да премахна кратните на N номера, имало reject.with_index;
# 03. Използвам git-командите COMMIT и PUSH, преди това знаех само CLONE;
# 04 Правилния начин да иницализирам празен масив с [], както и да го инициализирам със съдържание, пак с такива скоби
# 05. Kонфигурирам sublime за да мога да следя за trailing whitespace и да заместя автоматично TAB с whitespace;
# 06. Спестя редове, като инициализирам променливите по този начин a,b,c = 1,2,3, което не ми изглежда красиво, но върши работа за skeptic;
# 07. Да пиша променливите в snake_case, защото се оказа че преди това съм ги пишел в camelCase;
# 08. Да използвам zip и flatten вместо да итерирам C-like;
# 09. Лесния и бърз начин да инициализирам хеш с {};
# 10. именувам описателно променливи, а не да пиша криптирани имена като __uint_ptr;
# 11. Използвам регулярни изрази, има още много да науча по въпроса;
# 12. Как да използвам ламбда функции;
# 13. Метапрограмирането може да бъде лошо, когато се използва за тривиални неща, че е по-добре да се старай да пазя кода четим и разбираем отколкото кратък;
# 14. използвам attr_accessor за по-бързо и удобно достъпване на променливи;
# 15. мога да използвам method_missing за да определя какво се случва, когато бива извикан метод, който не е дефиниран;
# 16. да използвам BasicObject, когато не искам namespace-то ми да е замърсено;
# 17. Как да използвам функции верижно, като всяка да използва резултата от предишната и защо това е възможно;
# 18. Важноста на кодирането на сорскода при използване на REGEX (опасността от български букви вътре);
# 19. Съществуването на ключва дума elsif;
# 20. Мога да настроя Hash да връща стойност по подразбиране;

Николай обнови решението на 22.01.2014 17:20 (преди около 10 години)

REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3.git'
# Забележка: Премахнах english_words_for_names поради крашване на skeptic със съобщение за libaspell.so.
-# Проблемите продължиха и редактирах english_word? в моя /skeptic/rules/english_words_for_names.rb да връща true
+# Проблемите продължиха и редактирах english_word? в моя /skeptic/rules/english_words_for_names.rb да връща true.
#
#
-#Двадесет неща, които научих.
+# Двадесет неща, които научих.
#
# 01. Кога имплементирането на Enumerable е по-удобно от използване на масив.
# 02. find_all не е уместен, когато искам да премахна кратните на N номера, имало reject.with_index;
# 03. Използвам git-командите COMMIT и PUSH, преди това знаех само CLONE;
# 04 Правилния начин да иницализирам празен масив с [], както и да го инициализирам със съдържание, пак с такива скоби
# 05. Kонфигурирам sublime за да мога да следя за trailing whitespace и да заместя автоматично TAB с whitespace;
# 06. Спестя редове, като инициализирам променливите по този начин a,b,c = 1,2,3, което не ми изглежда красиво, но върши работа за skeptic;
# 07. Да пиша променливите в snake_case, защото се оказа че преди това съм ги пишел в camelCase;
# 08. Да използвам zip и flatten вместо да итерирам C-like;
# 09. Лесния и бърз начин да инициализирам хеш с {};
# 10. именувам описателно променливи, а не да пиша криптирани имена като __uint_ptr;
# 11. Използвам регулярни изрази, има още много да науча по въпроса;
# 12. Как да използвам ламбда функции;
# 13. Метапрограмирането може да бъде лошо, когато се използва за тривиални неща, че е по-добре да се старай да пазя кода четим и разбираем отколкото кратък;
# 14. използвам attr_accessor за по-бързо и удобно достъпване на променливи;
# 15. мога да използвам method_missing за да определя какво се случва, когато бива извикан метод, който не е дефиниран;
# 16. да използвам BasicObject, когато не искам namespace-то ми да е замърсено;
# 17. Как да използвам функции верижно, като всяка да използва резултата от предишната и защо това е възможно;
# 18. Важноста на кодирането на сорскода при използване на REGEX (опасността от български букви вътре);
# 19. Съществуването на ключва дума elsif;
# 20. Мога да настроя Hash да връща стойност по подразбиране;

Николай обнови решението на 22.01.2014 17:21 (преди около 10 години)

-REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3.git'
+REPOSITORY = 'https://github.com/nikolaybanchev/ruby-retrospective-3'
# Забележка: Премахнах english_words_for_names поради крашване на skeptic със съобщение за libaspell.so.
# Проблемите продължиха и редактирах english_word? в моя /skeptic/rules/english_words_for_names.rb да връща true.
#
#
# Двадесет неща, които научих.
#
# 01. Кога имплементирането на Enumerable е по-удобно от използване на масив.
# 02. find_all не е уместен, когато искам да премахна кратните на N номера, имало reject.with_index;
# 03. Използвам git-командите COMMIT и PUSH, преди това знаех само CLONE;
# 04 Правилния начин да иницализирам празен масив с [], както и да го инициализирам със съдържание, пак с такива скоби
# 05. Kонфигурирам sublime за да мога да следя за trailing whitespace и да заместя автоматично TAB с whitespace;
# 06. Спестя редове, като инициализирам променливите по този начин a,b,c = 1,2,3, което не ми изглежда красиво, но върши работа за skeptic;
# 07. Да пиша променливите в snake_case, защото се оказа че преди това съм ги пишел в camelCase;
# 08. Да използвам zip и flatten вместо да итерирам C-like;
# 09. Лесния и бърз начин да инициализирам хеш с {};
# 10. именувам описателно променливи, а не да пиша криптирани имена като __uint_ptr;
# 11. Използвам регулярни изрази, има още много да науча по въпроса;
# 12. Как да използвам ламбда функции;
# 13. Метапрограмирането може да бъде лошо, когато се използва за тривиални неща, че е по-добре да се старай да пазя кода четим и разбираем отколкото кратък;
# 14. използвам attr_accessor за по-бързо и удобно достъпване на променливи;
# 15. мога да използвам method_missing за да определя какво се случва, когато бива извикан метод, който не е дефиниран;
# 16. да използвам BasicObject, когато не искам namespace-то ми да е замърсено;
# 17. Как да използвам функции верижно, като всяка да използва резултата от предишната и защо това е възможно;
# 18. Важноста на кодирането на сорскода при използване на REGEX (опасността от български букви вътре);
# 19. Съществуването на ключва дума elsif;
# 20. Мога да настроя Hash да връща стойност по подразбиране;

Смятам, че по решенията ти може да има още подобрения. Например, не ми харесва този postfix while и последващия го return в първа задача. Важна, основна логика е изместена и сбутана в края на метода, в края на реда.

Вместо String#split(//) е по-добре да ползваш String#chars. Вместо Integer(some_string), ползвай some_string.to_i, to_f вместо Float(...) и т.н.

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

Иначе, нещата, които си научил, ми харесват. Надявам се, че и ти си доволен от наученото :)