Решение на Първа задача от Цветелина Борисова

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

Към профила на Цветелина Борисова

Резултати

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

Код

START_NUMBERS = { 'lucas' => [2, 1],
'fibonacci' => [1, 1],
'summed' => [3, 2] }
def series(type, index)
Hash.new do |hash, index|
if index <= 2
hash[index] = START_NUMBERS[type][index - 1]
else
hash[index] = hash[index - 1] + hash[index - 2]
end
end[index]
end

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

............

Finished in 0.0127 seconds
12 examples, 0 failures

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

Цветелина обнови решението на 08.10.2014 23:49 (преди около 10 години)

+START_NUMBERS = { 'lucas' => [2, 1],
+ 'fibonacci' => [1, 1],
+ 'summed' => [3, 2] }
+
+def series(type, index)
+ Hash.new do |hash, index|
+ if index <= 2
+ number = START_NUMBERS[type][index - 1]
+ else
+ number = hash[index - 1] + hash[index - 2]
+ end
+ end[index]
+end

Цветелина обнови решението на 08.10.2014 23:50 (преди около 10 години)

-START_NUMBERS = { 'lucas' => [2, 1],
- 'fibonacci' => [1, 1],
- 'summed' => [3, 2] }
+START_NUMBERS = { 'lucas' => [2, 1],
+ 'fibonacci' => [1, 1],
+ 'summed' => [3, 2] }
def series(type, index)
Hash.new do |hash, index|
if index <= 2
number = START_NUMBERS[type][index - 1]
else
number = hash[index - 1] + hash[index - 2]
end
end[index]
end

Привет :)

Интересно решение. Хубаво е че няма повторения, но пък е за сметка на разбираемостта на кода. Начинът, по който използваш конструктура на Hash е доста сложен. Предполагам си искала да направиш мемоизация, за да избегнеш експоненциалната сложност, но тук има един проблем:

Никъде не задаваш стойности на ключове от хеша. Т.е хешът ти не пази никаква информация, а за всеки липсващ ключ извиква блока. Така се получава дървовидна рекурсия. Можеш да погледеш и в документацията.

Замисли се също има ли нужда от хеш в тази ситуация и при тези ключове ?

Също съм длъжен да спомена, че оценката на задачата не зависи от сложността на алгоритъма.

Цветелина обнови решението на 12.10.2014 09:17 (преди около 10 години)

-START_NUMBERS = { 'lucas' => [2, 1],
- 'fibonacci' => [1, 1],
- 'summed' => [3, 2] }
+START_NUMBERS = { 'lucas' => [2, 1],
+ 'fibonacci' => [1, 1],
+ 'summed' => [3, 2] }
def series(type, index)
Hash.new do |hash, index|
if index <= 2
- number = START_NUMBERS[type][index - 1]
+ hash[index] = START_NUMBERS[type][index - 1]
else
- number = hash[index - 1] + hash[index - 2]
+ hash[index] = hash[index - 1] + hash[index - 2]
end
end[index]
end

Цветелина обнови решението на 12.10.2014 09:18 (преди около 10 години)

START_NUMBERS = { 'lucas' => [2, 1],
- 'fibonacci' => [1, 1],
- 'summed' => [3, 2] }
+ 'fibonacci' => [1, 1],
+ 'summed' => [3, 2] }
def series(type, index)
Hash.new do |hash, index|
if index <= 2
hash[index] = START_NUMBERS[type][index - 1]
else
hash[index] = hash[index - 1] + hash[index - 2]
end
end[index]
end