АВТ
Language:

Remote Training on Programming

Problems On-line status Contests FAQ
For authors:
Register  ||  Login
 
Hello, Guest! Login or register.

178. H-Translator

Time Limit: 1 seconds
Memory Limit:64000KB
Points:15
View Problem Statistics Submit Problem added Administrator

Требуется реализовать перевод условного оператора, содержащего сложное условие (может включать and, or, not) на язык, в котором допустимы только элементарные сравнения и переход на метку. См. примеры ввода и вывода.

Первая строка входного файла удовлетворяет следующей грамматике:

УсловныйОператор = ОсновныеСтроки ЗаключительнаяЧасть
ОсновныеСтроки = {ОпределениеЧисловойМетки | УсловныйПереход}
ОпределениеЧисловойМетки = ДвузначноеЧисло ':' CRLF
УсловныйПереход =
   ТриПробела if пробел буква ЗнакСравнения буква пробел then пробел
   goto пробел ИспользованиеМетки ';' CRLF
ИспользованиеМетки = ДвузначноеЧисло | true | false
ЗаключительнаяЧасть =
   true ':' CRLF
   ТриПробела something ';' CRLF
   false ':' CRLF
ЗнакСравнения = '=' | '<>' | '<' | '<=' | '>' | '>='
ТриПробела = пробел пробел пробел
ДвузначноеЧисло = цифра цифра
буква = 'a'..'z'
цифра = '0'..'9'
CRLF = #13 #10
пробел = #32

В выходном тексте буквы (имена переменных) должны встречаться в том же количестве и в том же порядке, что и во входном тексте. Числа в определениях числовых меток должны идти в порядке возрастания, начиная с 01. Не допускается наличие двух строк подряд, содержащих определения меток (между двумя строками с определениями меток должна быть строка с if или something). Не допускается определение метки, на которую нет перехода (кроме меток true и false, которые должны быть определены всегда).

Пример

STDIN

  if (a<b) and (c<d) or ((e=f) and (g>=h)) or not (i<j) then something; 

STDOUT

   if a>=b then goto 01;
   if c<d then goto true;
01:
   if e<>f then goto 02;
   if g>=h then goto true;
02:
   if i<j then goto false;
true:
   something;
false:

 


View Problem Statistics Submit Author/source:
Problems from Contests / Vologda Students Contests / IX InterUni Contest 2006 /
177. G-Brackets 178.
We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit. The art of tackling miniproblems with all our energy will sharpen our talents for the real problems. Donald E. Knuth.
time generating 0.11 sec.
© Copyright VSTU, AVT, Nosov D.A.