должно по идее получиться "нет худо без добра.", но у меня получилось
"нет худо бrз одра." может ты в условии что-то напутала? вот программа которая переводит
function Pow(a, x:integer):integer;
var
rez, i:integer;
begin
rez := 1;
for i := 1 to x do
rez := rez * a;
Pow := rez;
end;
function BinToDec(a:string):integer;
var
i ,r:integer;
begin
r := 0;
for i := length(a) downto 1 do
r := r + StrToInt(a[i]) * Pow(2, length(a) - i);
BinToDec := r;
end;
var
s:array[1..100] of string;
i:integer;
begin
s[1] := '11001101';
s[2] := '11100101';
s[3] := '11110010';
s[4] := '00100000';
s[5] := '11110101';
s[6] := '11110011';
s[7] := '11100100';
s[8] := '11100000';
s[9] := '00100000';
s[10] := '11100001';
s[11] := '1110010';
s[12] := '11100111';
s[13] := '00100000';
s[14] := '11101110';
s[15] := '11100001';
s[16] := '11110000';
s[17] := '11100000';
s[18] := '00101110';
for i := 1 to 18 do
write(chr(BinToDec(s[i])));
end.
Комбинаторные алгоритмы предназначены для выполнения вычис-
лений на различного рода объектах, возникающих в прикладных ком-
бинаторных задачах и при исследовании дискретных математических
структур. Необходимость разработки эффективных, быстрых комби-
наторных алгоритмов уже давно не вызывает сомнений. На практике
нужны не алгоритмы, а хорошие алгоритмы в широком смыс-
ле. Одним из основных критериев качества алгоритма является время,
необходимое для его выполнения.
Разработке и анализу вычислительной сложности комбинаторных
алгоритмов над классическими комбинаторными объектами посвящено
настоящее учебное пособие. Наряду с теоретическими знаниями даётся
описание таких важнейших алгоритмов, приводится их строгое обосно-
вание и детально изучается асимптотическая сложность рассматривае-
мых алгоритмов. Мы познакомим читателя с широким кругом понятий
и сведений из дискретной математики, необходимых практикующему
программисту. Пополним запас примеров нетривиальных алгоритмов
над объектами дискретной математики существенно обо-
гатить навыки самостоятельного конструирования алгоритмов и сфор-
мировать мышление, позволяющее использовать методы дискретного
анализа при разработке эффективных алгоритмов для решения прак-
тических задач и оценке их сложности.
Для понимания материала учебного пособия требуется знание ос-
новных понятий и фактов из дискретной математики и математической
логики. Читатель должен обладать минимальным опытом программи-
рования, каждый изучаемый алгоритм снабжен понятным псевдокодом,
позволяющим реализовать рассматриваемый алгоритм на доступном
языке программирования. При изучении отдельных тем используются
основы математического анализа и теории вероятностей.
internal class Program
{
private static void Main()
{
Console.WriteLine(DoSomeThing("Как тебе живется", "цчхб"));
Console.WriteLine(DoSomeThing("Как тебе живется", "цчх"));
Console.WriteLine(DoSomeThing("Как тебе живется", "цчхи"));
Console.WriteLine(DoSomeThing("Как тебе живется", "цчахбаек"));
Console.WriteLine("Программа оконченна");
Console.ReadKey();
}
private static string DoSomeThing(string st1, string st2)
{
Console.WriteLine();
//Console.WriteLine($"{st1} - {st2}");
var i = 0;
for (var j = 0; j < st1.Length; j++)
{
//Console.WriteLine($"st1[{j}] = {st1[j]} {!st2.Contains(st1[j].ToString())}");
if (!st2.Contains(st1[j].ToString())) continue;
i = j;
break;
}
if (i == 0) return "Нет совпадений";
var s = st1.LastIndexOf(" ", i, StringComparison.Ordinal) > 0
? st1.Substring(0, st1.LastIndexOf(" ", i, StringComparison.Ordinal))
: "";
s = s +
(st1.IndexOf(" ", i, StringComparison.Ordinal) > 0
? st1.Substring(st1.IndexOf(" ", i, StringComparison.Ordinal))
: "");
return "Искомый символ - " + st1[i] + "\n" + s.Trim();
}
}