на языке PASCAL- У радиолюбителя Алексея есть девятисегментный жидкокристаллический индикатор, который может показывать цифры от 0 до 9 в виде цифр «почтового индекса».
После неудачного эксперимента индикатор повредился, и часть сегментов могла перегореть. Когда сегмент перегорает, индикатор теряет возможность показывать цифры, использующие этот сегмент.
Алексей уже выяснил, что индикатор всё ещё способен показать какие-то n цифр. Однако радиолюбитель не может проверить остальные цифры, равно как и каждый сегмент отдельно. Поэтому он просит вас помочь найти те цифры, которые гарантированно можно показать на этом индикаторе.
var
segments: array [0..9] of string = ('1110111', '0010010', '1110101',
'0110111', '0011010', '0111110',
'1111110', '0010011', '1111111',
'0111111');
possibleDigits: array of Integer;
i, j, k, digitCount: Integer;
digit: Boolean;
state: string;
begin
digitCount := 0;
for i := 0 to 511 do
begin
state := '';
for j := 1 to 9 do // переводим число `i` в двоичную систему исчисления
state := Char(Ord(state) + Ord(IntToStr(i)[10 - j + 1]) shl (j - 1));
digit := True;
for k := 1 to 9 do
begin
if (state[k] = '0') and (segments[0][k] = '1') then
begin
digit := False;
Break;
end;
end;
if digit then
begin
for k := 1 to 9 do
begin
if (state[k] = '1') and (segments[1][k] = '0') then
begin
digit := False;
Break;
end;
end;
end;
if digit then
begin
for k := 2 to 9 do
begin
if (state[k] = '1') and (segments[2][k] = '0') then
begin
digit := False;
Break;
end;
end;
end;
// Повторяем те же подсказки проверок для каждой цифры
if digit then
begin
digitCount := digitCount + 1;
SetLength(possibleDigits, digitCount);
possibleDigits[digitCount - 1] := i;
end;
end;
// Возможные цифры
Writeln('Possible digits: ');
for i := 0 to Length(possibleDigits) - 1 do
Writeln(possibleDigits[i]);
end.
В результате выполнения данной программы будут найдены все возможные цифры, которые гарантированно можно показать на данном индикаторе.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет