Задача из Амазона

Бродяга
Уже с Приветом
Posts: 16086
Joined: 22 Apr 2003 17:57
Location: Колыбель

Задача из Амазона

Post by Бродяга »

Write a method (and any supporting classes/methods) that takes as its input a string and returns a value that is the arithmetical evaluation of that string. For example, if the input string is "7 + (5 * 2)", the return value should be 17.
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
User avatar
A. Fig Lee
Уже с Приветом
Posts: 12072
Joined: 17 Nov 2002 03:41
Location: английская колония

Post by A. Fig Lee »

"польский калькулятор"?
Верить нельзя никому - даже себе. Мне - можно!
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

A. Fig Lee wrote:"польский калькулятор"?


Так нотация в примере не польская.
Надо ваять синтаксический анализатор. "Книга дракона" должна помочь. Можно конечно в лоб решать эту задачу, разбирать скобки посимвольно, итд, но подозреваю что хотят видеть именно синтаксическй анализатор. Долго описывать, кому интересно смотите по поводу теории компиляторов.
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
Nervous
Уже с Приветом
Posts: 7759
Joined: 18 Sep 2001 09:01
Location: RUS.76 -> KOR -> RUS.53 -> US.PA -> US.MD

Post by Nervous »

Strannik223 wrote:
Так нотация в примере не польская.
Надо ваять синтаксический анализатор. "Книга дракона" должна помочь. Можно конечно в лоб решать эту задачу, разбирать скобки посимвольно, итд, но подозреваю что хотят видеть именно синтаксическй анализатор. Долго описывать, кому интересно смотите по поводу теории компиляторов.


Думаю, Странник прав. Есть смысл еще знать что такое "машина конечных состояний" (final state machine) или, как их еще называют - "конечные автоматы".
N.E.R.V.O.U.S.: Networked Electronic Replicant Viable for Observation and Ultimate Sabotage.
ven27
Уже с Приветом
Posts: 5034
Joined: 11 Jan 2003 07:50
Location: ROV -> ICN -> LED -> ICN -> YYZ -> SFO -> ?

Post by ven27 »

Nervous wrote:... "машина конечных состояний" (final state machine) или, как их еще называют - "конечные автоматы".

таки Finite State Machine :wink:
User avatar
Nervous
Уже с Приветом
Posts: 7759
Joined: 18 Sep 2001 09:01
Location: RUS.76 -> KOR -> RUS.53 -> US.PA -> US.MD

Post by Nervous »

ven27 wrote:
Nervous wrote:... "машина конечных состояний" (final state machine) или, как их еще называют - "конечные автоматы".

таки Finite State Machine :wink:


OK! :oops: :D
N.E.R.V.O.U.S.: Networked Electronic Replicant Viable for Observation and Ultimate Sabotage.
111001
Posts: 11
Joined: 04 Apr 2004 01:40

Re: Задача из Амазона

Post by 111001 »

Бродяга wrote:Write a method ...

Раз язык не задан, возьмем любой с eval() ;-)
Например, javascript:

Code: Select all

function reshenie_zadachi(str)
{
 try
 { return eval(str);
 }
 catch(e) { return "Error in expression"; }
}


Интересно также, что они не определили какие формулы допустимы.
Ожидают +-*/ калькулятора на 30 строчек на Java, не иначе.
Html test:

Code: Select all

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function reshenie_zadachi(str)
{ try
  { return eval(str); }
  catch(e) { return "Error in expression"; }
}
function do_calc(form)
{ form.result.value = reshenie_zadachi(form.formula.value);
}
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<FORM name="myform">Formula: <input type="text" size="80" name="formula">
<input type="button" value="  Calculate " onClick="do_calc(this.form)">
<p>Result = <input type="text" name="result" size="80">
</FORM>
</CENTER>
</BODY>
</HTML>

User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

111001: Юмор оценен :mrgreen:
А вы говорите конечные автоматы :lol:
Никакой разрухи нет. (с) Проф. Преображенский.
Mongush
Уже с Приветом
Posts: 446
Joined: 04 Jan 2002 10:01
Location: Irkutsk->Rockville, MD->Dallas, TX

Post by Mongush »

Хе-хе, это пример из Страуструпа.
Да и так ничего сложного там нет, на полчаса-час работы максимум.
User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Post by katit »

У нас в школе на олимпиаде такая была.
Только eval() небыло.

Если писать то получится ничего так. С рекурсией и прочее
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

katit wrote:У нас в школе на олимпиаде такая была.
Только eval() небыло.

Если писать то получится ничего так. С рекурсией и прочее

По-моему даже выражение со скобками разбирается без рекурсии.

Кстати, если язык Java, а у Бродяги именно он, то есть очень лёгкое решение, тербуещее присутсвия JDK (JRE is not enough), а именно сгенерить сырец класса на Java, потом откомпилить это, подгрузить своим ClassLoader'ом, выполнить, а потом убить нафиг ClassLoader вместе со всеми классами, которые он подгрузил :) Сразу на халяву автоматом сработают все допустимые в Java выражения и функции и даже операторы :)
I hated LA
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Да, тут непонятно какого характера задача, прикладная, то есть можно "мошенничать" или тестовая, то есть надо показать что ты умные книжки по компиляторам читал и даже что то помнишь.
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
hooch
Уже с Приветом
Posts: 1169
Joined: 16 Jan 2003 23:23

Post by hooch »

Бродяга
Уже с Приветом
Posts: 16086
Joined: 22 Apr 2003 17:57
Location: Колыбель

Post by Бродяга »

Задача тестовая. Позвонили, прислали мейл. Дали 1 час на работу. Через час перезвонили и сказали давай результат. В общем результат выдал. Нашел хорошее описание алгоритма, по нему написал код.
В общем вначале перевожу обычную строку в postfix а из postfix потом уже считаю результат. Посмотрим что завтра скажут:-) Спросили что я думаю по поводу этого задания. Сказал что оно простое для тех кто умеет пользоваться гуглом или имеет книгу с алгоритмами под рукой, для тех кто занимается кодингом business logic, EJB, Database то это занятие будет тяжёлым. Поэтому считаю что это конкретное задание не показывает то что человек знает. Ну потом были обычные вопросы - что ты хочешь а что нет, сильные и слабые стороны и т.д. Сказали что у них более сотни позиций и людей не хватает. Ездят в канаду за ними. Новые H1 не делают вообще. Трансфер делают и ГК делают. Понравилось то, что звонили по нормальной линии и очень хорошо всё слышал.
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
Yuri Khupchenko
Новичок
Posts: 37
Joined: 27 Apr 2004 15:25
Location: SPb

Post by Yuri Khupchenko »

Чем закончилось-то? Лично мне кажется, что они ожидали увидеть recursive-descent parser.

Return to “Вопросы и новости IT”