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

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

Към профила на Марк Андонов

Резултати

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

Код

REPOSITORY = 'https://github.com/mark95/ruby-retrospective-2015-1'
# Двадесет неща, които научих.
#1 - Научих за едно проложение на хеш таблицата
#Като списък от стойности, които обръщаме до нещо друго.
#2 - Научих, че когато имам един и същ код копиран на много места
#като този за намиране на елемнта пред змията е най - добре да го #изкарам в отделна функция
#3 - Научих за опреатор push, разликата с + (не мутира масива)
#научих, че array[1..-1] връща всичко без последния елемент на масив и #осъзнах красотата на едноредовите решения.
#4 - Научих че кода [0...5] си се оценява на [0...5] и може да се #използва с map, each ..
#Докато [*0...5] се оценява на масива [0, 1, 2, 3, 4]. И че [0..5] #включва 5, а [0...5] не го всключва
#5 - Научих, са оператор sample , че е по разбираем от .shuffle.first #и за оператор | ,който намира
#union на две множества.
#6 - Научих, че се връща последния оценен израз - затова изрази от #вида
#check_first_move || check_second_move ? true : false са ненужни.
#7 - Научих, че грешки от разсеяност се случват често, най - вече #когато езика е нов и акцента
#пада върху неговото използване. Докато оправях грешките си научих, че #за да може един class да
#наследява Enumerable - трябва да имплементира each и да напишем #include Enumerable
#8 - Колкото и да се зарадвах, че още тогава съм умеел lazy #енумератори, за нещастие това е напълно
#неуместно в конкретната задача, след като искам да имплементирам each
#9 - Научих, че не е добър стил функция да се дефинира в никой клас
#(или автоматично да се дефинира в Objcet)
#10 - Научих как се дефинират стойност на функция по подразбиране и че #метод each няма нужда
#да връща каквото и да е освен да "yield-ва"
#11 - Научих за операция partition и ефективността й при работа с две #групи плучени от една.
#12 - Научих за опратор each_slice, как работи с enumerable и научих #колко ефективен може да е
#изпозлван с метод map.
#13 - Научих че метода to_s не е добре да е написан например puts #@mityo, защото не само може
#да даде грешки и освен това не можем да използваме @mityo. Най - #добре е да използваме @mityo.map(&:to_s).join("\n")
#или нещо от сорта да конвертираме елементите на масива до стринг и #после да ги конкатенираме със знака за нов ред.
#14 - Научих метод capitalize, който прави първата буква на низ главна
#15 - Научих, че като израза [1,2, *(10..20)] ни вмъква вмъква числата #от 10 до 20 в масива като
#отделни елементи, ако бяхме написали *[10..20] щеше да ни вмъкне #масива от тези числа. Съответно ако
#искаме на обратно *(20.downto(10)), което прави кода по четим и #съкращава излишно писане.
#16 - Научих, че винаги е добре обекти (в конкретната задача - масиви) #да бъдат замръзявани, ако не
#искам да бъдат променяние - защото вместо да се чудим къде е #програмистката грешка - просто кода гръмва :)
#17 - Научих, ако искам да взема от n-ти до m-ти елемент на масив най #- удачно е чрез
#аrr[n..m], но ако искам да ги взема и да ги изтрия arr.slice!(n, m) e #най - удачно, тъй като то
#връща изтритите елементи като мутира масива.
#18 - За конкретната задача видях, че търсейки каре вместо да #проверявам дали имам (например
# асо купа, асо пика, ...) мога просто да проверя дали асата в ръката #са 4. С което си припомних
#най - важния урок винаги да търсим по - лесно решение
#19 - Научих за метод select и видях негови приложения за улеснение не #решението - напраимер при
#избор карти от една и съща боя
#20 - Научих за оператор group_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 fcb130d Final solutins
From /tmp/ruby-retrospective-2015-1/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

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

‘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’
English words for names
* price1 on line 6 is not in english
* currency1 on line 6 is not in english
* price2 on line 6 is not in english
* currency2 on line 6 is not in english
* value1 on line 7 is not in english
* value2 on line 8 is not in english

Errors found
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 https://github.com/mark95/ruby-retrospective-2015-1: bundle exec rake check
     # /tmp/d20160131-21007-1pap7rn/spec.rb:107:in `execute'
     # /tmp/d20160131-21007-1pap7rn/spec.rb:82:in `block (3 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-1pap7rn/spec.rb:81:in `chdir'
     # /tmp/d20160131-21007-1pap7rn/spec.rb:81:in `block (2 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-1pap7rn/spec.rb:47:in `chdir'
     # /tmp/d20160131-21007-1pap7rn/spec.rb:47:in `block in solutions_pass_all_checks'
     # /tmp/d20160131-21007-1pap7rn/spec.rb:46:in `solutions_pass_all_checks'
     # /tmp/d20160131-21007-1pap7rn/spec.rb:20:in `ok?'
     # /tmp/d20160131-21007-1pap7rn/spec.rb:126:in `<top (required)>'

Finished in 0.00087 seconds
1 example, 1 failure

Failed examples:

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

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

Марк обнови решението на 27.01.2016 23:16 (преди около 9 години)

+REPOSITORY = 'https://github.com/mark95/ruby-retrospective-2015-1'
+
+# Двадесет неща, които научих.
+
+#1 - Научих за едно проложение на хеш таблицата
+#Като списък от стойности, които обръщаме до нещо друго.
+
+#2 - Научих, че когато имам един и същ код копиран на много места
+#като този за намиране на елемнта пред змията е най - добре да го #изкарам в отделна функция
+
+#3 - Научих за опреатор push, разликата с + (не мутира масива)
+#научих, че array[1..-1] връща всичко без последния елемент на масив и #осъзнах красотата на едноредовите решения.
+
+#4 - Научих че кода [0...5] си се оценява на [0...5] и може да се #използва с map, each ..
+#Докато [*0...5] се оценява на масива [0, 1, 2, 3, 4]. И че [0..5] #включва 5, а [0...5] не го всключва
+
+#5 - Научих, са оператор sample , че е по разбираем от .shuffle.first #и за оператор | ,който намира
+#union на две множества.
+
+#6 - Научих, че се връща последния оценен израз - затова изрази от #вида
+#check_first_move || check_second_move ? true : false са ненужни.
+
+#7 - Научих, че грешки от разсеяност се случват често, най - вече #когато езика е нов и акцента
+#пада върху неговото използване. Докато оправях грешките си научих, че #за да може един class да
+#наследява Enumerable - трябва да имплементира each и да напишем #include Enumerable
+
+#8 - Колкото и да се зарадвах, че още тогава съм умеел lazy #енумератори, за нещастие това е напълно
+#неуместно в конкретната задача, след като искам да имплементирам each
+
+#9 - Научих, че не е добър стил функция да се дефинира в никой клас
+#(или автоматично да се дефинира в Objcet)
+
+#10 - Научих как се дефинират стойност на функция по подразбиране и че #метод each няма нужда
+#да връща каквото и да е освен да "yield-ва"
+
+#11 - Научих за операция partition и ефективността й при работа с две #групи плучени от една.
+
+#12 - Научих за опратор each_slice, как работи с enumerable и научих #колко ефективен може да е
+#изпозлван с метод map.
+
+#13 - Научих че метода to_s не е добре да е написан например puts #@mityo, защото не само може
+#да даде грешки и освен това не можем да използваме @mityo. Най - #добре е да използваме @mityo.map(&:to_s).join("\n")
+#или нещо от сорта да конвертираме елементите на масива до стринг и #после да ги конкатенираме със знака за нов ред.
+
+#14 - Научих метод capitalize, който прави първата буква на низ главна
+
+#15 - Научих, че като израза [1,2, *(10..20)] ни вмъква вмъква числата #от 10 до 20 в масива като
+#отделни елементи, ако бяхме написали *[10..20] щеше да ни вмъкне #масива от тези числа. Съответно ако
+#искаме на обратно *(20.downto(10)), което прави кода по четим и #съкращава излишно писане.
+
+#16 - Научих, че винаги е добре обекти (в конкретната задача - масиви) #да бъдат замръзявани, ако не
+#искам да бъдат променяние - защото вместо да се чудим къде е #програмистката грешка - просто кода гръмва :)
+
+#17 - Научих, ако искам да взема от n-ти до m-ти елемент на масив най #- удачно е чрез
+#аrr[n..m], но ако искам да ги взема и да ги изтрия arr.slice!(n, m) e #най - удачно, тъй като то
+#връща изтритите елементи като мутира масива.
+
+#18 - За конкретната задача видях, че търсейки каре вместо да #проверявам дали имам (например
+# асо купа, асо пика, ...) мога просто да проверя дали асата в ръката #са 4. С което си припомних
+#най - важния урок винаги да търсим по - лесно решение
+
+#19 - Научих за метод select и видях негови приложения за улеснение не #решението - напраимер при
+#избор карти от една и съща боя
+
+#20 - Научих за оператор group_by и как се прилага за ефективно #разделяне на масив на части

Не ти минава skeptic проверката за първа задача и няма как да получиш точки от стандартната схема :/

Commit историята ти е някак бедна, но все пак си положил старание и си подобрил решенията. Освен това си се постарал и да напишеш 20-те поуки, тъй че ще получиш една точка, та да не си съвсем капо (:

Надявам се да си доволен от научените неща и също така да прeглeдаш как останалите от курса са подходили към тази задача.

ПП: Слабо форматиране и на места слаб правопис ми направиха впечатление, четейки 20-те неща, което си научил. И още нещо: оператор != метод (да, group_by, each_slice, и т.н. са методи, а не оператори)