IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите решить элементарную таску, Тест светодиодов
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Вот препод задал таску:
я думал её решил, а оказалось, что если светодиод уже работал, а потом перегорел, то вывеси неверно, и вот этот случай я не рассматривал, и не знаю как.

1995 East-Central Regionals ACM International Collegiate Programming Contest Sponsored by Microsoft

Много электронных устройств имеют цифровые индикаторы, которые используют наборы светодиодов. Элемент обычного цифрового дисплея использует семь прямоугольных светодиодов с сегментами, расположенными следующим образом: Цифры отображаются с помощью включения различных комбинаций из семи сегментов в соответствии со следующей таблицей: Свечение сегментов в цифрах (Y - да, N - нет)

a b c d e f g
0
Y Y Y Y Y Y N
1
N Y Y N N N N
2
Y Y N Y Y N Y
3
Y Y Y Y N N Y
4
N Y Y N N Y Y
5
Y N Y Y N Y Y
6
Y N Y Y Y Y Y
7
Y Y Y N N N N
8
Y Y Y Y Y Y Y
9
Y Y Y Y N Y Y

Например, цифра три будет отображена как совокупность сегментов {a,b,c,d,g}. Задача ниже абстрагирована из подобной задачи, встреченной в отделе проверки качества входящих частей на фабрике по производству микроволновых печей. Приходящие семисегментные светодиодные индикаторы проверяются на их корректное функционирование с помощью автоматического оборудования, работающего под программным управлением. Замечание: решение задачи ниже ни достаточно, ни необходимо для тестирования в реальных условиях.

Вы должны создать программу, которая будет наблюдать за последовательными тестами состояния свечения семи сегментов одноцифрового дисплея и будет решать, является ли последовательность свечений верной последовательностью "обратного отсчёта". К сожалению, в индикаторах, которые исследует ваша программа, некоторые из элементов могут выйти из строя в начале теста, и некоторые из элементов могут выйти из строя во время теста. Ни один из сегментов не сгорит во включенном состоянии, и ни один из вышедших из строя сегментов не будет восстановлен. Тем не менее, вы должны "прочитать" сквозь двусмысленность, присутствующую в повреждённых дисплеях, просматривая на дисплее обратный отсчёт через одно или несколько значений.

Формат ввода: ввод состоит из серий наборов данных, имеющих следующий формат. Первая строка - натуральное одиночное число больше 0 и меньше 11. Число упорядочено по левому краю строки ввода. Следующие N строк - в каждой строке есть последовательность из семи состояний. Символы Y/N показывают состояние свечения сегментов индикатора. Последовательные строки предположительно представляют последовательность обратного отсчёта. Первый из семи символов - это свечение сегмента "a". Конец данных отмечается нулевым набором данных с нулём на первой строке. Нет информации о том, где последовательность обратного отсчёта начинается для данного набора данных. Нет информации, которая переносится с одного набора в другой, каждый набор данных представляет отдельный светодиодный индикатор.

Формат вывода: для каждой предположительной последовательности обратного отсчёта во входном файле вы должны ответить MATCH или MISMATCH в зависимости от того, может ли эта последовательность быть верной последовательностью обратного отсчёта где-нибудь внутри последовательности {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, если неизвестное количество неисправных элементов присутствует в начале теста и, возможно, сгорит во время тестирования.

ledtest.in
1
YYYYYYY
2
NNNNNNN
NNNNNNN
2
YYYYYYY
YYYYYYY
3
YNYYYYY
YNYYNYY
NYYNNYY
3
YNYYYYN
YNYYNYN
NYYNNYN
3
YNYYYYN
YNYYNYN
NYYNYYN
4
YYYYYYY
NYYNNNN
NNYYYYN
NNNYNNN
3
NNNNNNN
YNNNNNN
NNNNYNN

ledtest.out
MATCH MATCH MISMATCH MATCH MATCH MISMATCH MATCH MATCH


пожалуйста помогите!!!

Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Два раза прочитал эту элементарную таску, и по-моему всё сводится к тому, чтобы узнать, может ли совокупность включенных секторов индикатора при небольшом дополнении образовывать цифру (цифры, кусочек обратного отсчёта). Правда ведь?)

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Я взял на себя смелость отредактировать условие, чтобы сделать его читабельнее. Я только вставил разрывы строк; все огрехи машинного перевода остаются на совести лентяя xxx000.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Unconnected @ 3.06.2010 0:22) *
всё сводится к тому, чтобы узнать, может ли совокупность включенных секторов индикатора при небольшом дополнении образовывать цифру (цифры, кусочек обратного отсчёта). Правда ведь?)
Плюс, образуют ли эти цифры фрагмент последовательности обратного отсчета. Причем, в пределах одного теста плохие сегменты должны оставаться плохими, рабочие сегменты могут портиться в процессе теста.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> рабочие сегменты могут портиться в процессе теста.

Нет, наоборот. Так чуть легче.

> Ни один из сегментов не сгорит во включенном состоянии, и ни один из вышедших из строя сегментов не будет восстановлен.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Всё, я запутался.

> и некоторые из элементов могут выйти из строя во время теста. Ни один из сегментов не сгорит во включенном состоянии

Ничего не понимаю.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Цитата(TarasBer @ 3.06.2010 10:55) *

Всё, я запутался.

> и некоторые из элементов могут выйти из строя во время теста. Ни один из сегментов не сгорит во включенном состоянии

Ничего не понимаю.


я тоже очень долго вникал, и как мне кажется, надо что бы последовательность из ввода была по убыванию. диоды могут сгорать, но восстанавливаться не могут. Также вводе, диоды сразу могут быть сгоревшими.

Я не могу сделать,если предположим, диод был сгоревшим, и я предположил это и сделал его работающим, а потом диод в этой же последовательности заработал, то это неверно!

Сообщение отредактировано: xxx000 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(TarasBer @ 3.06.2010 11:55) *
> и некоторые из элементов могут выйти из строя во время теста.
> Ни один из сегментов не сгорит во включенном состоянии

Ничего не понимаю.
Согласен с Тарасом, эта фраза действительно превносит некий элемент бардака - возникает вопрос: а гаснут ли сегменты между тестами? smile.gif
Но если встать на позиции здравого смысла и отнести все сомнения на счет не вполне адекватного перевода (или еще чего-то), то все становится более-менее ясно, и решение этой "элементарной таски" сразу вырисовывается в голове - где-то примерно так:
const
l= 7;
g= 9;
m= 10;
d: array [0..g] of set of 1..l = (
[1,2,3,4,5,6 ],
[ 2,3 ],
[1,2, 4,5, 7],
[1,2,3,4, 7],
[ 2,3, 6,7],
[1, 3,4, 6,7],
[1, 3,4,5,6,7],
[1,2,3 ],
[1,2,3,4,5,6,7],
[1,2,3,4, 6,7]
);

var
r: array [1..m] of set of 1..l; // readings
p: array [1..m] of set of 0..g; // possible digits
b: set of byte; // bad
f: text;
i,j,k,n: integer;
s: string;
y: boolean; // yes

begin
Assign(f,'ledtest.in');
ReSet(f);
while not EoF(f) do begin
readLn(f,n);
for i:=1 to n do begin
ReadLn(f,s);
r[i]:=[];
for j:=1 to l do if UpCase(s[j])='Y' then Include(r[i],j);
end;
for i:=1 to n do begin
b:= [1..l]-r[i];
for j:= i+1 to n do b:= b-r[j];
p[i]:=[];
for j:=0 to g do if (d[j]-r[i]<=b) and (r[i]-d[j]=[]) then Include(p[i],j)
end;
j:=n-1;
repeat
y:=true;
for k:=0 to n-1 do y:=y and (j-k in p[k+1]);
Inc(j)
until y or (j>g);
Write(y,' ')
end;
Close(f);
ReadLn
end.

На примере все отрабатывает четко )).
Прошу прощения, я тут немного отступил от правил оформления..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.04.2024 13:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name