powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм поиска суммы
17 сообщений из 117, страница 5 из 5
Алгоритм поиска суммы
    #36683508
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче опять все уперлось в парочку деклараций. Шарп типизированный язык и это ему плюс. Лисп чтото вроде васика ранних версий в типизации :)

Короче есть некоторые соображения на 50 байт, но попозже. Пока эксперименты токо :)
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36683524
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozokrstudio,

на работе. Периодически приходится писать на нем штуки-дрюки.

Не на Теремках случаем ? :)
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36683539
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio,

нет, я ближе к центру работаю, на Жилянской..

P.S.
54 байта
Код: plaintext
1.
2.
3.
4.
5.
6.
(defun E (p m)
    (dolist (x l) (if (> p  0 )
                    (E (- p x) (cons x m))
                    (/ p p)
                )
    )
)
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36683553
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стырил ты у меня алгоритм полностью, и убрал декларации, ну да ладно :)
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36683565
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio,

не стырил, а повторил для чистоты эксперимента :)..
Хочешь - можешь попробовать реализовать мой первоначальный алгоритм с минимизацией отклонения,
работающий не только "для чисел с нормальным десятичным знаком" (С) rstudio.
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36683668
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем тебе нет смысла присылать новый, более компактный алгоритм, ты его просто императивно "передрешь" и уберешь типизацию :)
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36683819
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
admiral.diverЗадача действиетльно реальна.
Нереальна. Сам много програмировал тарие штуки для разных оптических девайсов, главное плавно разогнать и остановить. То есть вначале разгонять от малых шагов к большим, стараясь чтобы момент инерции нарастал одинаковыми шагами, потом также тормозить. Антена дура большая, если менять скорость от 0 до максимума сразу, может и не повернуться куда надо.
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36683979
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ломовой процедурный код, находит решение для 85.05 (вариант с минимальным отклонением) с той же скоростью что и для 86 (точное решение) за счёт того что не лопатит многократно одни и теже тупиковые ветви. Типа более грамотный полный перебор...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
#include<iostream.h>

bool abc(int, int[], int[], int, int&);

void main()
{

	int valueList[ 4 ];
	int stepList[ 4 ];
	int targetValue =  8505 ;
	int Miss =  8505 ;
	int N =  4 ;
	
	valueList[ 0 ] =  20 ;
	valueList[ 1 ] =  70 ;
	valueList[ 2 ] =  130 ;
	valueList[ 3 ] =  260 ;

	for(int i =  0 ; i < N; i++)
		stepList[i] =  0 ;

	abc( 3 , valueList, stepList, targetValue, Miss);

	for(i =  0 ; i < N; i++)
		cout << "stepList[" << i << "] = " << stepList[i] << endl;
}

bool abc(int level, int valueList[], int stepList[], int distance, int& miss)
{
	int nSteps = static_cast<int>(distance / valueList[level]);

	if(nSteps * valueList[level] == distance)
	{
		//hit
		stepList[level] = nSteps;
		miss =  0 ;
		return true;
	}
	else
	{
		//miss
		bool underflow_gt_overflow = distance - nSteps * valueList[level] > (nSteps +  1 ) * valueList[level] - distance;
		int delta = underflow_gt_overflow ? (nSteps +  1 ) * valueList[level] - distance : distance - nSteps * valueList[level];
		if(delta < miss)
		{
			miss = delta;
			stepList[level] = underflow_gt_overflow ? nSteps +  1  : nSteps;
		}
		
		if(level ==  0 )
			return false;
		else
		{
			bool retVal;
			int distance_left;
			for(int i = nSteps; i >=  0 ; i--)
			{
				delta = miss;
				distance_left = distance - i * valueList[level]; 
				retVal = abc(level -  1 , valueList, stepList, distance_left, miss);
				
				if(delta > miss)
					stepList[level] = i;

				if(retVal)
					return true;
			}

			return false;
		}
	}
}
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36683994
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio,

в общем, шарп слил.
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36684139
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozokrstudio,

в общем, шарп слил.

давай Лисп не будет под кальку копировать конструкции шарпа, а чтото из модного списка пускай использует. Вроде списков лямда выражений или чего там еще. Так спор довольно безсмысленен. Ты копируешь чужой код и просто удаляешь декларации в унтипизированом языке.
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36687183
Valer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предлагаю всем разработчикам
выложить результаты работы их алгоритмов
для следующего интервала значений
15.5
15.6
15.7
...
18.1
18.2
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36688570
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
15.5 = 5x2.6 + 1x1.3 + 6x0.2
15.6 = 6x2.6
15.7 = 5x2.6 + 1x1.3 + 2x0.7
15.8 = 6x2.6 + 1x0.2
15.9 = 5x2.6 + 1x1.3 + 2x0.7 + 1x0.2
16.0 = 6x2.6 + 2x0.2
16.1 = 5x2.6 + 1x1.3 + 2x0.7 + 2x0.2
16.2 = 6x2.6 + 3x0.2
16.3 = 6x2.6 + 1x0.7
16.4 = 6x2.6 + 4x0.2
16.5 = 6x2.6 + 1x0.7 + 1x0.2
.............
16.9 = 6x2.6 + 1x1.3
.............
17.5 = 6x2.6 + 1x1.3 + 3x0.2
.............
18.0 = 6x2.6 + 1x1.3 + 1x0.7 + 2x0.2
18.1 = 6x2.6 + 1x1.3 + 6x0.2
18.2 = 7x2.6

вообщем у меня чуство что для всех длин путей из этого диапазона существует точное решение и посему сравнивать результат не очень интересно.
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36689981
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 All

Ветка засохла?

Предлагаю сообществу обратить внимание на одну, интересную и похожую на сабж, на мой взгляд проблему, а именно на
Бинарную Проблему Гольбаха и подумать над различными мыслями, идеями и реализациями.

Своей мысли у меня пока нет, кроме prime-генераторов.
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36690091
Valer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n

в интервале 16.6 ... 16.8
найдены решения ?

с моей точки зрения в этой задаче надо найти
все решения от 0.1 до 18.1 с шагом 0.1
решения ищутся один раз

после этого расчет любого расстояния L

L1 = 18.2 * int ( L / 18.2 ) ' расчитываем сколько влезает полных 18.2

заменяем их на 2.6 * 7

остаток = L - L1 < 18.2 уже расчитан

18.2 = 2.6 * 7

хотя может нужно считать не до 18.2

+ правильнее все считать в целых

на вопрос возможен ли ход назад 0.5 = 0.7 - 0.2
автор топика не ответил
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36691058
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну молдешшш... Сырцы то выложены, могли бы сами скомпилить и проверить.

16.6 = 6x2.6 + 5x0.2
16.7 = 6x2.6 + 1x0.7 + 2x0.2
16.8 = 6x2.6 + 6x0.2


L1 = 18.2 * int ( L / 18.2 ) ' расчитываем сколько влезает полных 18.2

заменяем их на 2.6 * 7

остаток = L - L1 < 18.2 уже расчитан

18.2 = 2.6 * 7

хотя может нужно считать не до 18.2

А почему до 18.2? Потому что 18.2 = 7x2.6 а 7 у нас магическое число?
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36691654
Valer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
компилировать не начем да и не к чему

18.2 минимальный размер на котором отрезки 2.6 и 0.7
укладываются целое число раз
( 0.2 и 1.3 тем более )
...
Рейтинг: 0 / 0
Алгоритм поиска суммы
    #36714284
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
admiral.diver,
Почти наверное все возможные шаги двигла кратны некоторому наибольшему общему делителю (либо шагу серво, либо, что вероятнее для больших тарелок и быстрых поворотов, шагу угломера). Соответственно возьмите этот делитель за единицу измерения и шагов мотора и целевого угла. Задача станет целочисленной, о сумме и монетках, которыми её надо набрать. Линейное диофантово уравнение . Получаете список монеток, и складываете их следующим образом: возьмите половину монет каждого номинала и складываете в порядке возрастания, потом оставшиеся складываете в порядке убывания. Т.е. если решение нашлось 25+25+25+7+7+3+3+3, то лучше двигетель включать как 3+3+7+25+25+25+7+3.
...
Рейтинг: 0 / 0
17 сообщений из 117, страница 5 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм поиска суммы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]