Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Алгоритмы

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
все вопросы по алгоритмам, их созданию и сопровождению без привязки к какому-нибудь конкретному языку программирования...
ну или с привязкой :)
дать идею, помочь с математикой или, если вам не помогли в профильном топе...
 
по возможности используйте псевдокод в своих сообщениях
 
ссылки
 
  •  "ebook'и -- сборники алгоритмов"
     


    только помните, что тут никто ничего _делать за вас_ не обязан!
    для этого есть специальные места со своими ценами...

  • Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 09:28 16-12-2016 | Исправлено: akaGM, 09:03 12-07-2019
    XPerformer



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    https://www.youtube.com/watch?v=lyZQPjUT5B4
     
    Сортировка пузырьком в исполнении венгерских танцоров
     

    Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 12:30 07-03-2021
    komputeryuzer

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nадежны ли эк. кл-ры?
    Пожьзуюсь ею, постоянно в голове крутится вопрос
    Почему кейжпгер не может по координатам мыши вычислить клавишу?

    Всего записей: 762 | Зарегистр. 21-04-2010 | Отправлено: 11:02 04-07-2021
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    залип, казалось бы, в пустяковой вещи...
     
    есть два массива чисел (будем называть их массивы координат), второй меньше первого.
    задача вставить меньший в больший с сохранением размера последнего.
    даже в тупом поэлементном переборе делаю ошибки.
    может есть какой-нибудь универсальный метод insert_one_2_second() в любой из библиотек,
    ведь не все же я их знаю и посмотрел ?
     
    сейчас задача решена (потому что надо было быстро) с помощью двух файлов.
    но это некрасиво и неэффективно и... осадочек остался :)
     
    заранее за любые советы :)

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 14:46 08-09-2023
    MBK2

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    есть два массива чисел (будем называть их массивы координат), второй меньше первого.
    задача вставить меньший в больший с сохранением размера последнего.

    Брр? Как можно вставить один массив в другой, не изменяя размер последнего?

    Всего записей: 4548 | Зарегистр. 18-09-2018 | Отправлено: 15:17 08-09-2023
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    [2.2  3.9] --> [1  2  3  4  5] == [1  2.2  3  3.9  5]
     
    вот так...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 15:22 08-09-2023
    MBK2

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А по какому принципу именно 2 меняется на 2.2 а не 3? В соседнем же случае наоборот он меняет большее?

    Всего записей: 4548 | Зарегистр. 18-09-2018 | Отправлено: 15:24 08-09-2023
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    огругление :)
     
    я ж оговорился -- "координаты", это реальные координаты физ.величины...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 15:34 08-09-2023
    MBK2

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    огругление
     

    Ну а если было бы [2.2  3.9] --> [1  3] ?

    Всего записей: 4548 | Зарегистр. 18-09-2018 | Отправлено: 15:47 08-09-2023
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    не понял...
    вернее, ты задачу не понял?
     
    есть массив, большой. в него надо вставить другой, с замещением, при этом размер бОльшего не меняется...
     
    а...
    может так?
     
    [X1..Xn] --> [Y1..Ym] == [Z1..Zm]
    где n < m всегда и для каждого n и m. строго меньше! условие даже жёстче << (много меньше) в "тысячу" вставить "десяток"
     
    т.е. такой случай
    [2.2  3.9] --> [1  3]
    исключён без проверок...
     
    Добавлено:
     
    +
     
    [X1..Xn] подмассив [Y1..Ym], т.е.
    Y1 < X1 < Ym
    Y1 < Xn < Ym
     
    всегда

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 16:16 08-09-2023
    MBK2

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    вернее, ты задачу не понял?
     

    Немного не так. Это вы нестрого сформулировали условие задачи, а я помогаю вам сформулировать четкое ТЗ, которое поможет запилить правильный алгоритм. Приведенное уточнение улучшает дело, но не до конца.
    Вот такой вариант
    [2.2  3.9] --> [1  5 6]

    Всего записей: 4548 | Зарегистр. 18-09-2018 | Отправлено: 16:31 08-09-2023
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    [2.2  3.9] --> [1  5 6] == [2.2  3.9  6]
     

    Цитата:
    Это вы нестрого сформулировали условие задачи
    это я умею... не
    себе и так сойдёт :)
     
    твой пример не катит "по условию" sizeof(dim1) << sizeof(dim2)

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 16:39 08-09-2023
    MBK2

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    твой пример не катит "по условию" sizeof(dim1) << sizeof(dim2)

    C 'этим разобрались в прошлый раз, понятно. А вот с этим случаем

    Цитата:
    [2.2  3.9] --> [1  5 6] == [2.2  3.9  6]

    все равно неясно. Чуть изменим условие
    [2.2  3.9  4.1] --> [1  5  6  7]

    Всего записей: 4548 | Зарегистр. 18-09-2018 | Отправлено: 16:44 08-09-2023
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    [2.2  3.9  4.1] --> [1  5  6  7] == [2.2  3.9  4.1  7]
     
    послушай, эти массивы -- тривиальная абсцисса -- х-координата...
    маленький массив -- _точные_ координаты характеристических пиков, их не бывает больше сотни, _никогда_
     
    большой массив -- просто равномерная (эквидистантная) сетка, размер _всегда_ больше 1000
    мне важно, чтобы координаты пиков всегда присутствовали в конечном массиве, что они там заместят, вообще говоря, наплевать...
    сейчас задача на клиенте решается наложением второго поверх первого (хотя бы при визуализации), просто (уже практически _для себя_) хочу сделать проще...
    все численные расчёты с этими пиками ведутся с "маленьким" массивом, его никто не теряет...
     
    Добавлено:
     
    короче нужен абстрактный метод insert_with_replace_one_numarray_into_another(N1,X1,N2,X2)
     
    Добавлено:
     
    где-то в питоне я такое готовое видел...
    щас спрошу :)

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 18:12 08-09-2023 | Исправлено: akaGM, 18:23 08-09-2023
    MBK2

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    [2.2  3.9  4.1] --> [1  5  6  7] == [2.2  3.9  4.1  7]

    Логика этого алгоритма вообще противоестественна - выходит, что даже уже ни о каком округлении речи нет,  новые элементы вытесняют старые, даже бОльшие их по значению и вне входящего интервала? Ну ладно я три значения дал внутри интервала 1-5 а если их десять будет? Получится, что значения внутри этого интервала вытеснят собой все остальные, что совершенно нелогично.
    Странная у вас задача какая то, может, лучше и вправду найти уже реализованный алгоритм, который под вашу конкретную задачу заточен (если вы говорите что таковой имеется) и восстановить его?

    Всего записей: 4548 | Зарегистр. 18-09-2018 | Отправлено: 18:49 08-09-2023
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    может тебе зипарь с реальными данными намылить?
     
    Добавлено:
     
    если вдруг, то на...

    Код:

    11         ; кол-во
     7.5609
     6.5418
     8.7939
     7.1620
     6.5668
     9.1581
    11.0382
    10.9481
    12.9229
     8.2905
     6.1712
    они всегда несортированы, так что -- реальные :)
     
    а большой массив -- это 1000 нулей на отрезке [2.0..25.0]
    шаг соответственно равен (25-2)/(1000-1)
    вот так вот :)
     
    Добавлено:

    Цитата:
    новые элементы вытесняют старые, даже бОльшие их по значению и вне входящего интервала?
    так, стоп!
     
    что я проглядел?

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 19:07 08-09-2023 | Исправлено: akaGM, 19:16 08-09-2023
    MBK2

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    Самое главное противоречие ТЗ - сохранение размерности большого массива. Если будет много данных просчитанных на малых отрезках - по любому большая часть данных большого массива на остальных участках будет выброшена. Это же явно неправильно, как с этим быть?
     
    Добавлено:
    Ну вот, совсем клинический случай, например:
    [ 0.1 0.2 0.3 2.1 2.2 2.5] -> [ 0 1 2 3 4 5 6 ] = [0 0.1 0.2 0.3 2.1 2.2 2.5]
    Так же, выходит?

    Всего записей: 4548 | Зарегистр. 18-09-2018 | Отправлено: 19:46 08-09-2023
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MBK2
     
    короче, ТЗ поставленное мною себе же мне понятно и меня всё устраивает,
    никаких критических противоречий я не вижу и там их нет.
    ты всегда приводишь нереализуемые гран.условия. найдёшь дыру или какой-нить серьёзный огрех в моих данных 11/1000 -- здорово и я приму всё с большой благодарностью...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 21:39 08-09-2023
    MBK2

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В таком случае, алго выглядит примерно так:
    Пусть A - большой массив B - малый массив
    1) Упорядочить массивы A и B по возрастанию
    2) Начиная с первого элемента массива A вставлять его элементы в массив B до тех пор, пока их длины не станут одинаковыми

    Всего записей: 4548 | Зарегистр. 18-09-2018 | Отправлено: 22:33 08-09-2023
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MBK2
     
    большой -- src
    малый -- dest
     
    неожиданно...
     
    обдумаю, спасибо :)
     
    Добавлено:
    обдумал...
     
    наверное так:
     
    индексация с 1
     
    1) ...
    2) расширить В до А
    3) забить В слева и справа нулями
    4) ko = len_B_orig + 1
        A[k] = B[k], k = ko..ko + len_B_orig
     
    если я не ошибся...
     
    Добавлено:
     
    а п.3) вообще неважен...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 22:56 08-09-2023
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    по-моему, я тут муйню нагородил...
     
    надо всё делать на этапе формирования сетки (массива А) -- вместо сеточных элементов сразу вписывать в него нужные из В[]

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 08:34 09-09-2023
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Алгоритмы


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru