1) Расчерчивание досок.
Появилась после плодотворного общения с Ёпрстом на форуме. Большое ему спасибо за оптимицазию кода.
Выложена по просьбе //infostart.ru/forum/messages/forum9/topic10235/message80805/#message80805
История версий:
2 от 10.07.2009. Добавлена возможность рисовать доски для игр "Крестики-нолики" и "Морской бой"
2) Формирование шахматки из запроса. Добавлено как пример для помощи на форуме Як зробити звіт шахматку?
3) 10.07.2012 Расчет сумм для комбинаций из N элементов.
Вчера мне попалась в руки интересная задачка - посчитать все комбинации сумм для N чисел.
Пример :
Есть два числа 5 и 7 все комбинации сумм данных чисел будут соответственно = 5,7,12
Есть три числа 5, 7,9 все комбинации сумм данных числе будут соответственно = 5,7,9,12,14,16,21
Начал я вспоминать комбинаторику, но в процессе подумал - а зачем?
И в результате появился следующий алгоритм:
где НаборДанных - табличная часть с исходными числами, Результат - табличная часть с результатом (суммами комбинаций)
Для каждого Строка Из НаборДанных Цикл
ОбработкаПрерыванияПользователя();
ТекущееЗначение = Строка.Число;
КоличествоСтрок = Результат.Количество() - 1;
Для Инд = 0 По КоличествоСтрок Цикл
ОбработкаПрерыванияПользователя();
НоваяСумма = Результат[Инд].Сумма + ТекущееЗначение;
Если Не ТолькоУникальныеСуммы Или Результат.Найти(НоваяСумма, "Сумма") = Неопределено Тогда
НоваяСтрока = Результат.Добавить();
НоваяСтрока.Сумма = НоваяСумма;
НоваяСтрока.Комбинация = Результат[Инд].Комбинация + " + " + ТекущееЗначение;
КонецЕсли;
КонецЦикла;
Если Не ТолькоУникальныеСуммы Или Результат.Найти(ТекущееЗначение, "Сумма") = Неопределено Тогда
НоваяСтрока = Результат.Добавить();
НоваяСтрока.Сумма = ТекущееЗначение;
НоваяСтрока.Комбинация = ТекущееЗначение;
КонецЕсли;
КонецЦикла;
Полная обработка для вычислений находится в файлах
17.07.2012 Обновил. Теперь выводятся и комбинации, из которых получилась данная сумма. Плюс возможность выбора по флажку уникальных или неуникальных сумм.