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

Gxoct request try number 1 #120

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

Gxoct request try number 1 #120

wants to merge 8 commits into from

Conversation

GxocT
Copy link

@GxocT GxocT commented Nov 3, 2012

Gxoct request try number 1

@Sachs
Copy link

Sachs commented Nov 3, 2012

  1. Зачем каждый раз заново создавать atcgArray?
  2. NSString *randomAcid = [atcgArray objectAtIndex:arc4random_uniform(4)];
    может дать индекс равный существующему, а в задании сказано, что он должен его обязательно изменить

@GxocT
Copy link
Author

GxocT commented Nov 3, 2012

  1. Зачем каждый раз заново создавать atcgArray?

Создал (readonly) property.

  1. NSString *randomAcid = [atcgArray objectAtIndex:arc4random_uniform(4)];
    может дать индекс равный существующему, а в задании сказано, что он должен его обязательно изменить

Этот рэндом берёт из массива одну из аминокислот для того, чтобы заменить в существующем ДНК.
В задании же сказано, что нельзя дважды менять аминокислоту в одном и том же месте. То есть я могу кислоту "T" поменять на кислоту "Т", но не могу заменить кислоту на позиции 15 два раза.

@GxocT
Copy link
Author

GxocT commented Nov 4, 2012

Ок. Исправлю.
Спасибо.

@Sachs
Copy link

Sachs commented Nov 4, 2012

То есть я могу кислоту "T" поменять на кислоту "Т"

да, из формулировки задания это не очевидно, но в комментариях к заданию автором было сказано, что ИЗМЕНИТЬ - значит именно изменить на другое значение, иначе слово изменить теряет свой смысл)

а вообще хороший код написал, очень аккуратно и читаемо

@GxocT
Copy link
Author

GxocT commented Nov 4, 2012

Внёс изменения. Нуклеотиды проверяются на равенство. Если они совпадают, генерируется новый нуклеотид.

@Sachs
Copy link

Sachs commented Nov 4, 2012

@GxocT следующий шаг - сделать то же самое в одно действие, без лишнего перебора в while)

@GxocT
Copy link
Author

GxocT commented Nov 4, 2012

Готово. Без While.

@Sachs
Copy link

Sachs commented Nov 4, 2012

arc4random_uniform(3) может выдать ноль, то есть элемент не изменится, что тоже не верно) должно быть случайное число из диапазона от 1 до count - 1

@GxocT
Copy link
Author

GxocT commented Nov 4, 2012

arc4random_uniform(3) выбирает значение из укороченного массива ATCG

Например, в заданной позиции был нуклеотид "T".
Берём массив ATCG и исключаем из него T, получаем новый массив ACG.
Далее функция arc4random_uniform(3) выбирает индекс из значений 0, 1 или 2.
То есть выбирается нуклеотид A, C или G.

@Sachs
Copy link

Sachs commented Nov 4, 2012

да, просмотрел) но проще же взять элемент из того же массива со сдвигом [1, count - 1] от текущего, а не плодить дополнительные массивы для каждого варианта?


- (id)init
{
self = [super init];

Choose a reason for hiding this comment

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

После того как получили self от родителя, необходимо проверить не вернули ли нам nil и после этого можно уже инициализировать.
self = [super init];
if(self){
//my init
}
return self;

Copy link
Author

Choose a reason for hiding this comment

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

init исправил

Made some corrections after updating XCode.
@GxocT
Copy link
Author

GxocT commented Nov 5, 2012

Sachs
Да понял о чём идёт речь, но оставил так как сделал, мне данный вариант кажется более легким для восприятия.

{
//---Method which makes changes to DNA replacing some acids with new one
//percentToMutate is quantity of acids to replace---

Choose a reason for hiding this comment

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

percentToMutate - это процент, поэтому надо посчитать количество ячеек, которые нужно заменить. А сейчас значение этой переменной используется как количество ячеек.

Copy link
Author

Choose a reason for hiding this comment

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

В примере используется ДНК длиной в 100 знаков, соответственно процент это количество ячеек, зачем усложнять код в конкретной ситуации? Мы ведь не пишем универсальную программу.
Если руководствоваться принципами экстремального программирования подобные изменения вредны для кода.

Made changes to mutate method to use percents instead number of cells.
@GxocT
Copy link
Author

GxocT commented Nov 12, 2012

Внёс изменения в mutate для того, чтобы использовались проценты, а не количество клеток, также добавил проверку, чтобы проценты не были больше 100 и меньше 0.

@GxocT GxocT closed this Nov 12, 2012
@GxocT
Copy link
Author

GxocT commented Nov 12, 2012

Внёс изменения в mutate для того, чтобы использовались проценты, а не количество клеток, также добавил проверку, чтобы проценты не были больше 100 и меньше 0.

@GxocT GxocT reopened this Nov 12, 2012
@GxocT
Copy link
Author

GxocT commented Nov 12, 2012

Внёс изменения в mutate для того, чтобы использовались проценты, а не количество клеток, также добавил проверку, чтобы проценты не были больше 100 и меньше 0.

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

3 participants