Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2010, 12:34   #1
студенД
 
Регистрация: 20.12.2010
Сообщений: 4
Вопрос как написать алгоритм?


Задача простая: имеется несколько последовательностей букв (нуклеотидные основания, их всего 4), совпадающие буквы у 2й и последующих последовательностей надо обозначить точками.
Например (синтаксис оригинальный):

Исходные данные:


AB185914 (1) AGTAGTTCGCCTGTGTGAGCTGACA
AB185915 (1) AGTAGTСCGCCTGTGTGТGCTGACA
AF260968 (1) GGTAGTTCGCCTGTGTGAGCTGATT



Надо получить:

AB185914 (1) AGTAGTTCGCCTGTGTGAGCTGACA
AB185915 (1) ......С..........Т.......
AF260968 (1) G......................ТТ


Последний раз редактировалось студенД; 20.12.2010 в 13:51.
студенД вне форума Ответить с цитированием
Старый 20.12.2010, 12:43   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Ну если я правильно понял, то пусть у нас каждый символ - это элемент соответствующего массива, тогда
Код:
for i:=1 to n do
  begin
     if m1[i]=m2[i] then m2[i]:='.';
     if m1[i]=m3[i] then m3[i]:='.'; 
  end;
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 20.12.2010, 12:53   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Чего-то знакомое. Точно не помню, но вроде там нужно расположить последовательности в алфавитном порядке (или просто в каком-либо порядке), а потом рассматривать сбоку. то есть AAG GGG TTT AAA и т.д. То есть это двухмерный массив и сначала работаешь как обычно, а потом переворачиваешь его (то есть у тебя будет набор последовательностей по три элемента в твоем случае).
По вопросам анализа таких последовательностей существует целое специальное направление, а также имеется соответствующая литература (даже встречал пару книжонок на торрентах), где описаны различные алгоритмы для работы с ДНК.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.12.2010, 13:43   #4
студенД
 
Регистрация: 20.12.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Niro Посмотреть сообщение
Ну если я правильно понял, то пусть у нас каждый символ - это элемент соответствующего массива, тогда
Код:
for i:=1 to n do
  begin
     if m1[i]=m2[i] then m2[i]:='.';
     if m1[i]=m3[i] then m3[i]:='.'; 
  end;
в принципе такой вариант подходит, только в какой программе лучше написать этот алгоритм и можно ли его автоматизировать таким образом, чтобы он работал в не зависимости от количества строк? Т.е. автоматически распознавал 1ю строку как шаблон и сравнивал с ним все последующие строки. Ещё было бы здорово, чтобы сохранялись начальные области строк как заголовки.
студенД вне форума Ответить с цитированием
Старый 20.12.2010, 13:48   #5
студенД
 
Регистрация: 20.12.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Чего-то знакомое. Точно не помню, но вроде там нужно расположить последовательности в алфавитном порядке (или просто в каком-либо порядке), а потом рассматривать сбоку. то есть AAG GGG TTT AAA и т.д. То есть это двухмерный массив и сначала работаешь как обычно, а потом переворачиваешь его (то есть у тебя будет набор последовательностей по три элемента в твоем случае).
По вопросам анализа таких последовательностей существует целое специальное направление, а также имеется соответствующая литература (даже встречал пару книжонок на торрентах), где описаны различные алгоритмы для работы с ДНК.
в данном случае последовательности должны остаться неизменными, нужно просто заменить совпадающие буквы на точки и всё...
студенД вне форума Ответить с цитированием
Старый 20.12.2010, 14:07   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ты можешь сделать копию .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.12.2010, 14:12   #7
студенД
 
Регистрация: 20.12.2010
Сообщений: 4
По умолчанию

могу =) но точки вместо совпадающих букв не появятся =)))
студенД вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать алгоритм Торька Помощь студентам 1 14.10.2010 19:21
Написать программу Алгоритм Дейкстры серёгалдпр Общие вопросы Delphi 4 27.05.2010 16:20
С++ алгоритм понятем но как луше написать valera_11 Помощь студентам 2 25.02.2010 13:12
Написать алгоритм на Си zmei88 Общие вопросы C/C++ 2 19.01.2010 00:46