Алгебры логики - всё вычисления и ТД в двоичном коде с помощью алгебры и логических функций типо и, или , конъюнкции
<h3>PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018</h3><h3>Внимание! Если программа не работает, обновите версию!</h3>
begin
var n := ReadlnInteger('N=');
var R := new integer[n];
repeat
var a := ReadlnString.ToCharArray;
if a.Length <> N then break;
if a.Where(c -> c = '+').Count = 1 then
Inc(R[a.IndexOf('+')])
until False;
R.Transform(t -> t >= 0.07 * N ? 1 : 0);
R.Numerate.Where(t -> t[1] = 1).Select(t -> t[0]).Println
end.
<h3>Пример</h3>
(окончание ввода - строка длины отличной от N)
N= 5
-+---
--+--
-+---
+----
-+---
--+--
-+---
+----
----+
-+---
1 2 3 5
// PascalABC.NET 3.1, сборка 1219 от 16.04.2016
begin
var a:=ReadLines('m17.txt').JoinIntoString.ToIntegers;
a.Println;
var b:=a.Select((x,i)->Rec(x,i)).Where(x->x.Item1<0)
.Select(x->x.Item2).ToArray;
if b.Count<>2 then
Writeln('Количество отрицательных элементов не равно двум')
else begin
a:=SeqFill(b[0],0).Concat(a.Skip(b[0]).Take(b[1]-b[0]+1))
.Concat(SeqFill(a.Length-b[1]-1,0)).ToArray;
a.Println
end
end.
<u><em>Тестовое решение:</em></u>
23 14 7 15 0 13 -6 41 18 13 8 42 27 -11 3 19 10
0 0 0 0 0 0 -6 41 18 13 8 42 27 -11 0 0 0
<em>Файл с исходными данными имеет имя m17.txt. Тестовый файл находится во вложении. Разбивка на строки сделана по 5 значений, но может быть совершенно произвольной. Также нет привязки именно к 17 числам, главное - чтобы отрицательных чисел было ровно два, иначе будет выдано сообщение о их неверном количестве.</em>
22:22
01:10
02:20
03:30
04:40
05:50
11:11
21:12
12:21
00:00
23:32
13:31
14:41
15:51
10:01
20:02
<em>// PascalABC.NET 3.2, сборка 1356 от 04.12.2016</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var s:=ReadlnString('>');
var n:=s.Length;
for var i:=n downto 1 do
Writeln((i-1)*' '+s[i:n+1].Inverse+s[i:n+1])
end.
<u>Пример</u>
> Геленджик
кк
киик
кижжик
киждджик
киждннджик
кижднеенджик
кижднелленджик
кижднелееленджик
кижднелеГГеленджик