|
|
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
String s="2-(5-(7-9))" Необходимо получить арифметический результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 19:22 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Не используя либы, это вопрос с собеседования Решение должно быть в лоб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 19:30 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
JulTНе используя либы, это вопрос с собеседования Решение должно быть в лоб Даже лень было посмотреть что по ссылкам? https://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngine.html Since: 1.6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 19:43 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Прямо на собеседовании надо было сидеть городить рекурсивный парсер (см. recursive descent parser) или сортировочную станцию (см. shunting-yard algorithm)??? Больно жестоко, как по мне. То есть ничего сложного (rdp для чисел, скобок и вычитания можно уместить в 20-30 значимых строчек), но только когда никто и ничто не отвлекает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 19:46 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
wstПрямо на собеседовании надо было сидеть городить рекурсивный парсер (см. recursive descent parser) или сортировочную станцию (см. shunting-yard algorithm)??? Больно жестоко, как по мне. То есть ничего сложного (rdp для чисел, скобок и вычитания можно уместить в 20-30 значимых строчек), но только когда никто и ничто не отвлекает. Делов-то: http://cogitolearning.co.uk/?p=565 в дерево разобрать и обойти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 21:01 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Вот тут неплохо описано http://stackoverflow.com/questions/14320308/how-to-run-javascript-in-java-programming ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 23:01 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczДелов-то Это когда в привычной обстановке можно с ходу расписать, что-то вроде expr0: number | '(' expr1 ')'; expr1: expr0 (('+'|'-') expr0)*; и свести все к 2 функциям для вычисления expr-ов и одной для нарезания строки на элементы. А вот после часа дороги и часа отвлеченной болтовни можно и более простые вещи перепутать/позабыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 02:21 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
JulTРешение должно быть в лоб возможно, это вопрос-проверка на знание о том, что существуют алгоритмы типа https://ru.wikipedia.org/wiki/Алгоритм_сортировочной_станции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 02:55 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
18443434 не обратил внимания ((( Вот еще: http://stackoverflow.com/questions/5085524/regular-expression-for-simple-arithmetic-string ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 06:53 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Не смогла я решить эту задачку на собеседовании, в итоге меня определили в джуниоры и отправили домой ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 11:38 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
JuIT в итоге меня определили в джуниоры и отправили домой Может оно и к лучшему. Задача была идиотская. Значит, тот кто её задал - идиот и набирает на работу идиотов. И кто его держит на работе идиот. То есть, вся организация идиотская. Впрочем, есть простое решение, требующее JDK 8: использование встроенного в JDK интерпретатора JavaScript, называемого Nashorn. На версию JDK условия не было? Тогда сгодилось бы. Для прежних версий JDK пришлось бы использовать дополнительную библиотеку с интерпретатором скриптового языка (для JavaScript - например, Rhino), также синтаксис выражения соответствует Groovy. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 12:01 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Partisan MВпрочем, есть простое решение, требующее JDK 8: Since: 1.6 в JavaDoc ни на что не намекает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 12:06 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Partisan MJuIT в итоге меня определили в джуниоры и отправили домой Может оно и к лучшему. Задача была идиотская. Значит, тот кто её задал - идиот и набирает на работу идиотов. И кто его держит на работе идиот. То есть, вся организация идиотская. Впрочем, есть простое решение, требующее JDK 8: использование встроенного в JDK интерпретатора JavaScript, называемого Nashorn. На версию JDK условия не было? Тогда сгодилось бы. Для прежних версий JDK пришлось бы использовать дополнительную библиотеку с интерпретатором скриптового языка (для JavaScript - например, Rhino), также синтаксис выражения соответствует Groovy. Мэрси за поддержку :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 12:17 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Partisan MЗадача была идиотская. Чем же идиотская? Норм задачка. Человек с зачатками понимания алгоритмов и структур данных и помнящий с первого курса про рекурсию должен быть способен выдать хотя бы путь решения. Как правило стопроцентно рабочий код для таких заданий и не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 13:11 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Я как-то на собеседовании решал примерно такую. Мне сказали, что может быть только * и +. Решил через String.split Наверное и здесь есть какие-то ограничения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 13:21 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
questioner, от до. На первый взгляд только - и скобки только в вычитаемом. :) Через js можно нарваться на injection. :) Но быть может им нужен человек, который напишет им калькулятор. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 13:25 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, тут посложнее, чем с + и * Надо как-то находить скобки, внутри которых нет скобок, проводить вычисление и вместо (какое-то выражение) подставлять в строку результат. в итоге то, что получилось подавать на вход той же самой функции. Процесс продолжать до того момента, когда скобочек не останется. ну и после этого если есть минусы, то произвести вычисление ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 13:38 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
хотя сплит по скобкам....и потом рекурсивный сплит для результатов, где остались скобки. Когда скобок не осталось - сплит по минусам. Думаю до решения тут близко) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 13:41 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczSince: 1.6 в JavaDoc ни на что не намекает? Ни на что. Вообще я не люблю намёки. Впрочем, я допустил неточность - интерпретатор Rhino был встроенный. Совместимость между ними неполная: так, для этой задачи Nashorn дал результат -5, а Rhino -5.0. fixxerЧем же идиотская? Норм задачка. Человек с зачатками понимания алгоритмов и структур данных и помнящий с первого курса про рекурсию должен быть способен выдать хотя бы путь решения. Как правило стопроцентно рабочий код для таких заданий и не требуется. Нормально идиотская задача, т.к. не имеет отношения к реальности. Какое значение имеет, кто за сколько её решит, если решать не нужно? Если быстро решит, то это не говорит в его пользу - есть немало программистов, которые со страшной скоростью пишут код, который вообще не нужен и даже вредит. Значит, таких там ценят - усердных идиотов. Как-то я обретался на фирме Г... (такая она и была), там появился топ-менеджер (старший подлиза), который вдруг устроил программистам экзамен, задав именно эту задачу (только язык программирования не оговаривался). Я этим способом и решил (вызвав функцию eval() в JavaScript-е). Зачем изобретать велосипед? Этот субъект не умел программировать (так что идиотская задача видимо передаётся из рук в руки), а вообще качество программирования там было предельно низкое, что подобные начальнички контролировать не могли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 13:58 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Partisan MНи на что. Вообще я не люблю намёки. ОК. Говорю прямо. Java 8 для решения задачи не нужна. Достаточно Java 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 14:06 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Partisan MНормально идиотская задача, т.к. не имеет отношения к реальности. Какое значение имеет, кто за сколько её решит, если решать не нужно? Если быстро решит, то это не говорит в его пользу - есть немало программистов, которые со страшной скоростью пишут код, который вообще не нужен и даже вредит. Значит, таких там ценят - усердных идиотов. Подозреваю что от JuIT требовалось просто знания того что в Java существует API для исполнения скриптов. Сомневаюсь что была задача именно написать код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 14:08 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 14:59 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Partisan MМожет оно и к лучшему. Задача была идиотская. Значит, тот кто её задал - идиот и набирает на работу идиотов. И кто его держит на работе идиот. То есть, вся организация идиотская. Интересная задача чтобы немного пошевелить мозгами (если ее видишь первый раз). Если не первый, или не прогуливал пары получая профильное образование, то вопрос вообще проходной. Ну и плюс некие знания Java - я бы ответил как предложил в первом посте Blazkowicz. В любом случае, я думаю не требовалось написать готовую программу для перевода и вычисления в постфиксную запись или построения дерева разбора выражения, а можно было бы рассказать "на пальцах", и собеседующих бы устроило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 16:13 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
можно вообще последовательно скобочки раскрывать и заменять минусики на плюсики) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 16:56 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Локшин МаркPartisan MМожет оно и к лучшему. Задача была идиотская. Значит, тот кто её задал - идиот и набирает на работу идиотов. И кто его держит на работе идиот. То есть, вся организация идиотская. Интересная задача чтобы немного пошевелить мозгами (если ее видишь первый раз). Если не первый, или не прогуливал пары получая профильное образование, то вопрос вообще проходной. Ну и плюс некие знания Java - я бы ответил как предложил в первом посте Blazkowicz. В любом случае, я думаю не требовалось написать готовую программу для перевода и вычисления в постфиксную запись или построения дерева разбора выражения, а можно было бы рассказать "на пальцах", и собеседующих бы устроило. Так что ж никто не расскажет то тут, на форуме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 17:08 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
questionerЛокшин Маркпропущено... Интересная задача чтобы немного пошевелить мозгами (если ее видишь первый раз). Если не первый, или не прогуливал пары получая профильное образование, то вопрос вообще проходной. Ну и плюс некие знания Java - я бы ответил как предложил в первом посте Blazkowicz. В любом случае, я думаю не требовалось написать готовую программу для перевода и вычисления в постфиксную запись или построения дерева разбора выражения, а можно было бы рассказать "на пальцах", и собеседующих бы устроило. Так что ж никто не расскажет то тут, на форуме? Если честно... я подобные задачи как-то решал в универе и забыл как. Суть в том что такое выражение (инфиксный класс операций) . Код: java 1. трансформируется в ПОЛИЗ (польская инверсная запись) или постфиксные операции Код: java 1. Скобки при этом исчезают. И над ней выполняются вычисления таким образом как если-бы ты работал с инженерным калькулятором типа МК-60. Тоесть сначала кладёшь два операнда в стек потом нажимаешь кнопку операции. Операция снимает два операнда со стека и кладёт на стек результат. И т.д. Вобщем покури Вики там достаточно доходчиво всё описано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 17:23 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
questionerТак что ж никто не расскажет то тут, на форуме? Я ссылки привел на оба решения. Что рассказывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 17:31 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerТак что ж никто не расскажет то тут, на форуме? Я ссылки привел на оба решения. Что рассказывать? Я может по себе людей сужу, но всё таки на мой взгляд здоровый человек не напишет на бумажке на память алгоритм дейкстры по трансформации инфиксной записи в постфиксную, а потом еще и парсинг этой записи. Вот если только парсинг, это реально. Давайте предположим, что могут быть только скобки и минусы. Мне кажется можно сочинить какой-нить простенький наколеночный алгоритм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 21:24 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ну и ещё, что задача не на знание того, что в джаве есть насхорн, а то, что это алгоритмическая задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 21:32 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Скажу как человек который много провёл собеседований по Java. Не напишет. Синьоры-помидоры, ковыряя в зубах зубочисткой презрительно скажут что не царское это дело и укажут на ScriptEngine. Мидлы будуту пыхтеть и грысть этот кактус полтора часа без особого результата. За джунов вообще страшно. Им грозит глубокая кома. С точки зрения работодателя - давать такое задание во время собеседования - безсмысленно дорого. Дорого время собеседующего. Неясны также цели. Зачем? Что-то очень специфичное? Давать на дом? Но даже при таком подходе парсер мат-выражений не должен быть самой целью. Цель должна быть другая. Вобщем как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 23:17 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
questionerЯ может по себе людей сужу, но всё таки на мой взгляд здоровый человек не напишет на бумажке на память алгоритм дейкстры по трансформации инфиксной записи в постфиксную, а потом еще и парсинг этой записи. Вот если только парсинг, это реально. Давайте предположим, что могут быть только скобки и минусы. Мне кажется можно сочинить какой-нить простенький наколеночный алгоритм. Не могу никак прокоменнтировать. Мы это дотошно делали на лабах в универе, поэтому примерный подход отложился в памяти. Да, готовый код за 10 минут не накатать. Но за 30 с дебагом, можно. Только на интервью обычно этого не требуют. Достаточно объяснить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 09:18 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
questionerну и ещё, что задача не на знание того, что в джаве есть насхорн, а то, что это алгоритмическая задача. Не понял коментария. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 09:19 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestionerну и ещё, что задача не на знание того, что в джаве есть насхорн, а то, что это алгоритмическая задача. Не понял коментария. Это прекондишен от меня)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 13:33 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerЯ может по себе людей сужу, но всё таки на мой взгляд здоровый человек не напишет на бумажке на память алгоритм дейкстры по трансформации инфиксной записи в постфиксную, а потом еще и парсинг этой записи. Вот если только парсинг, это реально. Давайте предположим, что могут быть только скобки и минусы. Мне кажется можно сочинить какой-нить простенький наколеночный алгоритм. Не могу никак прокоменнтировать. Мы это дотошно делали на лабах в универе, поэтому примерный подход отложился в памяти. Да, готовый код за 10 минут не накатать. Но за 30 с дебагом, можно. Только на интервью обычно этого не требуют. Достаточно объяснить. Я подозреваю, что Вы закончили универ намного раньше меня) мы это делали курсе на первом-втором...прошло уже лет так 6-7. Я помню, конечно, что такое польская запись, но алгоритмы...неее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 13:47 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Да не ссорьтесь вы все. Задача для выпускника. Я вот не помню. Ни польской ни хрена. Делал бы в лоб - приоритет операций, разбор , рекурсия. Сложность - разбор скобок. Да и то при решении в лоб не сложно. Но как сказал Блажкович - время и отладчик. И любая задача решаема. :) Ну или гугл. Так быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 13:35 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Reverse Polish Notation : Algorithms « Collections Data Structure « Java http://www.java2s.com/Code/Java/Collections-Data-Structure/ReversePolishNotation.htm http://learnyouahaskell.com/functionally-solving-problems ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 15:58 |
|
||
|
Как решить задачу?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, сколько времени у тебя заняло решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 16:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2124639]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 457ms |

| 0 / 0 |
