задачка на соображалку 2
От: zoo1982  
Дата: 14.08.09 10:12
Оценка:
А как вам такая задачка? Хотите голову поломать?

Consider the following grammar rules.
<Expr> ::= <IntersectExpr> | '0'
<IntersectExpr> ::= <UnionExpr> | <Intersect>
<Intersect> ::= '(' <UnionExpr> '*' <Expr> ')'
<UnionExpr> :== <RegionExpr> | <Union>
<Union> :== '(' <RegionExpr> '+' <Expr> ')'
<RegionExpr> :== <Coordinate> 'x' <Coordinate>
<Coordinate> :== '1'..'9'

Which of the following input strings correspond to the production '<Expr>'?

1) (4x8+8x4+8x8)
2) ((2x3+4x5)*0)
3) (2x3+8x98)*(2x3+0)
4) ((0*0)+2)
5) ((1..9))
6) ((4x8*4x9)+0x3
Re: задачка на соображалку 2
От: Kh_Oleg  
Дата: 14.08.09 11:33
Оценка: 1 (1)
Здравствуйте, zoo1982, Вы писали:

Z>А как вам такая задачка? Хотите голову поломать?


Z>Consider the following grammar rules.

Z><Expr> ::= <IntersectExpr> | '0'
Z><IntersectExpr> ::= <UnionExpr> | <Intersect>
Z><Intersect> ::= '(' <UnionExpr> '*' <Expr> ')'
Z><UnionExpr> :== <RegionExpr> | <Union>
Z><Union> :== '(' <RegionExpr> '+' <Expr> ')'
Z><RegionExpr> :== <Coordinate> 'x' <Coordinate>
Z><Coordinate> :== '1'..'9'

Z>Which of the following input strings correspond to the production '<Expr>'?


Z>1) (4x8+8x4+8x8)

Z>2) ((2x3+4x5)*0)
Z>3) (2x3+8x98)*(2x3+0)
Z>4) ((0*0)+2)
Z>5) ((1..9))
Z>6) ((4x8*4x9)+0x3

Вот это как раз совершенно нормальная задача, если знать, что такое EBNF.
Если я внимательно смотрел, то соответствуют выражения под номерами 1, 2, 3 и 6.
номер 4 не подходит: '2' (<Coordinate>) входит только в конструкцию <RegionExpr>, а тут символ '+', а не 'х'.
номер 5 не подходит: символа '.' вообще нет в данном синтаксисе.
Re[2]: задачка на соображалку 2
От: Alex Dav Россия  
Дата: 14.08.09 11:39
Оценка: :))
Здравствуйте, Kh_Oleg, Вы писали:

K_O>Вот это как раз совершенно нормальная задача, если знать, что такое EBNF.

K_O>Если я внимательно смотрел, то соответствуют выражения под номерами 1, 2, 3 и 6.
K_O>номер 4 не подходит: '2' (<Coordinate>) входит только в конструкцию <RegionExpr>, а тут символ '+', а не 'х'.
K_O>номер 5 не подходит: символа '.' вообще нет в данном синтаксисе.

ну вот кто то опять пятерку за лабу получит
Re[3]: задачка на соображалку 2
От: Kh_Oleg  
Дата: 14.08.09 11:46
Оценка:
Здравствуйте, Alex Dav, Вы писали:

K_O>>Вот это как раз совершенно нормальная задача, если знать, что такое EBNF.

K_O>>Если я внимательно смотрел, то соответствуют выражения под номерами 1, 2, 3 и 6.
K_O>>номер 4 не подходит: '2' (<Coordinate>) входит только в конструкцию <RegionExpr>, а тут символ '+', а не 'х'.
K_O>>номер 5 не подходит: символа '.' вообще нет в данном синтаксисе.

AD>ну вот кто то опять пятерку за лабу получит

Даже если и так — я от того не обеднею, он не разбогатеет, а мозги тренировать полезно.
Re: задачка на соображалку 2
От: Were  
Дата: 14.08.09 12:05
Оценка: +1
Здравствуйте, zoo1982, Вы писали:

Z>А как вам такая задачка? Хотите голову поломать?


Z>Consider the following grammar rules.

Z><Expr> ::= <IntersectExpr> | '0'
Z><IntersectExpr> ::= <UnionExpr> | <Intersect>
Z><Intersect> ::= '(' <UnionExpr> '*' <Expr> ')'
Z><UnionExpr> :== <RegionExpr> | <Union>
Z><Union> :== '(' <RegionExpr> '+' <Expr> ')'
Z><RegionExpr> :== <Coordinate> 'x' <Coordinate>
Z><Coordinate> :== '1'..'9'

Z>Which of the following input strings correspond to the production '<Expr>'?


Z>1) (4x8+8x4+8x8)

Z>2) ((2x3+4x5)*0)
Z>3) (2x3+8x98)*(2x3+0)
Z>4) ((0*0)+2)
Z>5) ((1..9))
Z>6) ((4x8*4x9)+0x3

Ответ: только 2
Re[2]: задачка на соображалку 2
От: zoo1982  
Дата: 16.08.09 07:29
Оценка:
K_O>Вот это как раз совершенно нормальная задача, если знать, что такое EBNF.
K_O>Если я внимательно смотрел, то соответствуют выражения под номерами 1, 2, 3 и 6.
K_O>номер 4 не подходит: '2' (<Coordinate>) входит только в конструкцию <RegionExpr>, а тут символ '+', а не 'х'.
K_O>номер 5 не подходит: символа '.' вообще нет в данном синтаксисе.


А что такое EBNF?
Re[2]: задачка на соображалку 2
От: zoo1982  
Дата: 16.08.09 07:29
Оценка:
W>Ответ: только 2

Почему? как вы решали?
Re: задачка на соображалку 2
От: MichaelLa  
Дата: 16.08.09 08:01
Оценка: +1 :)
Z>1) (4x8+8x4+8x8)
Z>2) ((2x3+4x5)*0)
Z>3) (2x3+8x98)*(2x3+0)
Z>4) ((0*0)+2)
Z>5) ((1..9))
Z>6) ((4x8*4x9)+0x3

Задача для идиотов. Честное слово.
Re[3]: задачка на соображалку 2
От: tonykent  
Дата: 16.08.09 08:14
Оценка:
Здравствуйте, zoo1982, Вы писали:



K_O>>Вот это как раз совершенно нормальная задача, если знать, что такое EBNF.

K_O>>Если я внимательно смотрел, то соответствуют выражения под номерами 1, 2, 3 и 6.
K_O>>номер 4 не подходит: '2' (<Coordinate>) входит только в конструкцию <RegionExpr>, а тут символ '+', а не 'х'.
K_O>>номер 5 не подходит: символа '.' вообще нет в данном синтаксисе.

Z>А что такое EBNF?


E — не знаю что такое
но BNF — "Бекус-Наур форм" типа
Re[4]: задачка на соображалку 2
От: eaa Украина  
Дата: 16.08.09 08:33
Оценка:
Здравствуйте, tonykent, Вы писали:

T>E — не знаю что такое

Extended

T>но BNF — "Бекус-Наур форм" типа
Re[3]: задачка на соображалку 2
От: Yuki-no Tenshi Украина  
Дата: 16.08.09 19:54
Оценка:
Z>Почему? как вы решали?

Надеюсь, что нигде не ступил при решении. У меня тоже толь 2-й вариант подошёл.
Условие задачи представляет собой описание грамматики некоего языка.
Решается достаточно несложно. Берёшь примеры по порядку и начинаешь просматривать правила из условия и искать несоответсвия.

Вот тут можно почитать про эти грамматики.

К примеру,
5) ((1..9))
не подходит потому хотя бы, что нигде не определено '..' и к тому же цифры могут записываться только через 'x' и это показано в вот этих двух строчках:
<RegionExpr> :== <Coordinate> 'x' <Coordinate>
<Coordinate> :== '1'..'9'
雪の天使
1
Re[2]: задачка на соображалку 2
От: Kh_Oleg  
Дата: 17.08.09 05:11
Оценка:
Здравствуйте, Kh_Oleg, Вы писали:

K_O>Здравствуйте, zoo1982, Вы писали:


Z>>А как вам такая задачка? Хотите голову поломать?


Z>>Consider the following grammar rules.

Z>><Expr> ::= <IntersectExpr> | '0'
Z>><IntersectExpr> ::= <UnionExpr> | <Intersect>
Z>><Intersect> ::= '(' <UnionExpr> '*' <Expr> ')'
Z>><UnionExpr> :== <RegionExpr> | <Union>
Z>><Union> :== '(' <RegionExpr> '+' <Expr> ')'
Z>><RegionExpr> :== <Coordinate> 'x' <Coordinate>
Z>><Coordinate> :== '1'..'9'

Z>>Which of the following input strings correspond to the production '<Expr>'?


Z>>1) (4x8+8x4+8x8)

Z>>2) ((2x3+4x5)*0)
Z>>3) (2x3+8x98)*(2x3+0)
Z>>4) ((0*0)+2)
Z>>5) ((1..9))
Z>>6) ((4x8*4x9)+0x3

K_O>Вот это как раз совершенно нормальная задача, если знать, что такое EBNF.

K_O>Если я внимательно смотрел, то соответствуют выражения под номерами 1, 2, 3 и 6.
K_O>номер 4 не подходит: '2' (<Coordinate>) входит только в конструкцию <RegionExpr>, а тут символ '+', а не 'х'.
K_O>номер 5 не подходит: символа '.' вообще нет в данном синтаксисе.

Так, я немножко ошибся — вариант 3 тоже не подходит, поскольку в данном синтаксисе допускаются только одиночные цифры. Но вот интересует мнение тех, у кого ответ "только 2", почему не подходит, скажем вариант 1?
Re: задачка на соображалку 2
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 17.08.09 05:25
Оценка:
Здравствуйте, zoo1982, Вы писали:

Z>А как вам такая задачка? Хотите голову поломать?


Z>Consider the following grammar rules.

Z><Expr> ::= <IntersectExpr> | '0'
Z><IntersectExpr> ::= <UnionExpr> | <Intersect>
Z><Intersect> ::= '(' <UnionExpr> '*' <Expr> ')'
Z><UnionExpr> :== <RegionExpr> | <Union>
Z><Union> :== '(' <RegionExpr> '+' <Expr> ')'
Z><RegionExpr> :== <Coordinate> 'x' <Coordinate>
Z><Coordinate> :== '1'..'9'

Z>Which of the following input strings correspond to the production '<Expr>'?


Z>1) (4x8+8x4+8x8)

Z>2) ((2x3+4x5)*0)
Z>3) (2x3+8x98)*(2x3+0)
Z>4) ((0*0)+2)
Z>5) ((1..9))
Z>6) ((4x8*4x9)+0x3

1)Не подходит так как в скобках может быть только один оператор
2)Подходит
3)не подходит так как все опреаторы должны быть в скобках
4)не походит как как 2 — неправильный символ в этой граммтике, отдельно висящий допускается только '0'
5)понятно что не подходит
6)вообще непарные скобки, кроме того 0x3 — неверный символ, нуля не должно быть
Re[2]: задачка на соображалку 2
От: catBasilio  
Дата: 17.08.09 06:27
Оценка:
Здравствуйте, Kh_Oleg, Вы писали:

K_O>Здравствуйте, zoo1982, Вы писали:


Z>>А как вам такая задачка? Хотите голову поломать?


Z>>Consider the following grammar rules.

Z>><Expr> ::= <IntersectExpr> | '0'
Z>><IntersectExpr> ::= <UnionExpr> | <Intersect>
Z>><Intersect> ::= '(' <UnionExpr> '*' <Expr> ')'
Z>><UnionExpr> :== <RegionExpr> | <Union>
Z>><Union> :== '(' <RegionExpr> '+' <Expr> ')'
Z>><RegionExpr> :== <Coordinate> 'x' <Coordinate>
Z>><Coordinate> :== '1'..'9'

K_O>Вот это как раз совершенно нормальная задача, если знать, что такое EBNF.

K_O>Если я внимательно смотрел, то соответствуют выражения под номерами 1, 2, 3 и 6.

Ключевой момент выделен. Разобраться в описании Бэкуса-Науэра при наличии времени проблем не составляет. Но если человек не работал с EBNF каждый день на протяжении нескольких лет, да еще на собеседовании будет мало времени и кандидат скорее всего будет волноваться, то найти решение может быть далеко не просто.

В качестве подтверждения, могу сказать, что даже здесь в ветке уже несколько вариантов ответов, и это люди отвечали в спокойной обстановке, а не на собеседовании.
UNIX way — это когда тебе вместо туалетной бумаги дают топор, рубанок и карту близлежащего леса
Re[3]: вариант 1
От: SergeCpp Россия http://zoozahita.ru
Дата: 17.08.09 09:58
Оценка:
Здравствуйте, Kh_Oleg!

Z>><Expr> ::= <Union> | <RegionExpr>

Z>><Union> :== '(' <RegionExpr> '+' <Expr> ')'
Z>><RegionExpr> :== <Coordinate> 'x' <Coordinate>
Z>><Coordinate> :== '1'..'9'

Упростили грамматику для облегчения восприятия примера 1.

Z>>>1) (4x8+8x4+8x8)


K_O>...вот интересует мнение тех, у кого ответ "только 2", почему не подходит, скажем вариант 1?


Z>>><Union> :== '(' <RegionExpr> '+' <Expr> ')'


( 4x8 + 8x4+8x8 ) => 8x4+8x8 должно быть Expr, а Expr "с плюсиками" должно быть в скобках.
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[4]: вариант 1
От: Kh_Oleg  
Дата: 17.08.09 10:46
Оценка:
Здравствуйте, SergeCpp, Вы писали:

K_O>>...вот интересует мнение тех, у кого ответ "только 2", почему не подходит, скажем вариант 1?


Z>>>><Union> :== '(' <RegionExpr> '+' <Expr> ')'


SC>( 4x8 + 8x4+8x8 ) => 8x4+8x8 должно быть Expr, а Expr "с плюсиками" должно быть в скобках.


Действительно. Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.