Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > проверить равенство количества символов


Автор: nmn 22.9.2010, 20:57
здравствуйте

есть лента, в каждой ее ячейке может быть записано 1 из 5 символов ((п)устой, (с)иний, (к)расный, (ж)елтый, (з)еленый), так же есть указывающее устройство (УУ) на текущий символ которое может двигаться только вперед

доступны следующие операции:
проверить что текущий символ является с или к (в случае совпадения УУ сдвигатся на один символ вперед), если не совпало ни с "с" ни с "к", то УУ не сдвигается вперед и остается на том же символе, после выполнения этой операции есть три варианта выполнения (когда символ с, когда символ к, и когда символ не с и не к, например п или ж или з)
операция проверить что текущий символ является к или ж, принцип действия аналогичный
операция записать символ(с, к, ж или з) в конец ленты

задача: дана строчка вида сс...сссккккк...ккк, нужно определить является ли количество с и к одинаковым

подскажите как решать пожалуйста

Автор: ksnk 22.9.2010, 23:03
требуется решить более важную задачу - придумать язык ассемблера для этой системы  smile Ну или бейсика древненького.

тоесть - каждая операция на новой строчке, каждая строка имеет номер. номер строки операции - адрес для перехода в некоторых командах

существует 2 команды сравнения типа
 сравнить(CЖ)?{№_строки_перехода}??{№_строки_перехода}:{№_строки_перехода};
и одна операция записи...

Автор: nmn 23.9.2010, 01:08
Цитата(ksnk @  22.9.2010,  23:03 Найти цитируемый пост)
требуется решить более важную задачу - придумать язык ассемблера для этой системы

ну это то как раз не самая важная задача, можете вводить свои обозначения сколько хотите, лучше дайте идею как проверить равенство

Автор: ksnk 23.9.2010, 07:27
я правильно пнимаю, что если на ленте есть символ пробел (п) то сдвинутся по ленте нельзя никак?

Автор: nmn 23.9.2010, 15:06
Цитата(ksnk @  23.9.2010,  07:27 Найти цитируемый пост)
я правильно пнимаю, что если на ленте есть символ пробел (п) то сдвинутся по ленте нельзя никак?

можно, тогда переход будет по третьей ветке

получилось! вот наглядно как выглядит решение 
user posted image
если робот дойдет до желтого люка, то значит что строка принимается, если выбросят раньше с конвейера то строка не подходит

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

Автор: ksnk 23.9.2010, 15:16
nmn, забавно. Оказывается это была задача на телепатию...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)