Комбинации из букв - PascalABC.NET
Формулировка задачи:
Из четырех букв ГОРА составлены всевозможные комбинации по 4 буквы и расположены в алфавитном порядке:
1 АААА
2 АААГ
3 АААО и т.д.
Сколько всего комбинаций( мне кажется 256)
Напишите программу которая выдает комбинацию на позиции, заданной пользователем
Решение задачи: «Комбинации из букв»
textual
Листинг программы
const
Word = 'ГОРА';
Length = 4;
function ConvertBase(n : integer; base : integer; chars : array of char) : string;
begin
result := '';
repeat
result := chars[(n mod base)] + result;
n := n div base;
until n = 0;
while result.Length < Length do result := chars[0] + result;
end;
begin
var chars := Word.ToCharArray;
System.Array.Sort(chars);
WriteLn(ConvertBase(Pred(ReadlnInteger('Введите номер искомой комбинации:')), chars.Distinct().Count(), chars));
end.
Объяснение кода листинга программы
В этом коде задача состоит в том, чтобы найти все комбинации из букв слова ГОРА, используя определенную систему счисления.
Список действий:
- Объявляются константы:
- Word (строка) содержит слово
ГОРА; - Length (целое число) содержит количество символов в искомом слове.
- Word (строка) содержит слово
- Определяется функция ConvertBase:
- Результатом работы функции является строка, которая будет содержать искомую комбинацию.
- Внутри функции используется цикл repeat, который будет выполняться до тех пор, пока результат не станет равным нулю.
- В каждой итерации цикла результат дополняется символом из массива chars, соответствующим числу n % base.
- Затем число n делится на base.
- После завершения цикла, результат дополняется до искомой длины с помощью цикла while и символа из массива chars с индексом 0.
- В основной части кода:
- Слово
ГОРАпреобразуется в массив символов с помощью метода ToCharArray. - Массив символов сортируется с помощью метода Sort из класса System.Array.
- Пользователю предлагается ввести номер искомой комбинации.
- Затем вызывается функция ConvertBase с тремя аргументами: Pred(ReadlnInteger('Введите номер искомой комбинации:')) (предшествующий введенному числу), Count(Distinct(chars)) (количество уникальных символов в массиве) и массив символов chars.
- Результат функции выводится на экран с помощью метода WriteLn.
- Слово