Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 5

Бармаглот

22.11.2014, 21:21. Показов 1982. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Компания Barmaley's Computing выпустила новый компьютер Barmaglot. Поскольку у сотрудников компании несколько странные представления о технологиях, компьютер оказался довольно непривычным.

Во-первых, исходные данные он читает с ленты, где могут быть записаны целые числа и латинские буквы. Чтобы показать, что ввод данных закончен, ленту нужно просто оторвать.

Во-вторых, результаты вычислений компьютер печатает на точно такой же ленте. Центральный процессор компьютера оснащён одним регистром; вместо оперативной памяти компьютер оснащён очередью и стеком неограниченного размера. Регистр, а также каждая ячейка очереди и стека могут содержать либо число, либо латинскую букву или пробел, либо специальное значение [BARMALEY], которое используется для обозначения логической лжи, при том что любое другое обозначает истину.

Программа для Barmaglot'а представляет собой строку символов, каждый из которых задаёт машинную команду; программа, состоящая из символов-команд, выполняется последовательно слева направо, кроме двух команд, которые могут нарушить эту последовательность.

Команды a, b, c и все остальные латинские буквы означают "занести данную букву в регистр".
Команды 0, 1, ..., 9 означают "занести в регистр соответствующее число".
Команда @ означает занести в регистр пробел.


Команды +, -, *, / означают соответствующие арифметические действия, операции целочисленные
Команды <, >, = означают сравнение двух чисел или двух символов, & и | означают логическое "и" и логическое "или";

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

Команда # умножает содержимое регистра в десять раз,
Команда _ делит содержимое регистра в десять раз.
Команда ! работает как логическое отрицание содержимого регистра: если там значение [BARMALEY], то заносится значение 1, если любое другое - заносится значение [BARMALEY].
Команда . выдаёт текущее значение регистра на печать
команда ? вводит очередное число или букву в регистр, а если на вводе кончилась (оборвалась) лента, заносит в регистра значение [BARMALEY].
Команда ] заносит значение из регистра в стек;
Команда [ извлекает значение с вершины стека и заносит его в регистра (если извлекать нечего, в регистр заносится [BARMALEY]);
Команда ~ меняет местами значения в регистра и на вершине стека.
Команда } заносит значение из регистра в очередь,
Команда { извлекает из очереди самое старое значение и помещает в аккумулятор (или помещает туда [BARMALEY], если очередь пуста).
Команды ( и ) предназначены для организации ветвлений и циклов и всегда должны в программе стоять парами, то есть в программе должен обязательно соблюдаться баланс круглых скобок. Выполняются они так. Команда (, если в регистре [BARMALEY], идёт по программе вперёд, пока не найдёт парную скобку, и после этого выполнение продолжится со следующей за этой закрывающей скобкой позиции; если в регистре было что-то другое, команда вообще ничего не делает, то есть выполнение продолжается прямо с команды, следующей за ней. Команда ), наоборот, если в регистре [BARMALEY], не делает ничего, тогда как если там что-то другое, просматривает программу назад до парной круглой скобки, после чего продолжает выполнение с команды, стоящей после такой скобки справа.


Наконец, команда " прекращает выполнение программы, при этом выполнение считается успешным. Если программа кончилась, не встретив эту команду, она завершается аварийно.

Пробелы в программе игнорируются.

Пример программы, которая печатает традиционную строчку “HELLO WORLD”:

H.E.L.L.O.@.W.O.R.L.D."



В вашем распоряжении оказался эмулятор данного компьютера (http://ejudge.cs.msu.ru/barmaglot/) и требуется написать для него программу, которая по заданному на ленте году выводит строку "YES", если он високосный и "NO" в противном случае (без кавычек). Год является високосным в двух случаях: либо он кратен 4, но при этом не кратен 100, либо кратен 400. Год не является високосным, если он не кратен 4, либо он кратен 100, но при этом не кратен 400.
Примеры
Входные данные Результат работы

2014



NO

2004



YES
КТО-НИБУДЬ МОЖЕТ ЭТО РЕШИТЬ?) Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2014, 21:21
Ответы с готовыми решениями:

Определить сколько минут в день Бармаглот тратит на еду
Диета Бармаглота Бармаглот страдает от переедания и Алиса разработала для него специальную диету. Каждый день Бармаглот будет съедать n ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
22.11.2014, 21:28
кто нибудь может. заранее пожалуйста.
0
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 5
22.11.2014, 21:31  [ТС]
Не,а если серьёзно) Я уже часа 3 над этим бьюсь...
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
22.11.2014, 21:33
думаете я шучу? ошибаетесь.
Цитата Сообщение от NooB_Pascal Посмотреть сообщение
Я уже часа 3 над этим бьюсь...
ну так наработки - в студию... что не получается, как не получается...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru