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

quest complete #115

Closed
wants to merge 1 commit into from
Closed

quest complete #115

wants to merge 1 commit into from

Conversation

s1dney
Copy link

@s1dney s1dney commented Nov 3, 2012

No description provided.

@Sachs
Copy link

Sachs commented Nov 3, 2012

По-моему делать лишние пустые циклы, ожидая пока рандом не выдаст элемент, которого ещё не было в массиве alreadyMutated, а мутация будет отлична от исходного элемента - так себе решение. Заведи счётчик и посчитай ради интереса, сколько раз у тебя выполняется цикл (вместо количества равного percent). В данной задаче оно, конечно, не заметно, но это то же самое по сути, что и считать площадь квадрата методом Монте-Карло)

Если я не так понял код и ошибаюсь, то заранее извиняюсь

@s1dney
Copy link
Author

s1dney commented Nov 3, 2012

Генерация уже мутировавшей позиции в массиве где-то 2-3 из 100, это вполне нормально. С проверкой совпадения нового символа для мутации и старого все гораздо хуже, там каждый 3-й совпадает.
А как генерировать новую позицию с учетом уже мутировавших? все равно же будет какая-то проверка, тот же пустой цикл

@Sachs
Copy link

Sachs commented Nov 3, 2012

@s1dney я решил через NSMutableSet (не говорю, что моё решение хорошее, но всё же количество циклов равно количеству процентов). В него записал индексы от 0 до 99, удаляя каждый раз использованный элемент. То есть, через 90 вычёркиваний останется лишь 10 элементов, а рандом берётся от размера этого сета.

А вот такая формула даст в любом случае символ отличный от старого:
Мутированный_символ = (старый_символ + 1 + arc4random()%(количество_символов - 1))%количество_символов;

@Sachs
Copy link

Sachs commented Nov 3, 2012

под символом я там имел ввиду индекс символа, но, думаю, смысл ясен

@Sachs
Copy link

Sachs commented Nov 3, 2012

попробуй сделать количество мутаций 100 и посмотреть на счётчик циклов, тогда лучше поймёшь почему я так придираюсь)

@s1dney
Copy link
Author

s1dney commented Nov 4, 2012

смысл не ясен совершенно, полез смотреть твой проект, но с 1 захода не осилил
но ты прав, сделал счетчик ради интереса:
2012-11-04 16:50:35.846 DNK[3701:303] Дистанция между двумя ДНК = 82
2012-11-04 16:50:35.851 DNK[3701:303] Повтор позиций: 575 // это cell1 mutate
2012-11-04 16:50:35.851 DNK[3701:303] Повтор знаков: 33
2012-11-04 16:50:35.853 DNK[3701:303] Повтор позиций: 450 // а это cell2 mutate
2012-11-04 16:50:35.854 DNK[3701:303] Повтор знаков: 34
2012-11-04 16:50:35.854 DNK[3701:303] Теперь дистанция между ДНК после мутации = 77

позже еще подумаю как это дело оптимизировать

@s1dney s1dney closed this Aug 21, 2013
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

2 participants