Skip to content
This repository has been archived by the owner on Jan 12, 2022. It is now read-only.

Project1 FINAL #63

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Project1 FINAL #63

wants to merge 2 commits into from

Conversation

linchus
Copy link

@linchus linchus commented Nov 1, 2012

No description provided.

@karguine
Copy link

karguine commented Nov 1, 2012

Мне кажется, что у вас не выполняется условие задания: "Нужно заменить строго Х процентов, то есть заменять одну ячейку можно максимум один раз."

@linchus
Copy link
Author

linchus commented Nov 1, 2012

К сожалению, проект сделал во вторник и не перечитал обновленное задание =(
Надо будет переписать метод

@linchus
Copy link
Author

linchus commented Nov 2, 2012

Теперь вроде решение удовлетворяет условиям в задании )

[self.dna replaceObjectAtIndex: element_index withObject:[Cell getAnotherRandomElement: self.dna[element_index]]];
// Удаляем изменный индекс
[unreplaced_indexes removeObjectAtIndex:newReplaceIndex];
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

как я понял это работает

unreplaced_indexes это массив из цифр от 0 до 99

в строке 30 перебор, столько раз сколько надо мутировать генов, ок
в строке 32 получаем рандомное число, (arc4random() % unreplaced_indexes.count значит оно ограничено сверху 100 на вервом шаге)
допустим это число 10
в 34 получаем число из массива по индексу, кстати в этом массиве по интексу 10 лежит число 10, по 20 => 20 и т.д
35 - заменяем, ок
37 - удаляем

а что произойдет если рандом в строке 32 выкинет опять число что и на предыдущем шаге? что будет по этому индексу в массиве unreplaced_indexes?

И еще вы именуете переменные в разных стилях (unreplaced_indexes, newReplaceIndex) по-моему читабельние придерживатся единого стиля (кстати в Obj C, все функции в кемелкейсе (addObject, removeObjectAtIndex) )

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

На нулевом шаге unreplaced_indexes - массив с индексами от 0 до 99.
На каждой итерации из этого массива выбирается случайный элемент, производятся мутация, после чего этот элемент удаляется из массива unreplaced_indexes. Таким образом после первого прохода цикла там будет не 100, а 99 элементов, из которых на следующем шаге аналогично выбирается случайный эелемент.

В Вашем примере, если на первом проходе будет выбрано число 10 (к примеру), то будет изменен 10-й элемент. Если в следущей итерации опять выпадет 10, то по этому индексу будет элемент со значением 11.

По поводу стиля да, постараюсь исправить. Просто в основном я пишу на руби, а там другая нотация.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants