Вход | Регистрация
    1  2   
1С:Предприятие :: 1С:Предприятие 8 общая

Не могу решить никак задачу. помогите!

Не могу решить никак задачу. помогите!
Я
   dalacovalexey
 
20.03.19 - 16:41
Добрый день!
Пудьте добры подсткажите, не могу никак решить задачу!
Замок состоящий из определенного количества барабанов и каждый барабан имеет определенные цифры через переменные.

переменные:
КоличествоБарабанов - это количество барабанов на замке
МаксимальноеЗначение - это максмальное значение барабана
минимальное значение - это минимальное значение барабана

Надо через обработку вывести все возможные комбинации

не могу никак сообразить как написать правильно код!
Спасибо всем и не судите строго!
 
 
   dalacovalexey
 
1 - 20.03.19 - 16:42
Както через массивы вроде как но ума не приложу как...
   ДенисЧ
 
2 - 20.03.19 - 16:43
выбрать различные
?
И что такое "переменная" в твоём контексте?
   1Сергей
 
3 - 20.03.19 - 16:44
три вопроса:
1. На какую букву ударение в слове замок?
2. Почему он состоит из барабанов?
3. Что курил автор?
   antgrom
 
4 - 20.03.19 - 16:45
поскольку про оптимальность решения - ни слова, то почему бы не решить задачу через цикл ?
От меньшего значения, до большего.
Каждое значение выводить.

Это такая простая задача или какие то ещё требования ?
   dalacovalexey
 
5 - 20.03.19 - 16:45
К примеру
3 барабана
максимум цифра 7
минимум 3

тоесть
333
334
335
336
337
343
344

итд
   Про100Филя
 
6 - 20.03.19 - 16:46
Зачем делать замок из барабанов? Как вариант барабаны соеденить через Внутренне соединение
   butterbean
 
7 - 20.03.19 - 16:46
(5) рекурсия тебе поможет
   wowik
 
8 - 20.03.19 - 16:46
   Fish
 
9 - 20.03.19 - 16:47
(0) "не могу никак сообразить как написать правильно код! " - Пиши, что делал, что не получилось.
   ejikbeznojek
 
10 - 20.03.19 - 16:48
для СчКоличествоБарабанов=1 по КоличествоБарабанов цикл
  для СчЗначенийБарабана = МинимальноеЗначение по МаксимальноеЗначений цикл
        сообщить(строка(СчКоличествоБарабанов)+строка(СчЗначенийБарабана));
  конецццикла
КонецЦикла

Если нужно вывести все, а не только уникальные значения)
 
 Рекламное место пустует
   wowik
 
11 - 20.03.19 - 16:49
(0) простая комбинаторика. в первом барабане 3 ячеек, во втором 2, в третьем 3, тогда общее количество вариантов 3*2*3 = 18.
неважно какие цифры в ячейках.
   Жан Пердежон
 
12 - 20.03.19 - 16:49
(10) тест не прошёл)
   ejikbeznojek
 
13 - 20.03.19 - 16:50
(12) Ну я и не ведущий прог))
   Про100Филя
 
14 - 20.03.19 - 16:50
(5) Если учесть то в (6) циклом строишь запрос где кол - во соединений это барабаны. Потом загоняешь таблицу с столбцом от минимума до максимума
   Cyberhawk
 
15 - 20.03.19 - 16:50
Это где такие задания раздают - в Сколково?
   dalacovalexey
 
16 - 20.03.19 - 16:51
нужно вывезти все значения возможные!
все правильно 
это мне такой тест сегодня впаяли)
   SUA
 
17 - 20.03.19 - 16:51
Псевдокод
Состояние= [Минимум1..минимумК];
Печать(Состояние);
Пока +1(Состояние) Печать(Состояние) КонецЦикла;

функция +1([состояние1..состояниеК]){
Барабан=К;
пока (Барабан И состояние(Барабан) = максимум(Барабан)){состояние(Барабан--)=минимум(Барабан)}
Если (Не Барабан) Возврат Ложь; КонецЕсли//был везде максимум закончили

Состояние(Барабан) = Состояние(Барабан)+1; Возврат Истина//следующее состояние}
   Жан Пердежон
 
18 - 20.03.19 - 16:51
(11) простой русский язык: Надо через обработку вывести все возможные комбинации
   Davalebor
 
19 - 20.03.19 - 16:52
(11) в (0) "Надо через обработку вывести все возможные комбинации "
   dalacovalexey
 
20 - 20.03.19 - 16:52
подсказал экзаминатор
както через циклы и масивы и индексы
   wowik
 
21 - 20.03.19 - 16:52
(18) все, завалил)
   Gantosha
 
22 - 20.03.19 - 16:53
150 тысяч ?
   Davalebor
 
23 - 20.03.19 - 16:54
(20) максимальное и минимальное значение барабана к каждого барабана разные или одинаковые?
   palsergeich
 
24 - 20.03.19 - 16:54
(22) а то и 200
   Fish
 
25 - 20.03.19 - 16:55
(23) Судя по (0) одинаковые.
   ejikbeznojek
 
26 - 20.03.19 - 16:56
(20) Судя по всему экзаменатор тоже тест не пройдёт))
Наверное правильнее всего.
ТЗБарабанов= новый таблицазначений;
ТЗБарабанов.Колонки.Добавить(ПорядковыйНомер)
Для сч=1 по КолБарабанов цикл
СтрТЗБарабанов=ТЗБарабанов.добавить();
СтрТЗБарабанов.ПорядковыйНомер=Сч;
конеццикла

Потом тоже самое с ТЗЦифрНаБарабане.
А потом передаёшь их в запрос параметрами и соединяешь.
   SUA
 
27 - 20.03.19 - 16:56
ну или если все барабаны одинаковые то еще проще
Для й=0 По Цифр**Барабанов//степень

Значение = ""; Ключ = й;
Для ц=1 По Барабанов Цикл
Значение = Значение + (ключ%Цифр+Минимум);ключ=ключ\Цифр//нацело

конеццикла;
печать(значение);
конеццикла;
   Вафель
 
28 - 20.03.19 - 16:57
   dalacovalexey
 
29 - 20.03.19 - 16:59
(28) количество барабанов это тоже переменная
   dalacovalexey
 
30 - 20.03.19 - 16:59
барабаны все одинаковые
   Gantosha
 
31 - 20.03.19 - 17:00
круглые ?
   dalacovalexey
 
32 - 20.03.19 - 17:03
(31) по количеству цифр да
   Gantosha
 
33 - 20.03.19 - 17:04
ну и какакие у тебя есть предложения ?
 
 
   ejikbeznojek
 
34 - 20.03.19 - 17:05
Сектор приз есть?))
   fisher
 
35 - 20.03.19 - 17:05
(0) Ну, блин. Это же элементарная задачка на тренировку навыков программирования начинающих. Если дать тебе готовое решение, то половина эффекта до свидания. Это как списывать.
   dalacovalexey
 
36 - 20.03.19 - 17:06
(34) возможно возьмут на работу
   dalacovalexey
 
37 - 20.03.19 - 17:07
(35) На первый взгляд да
   wowik
 
38 - 20.03.19 - 17:08
(35) есть другая сторона. Научить сразу правильно, чтобы потом другим ковырять без мата.
   Fish
 
39 - 20.03.19 - 17:10
(37) На (9) ответишь?
   MetaDon
 
40 - 20.03.19 - 17:10
(0) проблема в том, что барабанов N,
значит и циклов вложенности N для всех комбинаций,) поэтому вписываешь циклы 
в текст и Выполнить() его;))
   Garykom
 
41 - 20.03.19 - 17:10
Очень хорошая задачка на умение программировать.
Умеющий только запросы не смогет никак.
   dalacovalexey
 
42 - 20.03.19 - 17:12
Чувствую что месяц мне потребуеться решить такую элементарную задачу (((((
   dalacovalexey
 
43 - 20.03.19 - 17:13
Дайте пожалуйста код, люди добрые
   Gantosha
 
44 - 20.03.19 - 17:13
как раз с запросами проще всего - там все комбинация получаются умножением столбцов.
   Garykom
 
45 - 20.03.19 - 17:14
(42) Нет, задача совершенно не элементарная.
Она на использование только простейших операторов это да.
   fisher
 
46 - 20.03.19 - 17:14
(45) Не вижу ни одного подвоха в этой задаче ни со второго взгляда, ни с третьего. Простейшая алгоритмистика.
   Garykom
 
47 - 20.03.19 - 17:15
(46) Какой цикл будет внешний а какой внутренний?
По барабанам или по их значениям?
   fisher
 
48 - 20.03.19 - 17:16
Хотя стоп. На одном барабане ЦИФРА или ЦИФРЫ?
   Fish
 
49 - 20.03.19 - 17:17
(48) ЦифрЫ. От минимального значения до максимального.
 
 Рекламное место пустует
   Garykom
 
50 - 20.03.19 - 17:18
(48) Обычный кодовый замок с цифрами и надо перебрать все комбинации.
   ejikbeznojek
 
51 - 20.03.19 - 17:18
Массив1Порядка=новый Массив;

Массив2гоПорядка=новый Массив; 
Для сч=1 по КоличествоЦифрНаБарабане цикл
      Массив2гоПорядка.добавить(сч);
конеццикла

Для сч=1 по КоличествоБарабанов цикл
      Массив1Порядка.добавить(Массив2гоПорядка);
конеццикла

    Для ИндексСтрока = 0 По Массив1Порядка.Количество() - 1 Цикл
        Для ИндексСтолбец = 0 По Массив1Порядка[ИндексСтрока].Количество() - 1 Цикл
            Сообщить(Массив[ИндексСтрока][ИндексСтолбец]);
        КонецЦикла;      
    КонецЦикла;


Может если экзаменатор хочет через индекс и массивы, то вот третий вариант
Возможно где опечатался)
   fisher
 
52 - 20.03.19 - 17:19
(50) На обычном кодовом замке на одном барабане ОДНА цифра обычно. В этом случае это примитивнейшая задача.
   ejikbeznojek
 
53 - 20.03.19 - 17:20
Обычный кодовый замок лобзиком спиливают)))
   laby1
 
54 - 20.03.19 - 17:20
(МаксимальноеЗначение - Минимальное значение +1 ) в степени КоличествоБарабанов
   laby1
 
55 - 20.03.19 - 17:21
(54) Это количество комбинаций
   Garykom
 
56 - 20.03.19 - 17:21
Через циклы Для По решение довольно сложное, как выше в (51)
Намного проще через цикл Пока
   Fish
 
57 - 20.03.19 - 17:21
(52) С чего одна? Обычно от 0 до 9 на каждом барабане. Иначе в чём смысл кодового замка, где только один код возможен? :))
   Fish
 
58 - 20.03.19 - 17:22
(55) Молодец, но автору нужно не количество, а список самих комбинаций.
   sqr4
 
59 - 20.03.19 - 17:24
(51) и че работает?
   Радим1987
 
60 - 20.03.19 - 17:25
МассивСтрок = РазложитьСтрокуВМассивПодстрок(СтрокаПоиска," ");
СтрокаПоискаКомбинаторикаМассив = СформироватьКомбинаторику(МассивСтрок,МассивСтрок.Количество(),Истина);

////////////////////////////////////////////////////////////////////////////////

//
// Функция 

//
// Описание:

//
//

// Параметры (название, тип, дифференцированное значение)
//

// Возвращаемое значение: 
//      

Функция СформироватьКомбинаторику(МассивСтрок, МаксимальноеКоличествоСлов, БезПовторов = Ложь, Основание = Неопределено, Результат = Неопределено, ТекУровень = 0) Экспорт
    
    Если Основание = Неопределено Тогда Основание = Новый Массив КонецЕсли;
    Если Результат = Неопределено Тогда Результат = Новый Массив КонецЕсли;
    
    Если ТекУровень < МаксимальноеКоличествоСлов - 1 Тогда        
        Для Каждого Элемент Из МассивСтрок Цикл    
            Если БезПовторов И НЕ Основание.Найти(Элемент) = Неопределено Тогда
            Иначе
                Основание.Добавить(Элемент);
                Результат = СформироватьКомбинаторику(МассивСтрок, МаксимальноеКоличествоСлов, БезПовторов, Основание, Результат, ТекУровень + 1);
                Основание.Удалить(Основание.Количество() - 1);
                Если Результат.Количество() > 300 Тогда
                    Возврат Результат;
                КонецЕсли; 
            КонецЕсли;
        КонецЦикла;
    Иначе
        Для Каждого Элемент Из МассивСтрок Цикл
            Если БезПовторов И НЕ Основание.Найти(Элемент) = Неопределено Тогда
            Иначе
                Основание.Добавить(Элемент);
                Результат.Добавить(Новый ФиксированныйМассив(Основание));
                Основание.Удалить(Основание.Количество()-1);
            КонецЕсли;
        КонецЦикла;    
    КонецЕсли;
    
    
    
    Возврат Результат;    
КонецФункции
   ejikbeznojek
 
61 - 20.03.19 - 17:25
(59) хз, я же не в конфигураторе пишу, а тут. Но если отладить в конфигураторе и исправить возможные опечатки наверное будет работать)))
   fisher
 
62 - 20.03.19 - 17:25
(57) Имел в виду, что "результат" барабана в каждом положении - одна цифра. Если бы результат каждого барабана мог быть числом из нескольких цифр без ведущих нулей, задачка была бы интересней. Правда, с практической точки зрения она была бы неюзабельна, так как по такому результату невозможно было бы заново набрать правильную комбинацию :)
   Kigo_Kigo
 
63 - 20.03.19 - 17:25
Я так понимаю, что каждый барабан надо разложить в массив, потом крутить эти массивы в цикле, от последнего к первому с выводом каждого результата?
   Вафель
 
64 - 20.03.19 - 17:25
код из (28) передалать достаточно легко.
основаная логики по "обходу н циклов" уже реализована
   Fish
 
65 - 20.03.19 - 17:28
(62) А. ну результат конечно одна цифра.
   Про100Филя
 
66 - 20.03.19 - 17:28
(43) Лови
Барабан = 3;
Мин = 1;
Макс = 3;
ТекстЗапроса = "ВЫБРАТЬ
        |"""+Строка(Мин)+""" КАК Палочка
        | Поместить ВТ_Барабан";
        
    Для сч = (Мин + 1) По Макс Цикл
        
        ТекстЗапроса = ТекстЗапроса +"
        |ОБЪЕДИНИТЬ ВСЕ
        |ВЫБРАТЬ
        | """+Строка(сч)+"""";
    КонецЦикла;
    
    
    Для сч = 1 по Барабан Цикл          
        Если сч = 1 Тогда 
            ТекстЗапроса2 = " Барабан"+Строка(Сч)+".Палочка";
            ТекстЗапроса4 = " ВТ_Барабан как Барабан"+Строка(Сч);
        Иначе
            ТекстЗапроса2 = ТекстЗапроса2 + " + Барабан"+Строка(Сч)+".Палочка";
            ТекстЗапроса4 = ТекстЗапроса4 + " ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Барабан как Барабан"+Строка(Сч)+"
                            | ПО ("+Строка(Сч)+" = "+Строка(Сч)+")";

        КонецЕсли;    
    КонецЦикла;
    
    ТекстЗапроса = ТекстЗапроса + ";
    |ВЫБРАТЬ" + ТекстЗапроса2 + " КАК Палочка ИЗ " + ТекстЗапроса4;
    
    Запрос = Новый Запрос;
    Запрос.Текст = ТекстЗапроса;
    Результат = Запрос.Выполнить().Выгрузить();
    
    Для каждого Стр из Результат Цикл
        Сообщить(Стр.Палочка);    
    КонецЦикла
   sqr4
 
67 - 20.03.19 - 17:30
(61) а я уверен что вообще нет
   dalacovalexey
 
68 - 20.03.19 - 17:31
(63) Походу да!!!
вот только как это реальзовать
   ejikbeznojek
 
69 - 20.03.19 - 17:32
(67)
Вот так работает)
    Массив1Порядка=новый Массив;
    
    Массив2гоПорядка=новый Массив; 
    Для сч=1 по КоличествоЦифрНаБарабане цикл
        Массив2гоПорядка.добавить(сч);
    конеццикла;
    
    Для сч=1 по КоличествоБарабанов цикл
        Массив1Порядка.добавить(Массив2гоПорядка);
    конеццикла;
    
    Для ИндексСтрока = 0 По Массив1Порядка.Количество() - 1 Цикл
        Для ИндексСтолбец = 0 По Массив1Порядка[ИндексСтрока].Количество() - 1 Цикл
            Сообщить(Строка(ИндексСтрока+1)+Массив1Порядка[ИндексСтрока][ИндексСтолбец]);
        КонецЦикла;      
    КонецЦикла;
   Kigo_Kigo
 
70 - 20.03.19 - 17:32
(66) см (20)
   Garykom
 
71 - 20.03.19 - 17:33
(66) Не считается, надо не в цикле текст запроса составлять а всего 3 параметра передать в запрос и далее все там внтури.
   Said_We
 
72 - 20.03.19 - 17:35
(66) Порождающий запрос будет красивее, но ограничение на максимальное количество. Но если оно в 1 000 000, то ....
   Про100Филя
 
73 - 20.03.19 - 17:39
(70) Ну так это подсказка, вариантов решить 1000.
(71) Ну это дольше писать, я так на вскидку. Как ты в запросе количество соединений посчитаешь?
(72) Да с массивом тоже самое выйдет.
   MetaDon
 
74 - 20.03.19 - 17:39
(63)(68) нафига раскладывать комбинации в массив?, достаточно строки
Для К[i] =кмин по кмакс Цикл ;
и наделать N вложенных барабанов/циклов вложенных;
   sqr4
 
75 - 20.03.19 - 17:40
КоличествоБарабанов = 5;
    МаксимальнаяЦифра = 9;
    МинимальнаяЦифра = 2;

    Мин = МинимальнаяЦифра;
    Множитель = 1;
    Для Инд = 1 по КоличествоБарабанов-1 Цикл
        Множитель = Множитель*10;
        Сообщить(множитель);
        Мин = Мин + МинимальнаяЦифра*Множитель;
    КонецЦикла;
    Множитель = 1;    
    Макс = МаксимальнаяЦифра;
    Для Инд = 1 по КоличествоБарабанов-1 Цикл
        Множитель = Множитель*10;
        Макс = Макс + МаксимальнаяЦифра*Множитель;
    КонецЦикла;
    Для Инд = Мин По Макс Цикл
        Сообщить(Инд);
    КонецЦикла;
   sqr4
 
76 - 20.03.19 - 17:42
(69) не работает
   ejikbeznojek
 
77 - 20.03.19 - 17:45
(76) Честное пионерское работает.
Хотя если верить замеру производительности, то (10)  быстрее чем (69)
https://prnt.sc/n0j84s
https://prnt.sc/n0j92d
   MetaDon
 
78 - 20.03.19 - 17:47
(75) а может МаксимальноеЗначение неодназначное число?)-скажем секторов 77
   sqr4
 
79 - 20.03.19 - 17:48
(78) Тогда не работает)
   sqr4
 
80 - 20.03.19 - 17:48
(78) И с нулями не работает
   Про100Филя
 
81 - 20.03.19 - 17:52
(80) С отрицательными числами тоже
   VladZ
 
82 - 20.03.19 - 17:53
(75) Вот тут не понял:  

Для Инд = Мин По Макс Цикл
        Сообщить(Инд);
    КонецЦикла;

Допустим, максимум цифра 7, минимум 3.  Как будет работать алгоритм?
   ejikbeznojek
 
83 - 20.03.19 - 17:53
(81) -1 это барабанов столько или цифра на барабане?
   Про100Филя
 
84 - 20.03.19 - 17:54
(83) Прим. минимум = -2 максимальное = 2
   sqr4
 
85 - 20.03.19 - 17:54
(81) +
   dalacovalexey
 
86 - 20.03.19 - 17:57
(75) Для Инд = Мин По Макс Цикл
        Сообщить(Инд);
    КонецЦикла;

он начинает перебирать абсолютно все цифры подряд
а надо в пределах
значений барабана
   sqr4
 
87 - 20.03.19 - 17:57
(84) можно конечно доработать, но интереса уже нет, да и подход наверно должен быть другой
   sqr4
 
88 - 20.03.19 - 17:58
(86) да точно, в топку решение
   sqr4
 
89 - 20.03.19 - 17:59
я тоже не сдал
   fisher
 
90 - 20.03.19 - 17:59
Для положительных целых:
&НаКлиенте
Функция ПечатьКомбинации(МассивРазрядов)
    //печать новой комбинации

    ТекущаяКомбинация = "";
    Для Каждого Разряд Из МассивРазрядов Цикл
        ТекущаяКомбинация = Формат(Разряд, "ЧН=") + ТекущаяКомбинация;
    КонецЦикла;
    Сообщить(ТекущаяКомбинация);
КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
    
    МинЦифра = 3;
    МаксЦифра = 7;
    КоличествоРазрядов = 3;
    
    // инициализация и печать первой комбинации

    МассивРазрядов = Новый Массив;
    Для НомерРазряда = 1 По КоличествоРазрядов Цикл
        МассивРазрядов.Добавить(МинЦифра);
    КонецЦикла;
    ПечатьКомбинации(МассивРазрядов);
    
    ПереборОкончен = Ложь;
    Пока НЕ ПереборОкончен Цикл
        // получение новой комбинации

        Для ИндексРазряда = 0 По КоличествоРазрядов - 1 Цикл
            МассивРазрядов[ИндексРазряда] = МассивРазрядов[ИндексРазряда] + 1;
            Если МассивРазрядов[ИндексРазряда] > МаксЦифра Тогда
                Если ИндексРазряда = КоличествоРазрядов - 1 Тогда
                    ПереборОкончен = Истина;
                    Прервать;
                Иначе
                    МассивРазрядов[ИндексРазряда] = МинЦифра;
                КонецЕсли;
            Иначе
                Прервать;
            КонецЕсли;
        КонецЦикла;
        // печать новой комбинации

        Если НЕ ПереборОкончен Тогда
            ПечатьКомбинации(МассивРазрядов);
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
   fisher
 
91 - 20.03.19 - 18:00
Одноразрядных. Но легко доработать для многоразрядных.
   Вафель
 
92 - 20.03.19 - 18:00
хорошо что не перестановки попросилил.там то код существенно посложнее
   Garykom
 
93 - 20.03.19 - 18:33
&НаКлиенте
Процедура КрутимБарабаны(Команда)
    КоличествоБарабанов = 3;
    МаксимальноеЗначение = 7;
    МинимальноеЗначение = 3;
    
    Основание = МаксимальноеЗначение-МинимальноеЗначение+1;
    КоличествоВариантов = Pow(Основание, КоличествоБарабанов);
    Для НомерВарианта = 0 По КоличествоВариантов-1 Цикл
        тЗначение = НомерВарианта;
        тРезультат = "";
        Пока тЗначение > 0 Цикл
            тРезультат = ""+((тЗначение%Основание)+МинимальноеЗначение) + " " + тРезультат;
            тЗначение = Цел(тЗначение/Основание);
        КонецЦикла;
        
        ЧислоРазрядов = СтрЧислоВхождений(тРезультат," ");
        ДобавитьСправа = КоличествоБарабанов-ЧислоРазрядов;
        Для Сч = 1 По ДобавитьСправа Цикл
            тРезультат = тРезультат+МинимальноеЗначение+" ";
        КонецЦикла;
        
        Сообщить(""+тРезультат);
    КонецЦикла;
    
КонецПроцедуры

   Garykom
 
94 - 20.03.19 - 18:33
Плиз потестите мое (93) на скорость в сравнении с другими
   fisher
 
95 - 20.03.19 - 18:36
(93) Выглядит рабочим. И не знаю как там скорость, но явно симпатичнее моего. Плюсую :)
   Garykom
 
96 - 20.03.19 - 18:39
(95) Основано на системе счисления по произвольному основанию.

Только подстановку "0" впереди (тут получилось позади) сделал слегка криво уже потом.
Надо бы вставить в сам алгоритм и будет короче.
   fisher
 
97 - 20.03.19 - 18:43
(96) У меня тоже. Но у тебя красивее код. Но недоработано. Как минимум, много лишнего выводит.
   fisher
 
98 - 20.03.19 - 18:46
(96) Недопилено. Проверь на
    КоличествоБарабанов = 2;
    МаксимальноеЗначение = 4;
    МинимальноеЗначение = 3;
   Garykom
 
99 - 20.03.19 - 18:49
(98) Ага не с той стороны вставляет "0"
   Garykom
 
100 - 20.03.19 - 18:51
&НаКлиенте
Процедура КрутимБарабаны(Команда)
    КоличествоБарабанов = 3;
    МаксимальноеЗначение = 4;
    МинимальноеЗначение = 3;
    
    Основание = МаксимальноеЗначение-МинимальноеЗначение+1;
    КоличествоВариантов = Pow(Основание, КоличествоБарабанов);
    Сообщить("Количество вариантов: "+КоличествоВариантов);
    
    Для НомерВарианта = 0 По КоличествоВариантов-1 Цикл
        тЗначение = НомерВарианта;
        тРезультат = "";
        Пока тЗначение > 0 Цикл
            тРезультат = ""+((тЗначение%Основание)+МинимальноеЗначение) + " " + тРезультат;
            тЗначение = Цел(тЗначение/Основание);
        КонецЦикла;
        
        ЧислоРазрядов = СтрЧислоВхождений(тРезультат," ");
        ДобавитьСправа = КоличествоБарабанов-ЧислоРазрядов;
        Для Сч = 1 По ДобавитьСправа Цикл
            тРезультат = ""+МинимальноеЗначение+" "+тРезультат;
        КонецЦикла;
        
        Сообщить(""+тРезультат);
    КонецЦикла;
    
КонецПроцедуры
  1  2   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует