Дан целочисленный массив из 20 элементов. элементы массива могут принимать целые значения от –10 000 до 10 000 включительно. опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых хотя бы одно число делится на 6.
Первая маска: A?B*.*C?*. Её можно интерпретировать как A[любой символ]B[последовательность символов или ничего]. [последовательность символов или ничего]C[любой символ] [последовательность символов или ничего].
Под такие условия подходят 5 файлов, которые переходят в каталог friends:
ABBCBD.CDDBA
ACBDC.ACBA
AABBCCDD.DDCCD
ACBCACD.AABBCCDD
ADBCCAD.CADABC
Почему не подходят остальные? ABDCC.ACBDA – нет символа в начале между A и B. BABCDA.ABCD - нет символа A в начале. AABACADA?CDBDADCB – нет точки.
Следующая маска: *B?C*.??*D*. На человеческий: [любой символ] B] [последовательность символов или ничего]C[любой символ]. [любой символ] [любой символ] [последовательность символов или ничего]D [последовательность символов или ничего]
Результат – 3 файла в папке family :
ABBCBD.CDDBA
AABBCCDD.DDCCD
ADBCCAD.CADABC
Остальные: ACBCACD.AABBCCDD – после единственной B сразу идёт C; ACBDC.ACBA – после точки нет D.
ответ:
ABBCBD.CDDBA
AABBCCDD.DDCCD
ADBCCAD.CADABC
uses System;
uses System.Collections;
begin
var d := DateTime.Today;
repeat
d := d.AddDays(1);
until d.DayOfWeek = DayOfWeek.Sunday;
var Sundays := new Dictionary<integer, integer>();
repeat
if Sundays.ContainsKey(d.Year) then
Sundays[d.Year] += 1
else
Sundays.Add(d.Year, 1);
d := d.AddDays((-7));
until d.Year <= 1;
var max := Sundays.Values.Max;
Sundays.Where(x -> x.Value = max).Println;
end.