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

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

Към профила на Иван Станков

Резултати

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

Код

REPOSITORY = 'http://github.com/juicebbox/ruby-retrospective-2015-1'
# Двадесет неща, които научих/
#
#1. Redefining of Object#initialize may cause an infinite loop # - нещо за което
# не бих се замислил, преди да получа предупреждението.
#2. Използването на Hash много улеснява работата в определени #случаи
#3. 1ва задача може да се реши единствено със два метода, без да се използва
# помощен метод или константи.
#4. Използването на помощни методи, които преизползват даден код прави програмата
# по-четлива и разбираема.
#5. Елементите във масив могат да се извикват и отзад напред, което се оказва
# доста полезно
#6. Object#dup прави плитко копие на даден обект, но се различава от clone по това,
# че #dup създава нова инстанция на обекта без да копира всички вътрешни състояния,
# като референции към други класове и т.н. Разбирам го като все едно се създава
# Object.new($всички параметри на дупликирания обект),
# вместо да се клонира самият обект във конкретното му състояние.
#7. Във Ruby всичко може да стане по много начини, но не винаги първият начин е
# най-добрият.. нито може би вторият.
#8. Когато се налага да напиша какво съм научил, разбирам че съм се залъгвал,
# че съм научил нещо.
#9. Методът #move може да се реализира на един ред, без нужда от редица присвоявания
# и преобразувания, които в крайна сметка доведоха до грешен резултат.
#10. #new_food може да използва Array#product за да генерира матрица със всички клетки.
#11. (някакъв range).to_a създава array със всички клетки от рейндж-а
#12. В задача 3 съм дефинирал class Sequence, който прави прекалено сложни и грешни
# изчисления, от които няма смисъл, тъй като всяка от редиците има специфики
#13. Може да се добави метод във вече съществуващ клас, което в конкретната задача
# е много полезно. Добавянето на метод #prime? във Numeric позволява да се проверява
# всяка numeric променлива дали е просто число или не.
#14. Enumerable#one? e много полезен метод, който връща true, ако даденият блок връща true за точно един елемент от колекцията.
#15. Методите, които се ползват само вътре в класа е най-добре да бъдат private.
#16. Enumerable#partition{|obj| block} връща два масива, единият който се оценява като истина и вторият, който се оценява като лъжа.
# Доста полезно и елегантно решение за #meaningless
#17. Array#index може да се използва във get_rank за по-елегантно решение. Тотално съм оплескал 4та задача.
#18. Мога да дефинирам методи, които винаги връщат една и съща стойност(като #suits, #ranks, etc.)
#19. Може да се дефинира клас вътре във даден клас.
#20. Enumerable#sort_by може да сортира по зададено условие. Доста полезно и кратко решение.

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

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 3f1c988 InitialSolutions
From /tmp/ruby-retrospective-2015-1/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
http://github.com/juicebbox/ruby-retrospective-2015-1/compare/767dd8dfe46...3f1c9884960

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

Failures:

  1) #move moves snake up/right/left/down
     Failure/Error: expect(move(snake, [1, 0])).to eq([[2, 3], [2, 4], [2, 5], [3, 5]])
       
       expected: [[2, 3], [2, 4], [2, 5], [3, 5]]
            got: [[2, 4], [2, 5], [2, 6], [3, 6]]
       
       (compared using ==)
     # ./specs/02_spec.rb:6:in `block (2 levels) in <top (required)>'

Finished in 0.00133 seconds
1 example, 1 failure

Failed examples:

rspec ./specs/02_spec.rb:4 # #move moves snake up/right/left/down
F

Failures:

  1) ruby-retrospective-2015-1 covers the minimum requirements
     Failure/Error: system(command) or raise "Command failed for #{@solutions_repo}: #{command}"
     RuntimeError:
       Command failed for http://github.com/juicebbox/ruby-retrospective-2015-1: bundle exec rake check
     # /tmp/d20160131-21007-1h8tpy5/spec.rb:107:in `execute'
     # /tmp/d20160131-21007-1h8tpy5/spec.rb:82:in `block (3 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-1h8tpy5/spec.rb:81:in `chdir'
     # /tmp/d20160131-21007-1h8tpy5/spec.rb:81:in `block (2 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-1h8tpy5/spec.rb:47:in `chdir'
     # /tmp/d20160131-21007-1h8tpy5/spec.rb:47:in `block in solutions_pass_all_checks'
     # /tmp/d20160131-21007-1h8tpy5/spec.rb:46:in `solutions_pass_all_checks'
     # /tmp/d20160131-21007-1h8tpy5/spec.rb:20:in `ok?'
     # /tmp/d20160131-21007-1h8tpy5/spec.rb:126:in `<top (required)>'

Finished in 0.00086 seconds
1 example, 1 failure

Failed examples:

rspec /tmp/d20160131-21007-1h8tpy5/spec.rb:132 # ruby-retrospective-2015-1 covers the minimum requirements

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

Иван обнови решението на 17.01.2016 15:36 (преди около 9 години)

+REPOSITORY = 'http://github.com/juicebbox/ruby-retrospective-2015-1'
+
+# Двадесет неща, които научих/
+#
+#1. Redefining of Object#initialize may cause an infinite loop # - нещо за което
+# не бих се замислил, преди да получа предупреждението.
+#2. Използването на Hash много улеснява работата в определени #случаи
+#3. 1ва задача може да се реши единствено със два метода, без да се използва
+# помощен метод или константи.
+#4. Използването на помощни методи, които преизползват даден код прави програмата
+# по-четлива и разбираема.
+#5. Елементите във масив могат да се извикват и отзад напред, което се оказва
+# доста полезно
+#6. Object#dup прави плитко копие на даден обект, но се различава от clone по това,
+# че #dup създава нова инстанция на обекта без да копира всички вътрешни състояния,
+# като референции към други класове и т.н. Разбирам го като все едно се създава
+# Object.new($всички параметри на дупликирания обект),
+# вместо да се клонира самият обект във конкретното му състояние.
+#7. Във Ruby всичко може да стане по много начини, но не винаги първият начин е
+# най-добрият.. нито може би вторият.
+#8. Когато се налага да напиша какво съм научил, разбирам че съм се залъгвал,
+# че съм научил нещо.
+#9. Методът #move може да се реализира на един ред, без нужда от редица присвоявания
+# и преобразувания, които в крайна сметка доведоха до грешен резултат.
+#10. #new_food може да използва Array#product за да генерира матрица със всички клетки.
+#11. (някакъв range).to_a създава array със всички клетки от рейндж-а
+#12. В задача 3 съм дефинирал class Sequence, който прави прекалено сложни и грешни
+# изчисления, от които няма смисъл, тъй като всяка от редиците има специфики
+#13. Може да се добави метод във вече съществуващ клас, което в конкретната задача
+# е много полезно. Добавянето на метод #prime? във Numeric позволява да се проверява
+# всяка numeric променлива дали е просто число или не.
+#14. Enumerable#one? e много полезен метод, който връща true, ако даденият блок връща true за точно един елемент от колекцията.
+#15. Методите, които се ползват само вътре в класа е най-добре да бъдат private.
+#16. Enumerable#partition{|obj| block} връща два масива, единият който се оценява като истина и вторият, който се оценява като лъжа.
+# Доста полезно и елегантно решение за #meaningless
+#17. Array#index може да се използва във get_rank за по-елегантно решение. Тотално съм оплескал 4та задача.
+#18. Мога да дефинирам методи, които винаги връщат една и съща стойност(като #suits, #ranks, etc.)
+#19. Може да се дефинира клас вътре във даден клас.
+#20. Enumerable#sort_by може да сортира по зададено условие. Доста полезно и кратко решение.

Иване, кодът, който си качил в хранилището ти, е съставен от един-единствен commit - "Initial solutions". Да не си забравил да push-неш промените си?

Каченото в момента фейлва тестовете и затова имаш нула от "редовните" точки.

Нещата, които си описал като поуки са окей и ти давам бонус точка за това, за да уважа труда ти.