Задача из Амазона
-
- Уже с Приветом
- Posts: 16086
- Joined: 22 Apr 2003 17:57
- Location: Колыбель
Задача из Амазона
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.
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
A. Fig Lee wrote:"польский калькулятор"?
Так нотация в примере не польская.
Надо ваять синтаксический анализатор. "Книга дракона" должна помочь. Можно конечно в лоб решать эту задачу, разбирать скобки посимвольно, итд, но подозреваю что хотят видеть именно синтаксическй анализатор. Долго описывать, кому интересно смотите по поводу теории компиляторов.
Никакой разрухи нет. (с) Проф. Преображенский.
-
- Уже с Приветом
- Posts: 7759
- Joined: 18 Sep 2001 09:01
- Location: RUS.76 -> KOR -> RUS.53 -> US.PA -> US.MD
Strannik223 wrote:
Так нотация в примере не польская.
Надо ваять синтаксический анализатор. "Книга дракона" должна помочь. Можно конечно в лоб решать эту задачу, разбирать скобки посимвольно, итд, но подозреваю что хотят видеть именно синтаксическй анализатор. Долго описывать, кому интересно смотите по поводу теории компиляторов.
Думаю, Странник прав. Есть смысл еще знать что такое "машина конечных состояний" (final state machine) или, как их еще называют - "конечные автоматы".
N.E.R.V.O.U.S.: Networked Electronic Replicant Viable for Observation and Ultimate Sabotage.
-
- Уже с Приветом
- Posts: 5034
- Joined: 11 Jan 2003 07:50
- Location: ROV -> ICN -> LED -> ICN -> YYZ -> SFO -> ?
-
- Уже с Приветом
- Posts: 7759
- Joined: 18 Sep 2001 09:01
- Location: RUS.76 -> KOR -> RUS.53 -> US.PA -> US.MD
-
- Posts: 11
- Joined: 04 Apr 2004 01:40
Re: Задача из Амазона
Бродяга wrote:Write a method ...
Раз язык не задан, возьмем любой с eval()
![Wink ;-)](./images/smilies/icon_wink.gif)
Например, 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>
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
-
- Уже с Приветом
- Posts: 446
- Joined: 04 Jan 2002 10:01
- Location: Irkutsk->Rockville, MD->Dallas, TX
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
-
- Уже с Приветом
- Posts: 3982
- Joined: 13 Jul 2000 09:01
- Location: SVX -> BOS -> BUR -> SJC
katit wrote:У нас в школе на олимпиаде такая была.
Только eval() небыло.
Если писать то получится ничего так. С рекурсией и прочее
По-моему даже выражение со скобками разбирается без рекурсии.
Кстати, если язык Java, а у Бродяги именно он, то есть очень лёгкое решение, тербуещее присутсвия JDK (JRE is not enough), а именно сгенерить сырец класса на Java, потом откомпилить это, подгрузить своим ClassLoader'ом, выполнить, а потом убить нафиг ClassLoader вместе со всеми классами, которые он подгрузил
![Smile :)](./images/smilies/icon_smile.gif)
![Smile :)](./images/smilies/icon_smile.gif)
I hated LA
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
-
- Уже с Приветом
- Posts: 1169
- Joined: 16 Jan 2003 23:23
-
- Уже с Приветом
- Posts: 16086
- Joined: 22 Apr 2003 17:57
- Location: Колыбель
Задача тестовая. Позвонили, прислали мейл. Дали 1 час на работу. Через час перезвонили и сказали давай результат. В общем результат выдал. Нашел хорошее описание алгоритма, по нему написал код.
В общем вначале перевожу обычную строку в postfix а из postfix потом уже считаю результат. Посмотрим что завтра скажут:-) Спросили что я думаю по поводу этого задания. Сказал что оно простое для тех кто умеет пользоваться гуглом или имеет книгу с алгоритмами под рукой, для тех кто занимается кодингом business logic, EJB, Database то это занятие будет тяжёлым. Поэтому считаю что это конкретное задание не показывает то что человек знает. Ну потом были обычные вопросы - что ты хочешь а что нет, сильные и слабые стороны и т.д. Сказали что у них более сотни позиций и людей не хватает. Ездят в канаду за ними. Новые H1 не делают вообще. Трансфер делают и ГК делают. Понравилось то, что звонили по нормальной линии и очень хорошо всё слышал.
В общем вначале перевожу обычную строку в postfix а из postfix потом уже считаю результат. Посмотрим что завтра скажут:-) Спросили что я думаю по поводу этого задания. Сказал что оно простое для тех кто умеет пользоваться гуглом или имеет книгу с алгоритмами под рукой, для тех кто занимается кодингом business logic, EJB, Database то это занятие будет тяжёлым. Поэтому считаю что это конкретное задание не показывает то что человек знает. Ну потом были обычные вопросы - что ты хочешь а что нет, сильные и слабые стороны и т.д. Сказали что у них более сотни позиций и людей не хватает. Ездят в канаду за ними. Новые H1 не делают вообще. Трансфер делают и ГК делают. Понравилось то, что звонили по нормальной линии и очень хорошо всё слышал.
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
-
- Новичок
- Posts: 37
- Joined: 27 Apr 2004 15:25
- Location: SPb