powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как решить задачу?
42 сообщений из 42, показаны все 2 страниц
Как решить задачу?
    #39108195
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
String s="2-(5-(7-9))"
Необходимо получить арифметический результат
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108201
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108203
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108211
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не используя либы, это вопрос с собеседования
Решение должно быть в лоб
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108225
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTНе используя либы, это вопрос с собеседования
Решение должно быть в лоб
Даже лень было посмотреть что по ссылкам?
https://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngine.html
Since:
1.6
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108228
wst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прямо на собеседовании надо было сидеть городить рекурсивный парсер (см. recursive descent parser) или сортировочную станцию (см. shunting-yard algorithm)??? Больно жестоко, как по мне. То есть ничего сложного (rdp для чисел, скобок и вычитания можно уместить в 20-30 значимых строчек), но только когда никто и ничто не отвлекает.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108300
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wstПрямо на собеседовании надо было сидеть городить рекурсивный парсер (см. recursive descent parser) или сортировочную станцию (см. shunting-yard algorithm)??? Больно жестоко, как по мне. То есть ничего сложного (rdp для чисел, скобок и вычитания можно уместить в 20-30 значимых строчек), но только когда никто и ничто не отвлекает.
Делов-то:
http://cogitolearning.co.uk/?p=565
в дерево разобрать и обойти.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108374
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108420
wst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДелов-то
Это когда в привычной обстановке можно с ходу расписать, что-то вроде expr0: number | '(' expr1 ')'; expr1: expr0 (('+'|'-') expr0)*; и свести все к 2 функциям для вычисления expr-ов и одной для нарезания строки на элементы. А вот после часа дороги и часа отвлеченной болтовни можно и более простые вещи перепутать/позабыть.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108425
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTРешение должно быть в лоб
возможно, это вопрос-проверка на знание о том, что существуют алгоритмы типа https://ru.wikipedia.org/wiki/Алгоритм_сортировочной_станции
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108458
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108460
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108724
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108725
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы.
Не смогла я решить эту задачку на собеседовании, в итоге меня определили в джуниоры и отправили домой )
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108773
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuIT в итоге меня определили в джуниоры и отправили домой

Может оно и к лучшему. Задача была идиотская. Значит, тот кто её задал - идиот и набирает на работу идиотов. И кто его держит на работе идиот. То есть, вся организация идиотская.

Впрочем, есть простое решение, требующее JDK 8: использование встроенного в JDK интерпретатора JavaScript, называемого Nashorn. На версию JDK условия не было? Тогда сгодилось бы. Для прежних версий JDK пришлось бы использовать дополнительную библиотеку с интерпретатором скриптового языка (для JavaScript - например, Rhino), также синтаксис выражения соответствует Groovy.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108782
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MВпрочем, есть простое решение, требующее JDK 8:
Since: 1.6 в JavaDoc ни на что не намекает?
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108810
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MJuIT в итоге меня определили в джуниоры и отправили домой

Может оно и к лучшему. Задача была идиотская. Значит, тот кто её задал - идиот и набирает на работу идиотов. И кто его держит на работе идиот. То есть, вся организация идиотская.

Впрочем, есть простое решение, требующее JDK 8: использование встроенного в JDK интерпретатора JavaScript, называемого Nashorn. На версию JDK условия не было? Тогда сгодилось бы. Для прежних версий JDK пришлось бы использовать дополнительную библиотеку с интерпретатором скриптового языка (для JavaScript - например, Rhino), также синтаксис выражения соответствует Groovy.
Мэрси за поддержку :)
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108924
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MЗадача была идиотская.

Чем же идиотская? Норм задачка. Человек с зачатками понимания алгоритмов и структур данных и помнящий с первого курса про рекурсию должен быть способен выдать хотя бы путь решения. Как правило стопроцентно рабочий код для таких заданий и не требуется.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108943
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я как-то на собеседовании решал примерно такую. Мне сказали, что может быть только * и +.


Решил через String.split

Наверное и здесь есть какие-то ограничения.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108951
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

от до. На первый взгляд только - и скобки только в вычитаемом. :)
Через js можно нарваться на injection. :)

Но быть может им нужен человек, который напишет им калькулятор. :)
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108963
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Арсеньев,

тут посложнее, чем с + и *

Надо как-то находить скобки, внутри которых нет скобок, проводить вычисление и вместо

(какое-то выражение) подставлять в строку результат.

в итоге то, что получилось подавать на вход той же самой функции. Процесс продолжать до того момента, когда скобочек не останется.

ну и после этого если есть минусы, то произвести вычисление
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108966
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя сплит по скобкам....и потом рекурсивный сплит для результатов, где остались скобки. Когда скобок не осталось - сплит по минусам. Думаю до решения тут близко)
...
Рейтинг: 0 / 0
Как решить задачу?
    #39108998
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczSince: 1.6 в JavaDoc ни на что не намекает?

Ни на что. Вообще я не люблю намёки.

Впрочем, я допустил неточность - интерпретатор Rhino был встроенный.
Совместимость между ними неполная: так, для этой задачи Nashorn дал результат -5, а Rhino -5.0.

fixxerЧем же идиотская? Норм задачка. Человек с зачатками понимания алгоритмов и структур данных и помнящий с первого курса про рекурсию должен быть способен выдать хотя бы путь решения. Как правило стопроцентно рабочий код для таких заданий и не требуется.


Нормально идиотская задача, т.к. не имеет отношения к реальности. Какое значение имеет, кто за сколько её решит, если решать не нужно? Если быстро решит, то это не говорит в его пользу - есть немало программистов, которые со страшной скоростью пишут код, который вообще не нужен и даже вредит. Значит, таких там ценят - усердных идиотов.
Как-то я обретался на фирме Г... (такая она и была), там появился топ-менеджер (старший подлиза), который вдруг устроил программистам экзамен, задав именно эту задачу (только язык программирования не оговаривался). Я этим способом и решил (вызвав функцию eval() в JavaScript-е). Зачем изобретать велосипед? Этот субъект не умел программировать (так что идиотская задача видимо передаётся из рук в руки), а вообще качество программирования там было предельно низкое, что подобные начальнички контролировать не могли.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109016
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MНи на что. Вообще я не люблю намёки.

ОК. Говорю прямо. Java 8 для решения задачи не нужна. Достаточно Java 6.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109020
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MНормально идиотская задача, т.к. не имеет отношения к реальности. Какое значение имеет, кто за сколько её решит, если решать не нужно? Если быстро решит, то это не говорит в его пользу - есть немало программистов, которые со страшной скоростью пишут код, который вообще не нужен и даже вредит. Значит, таких там ценят - усердных идиотов.
Подозреваю что от JuIT требовалось просто знания того что в Java существует API для исполнения скриптов. Сомневаюсь что была задача именно написать код.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109100
BlackEric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
import javax.script.*;


public class MainParser {

	private static final String s="2-(5-(7-9))";
	
	public static void main(String[] args) throws ScriptException {
		// TODO Auto-generated method stub

		System.out.println(s);
		
		ScriptEngineManager sem = new ScriptEngineManager();
	    ScriptEngine engine = sem.getEngineByName("javascript");
	    engine.eval("print(" + s + ")");
	    //System.out.println(  );
		
	}

}
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109230
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MМожет оно и к лучшему. Задача была идиотская. Значит, тот кто её задал - идиот и набирает на работу идиотов. И кто его держит на работе идиот. То есть, вся организация идиотская.


Интересная задача чтобы немного пошевелить мозгами (если ее видишь первый раз). Если не первый, или не прогуливал пары получая профильное образование, то вопрос вообще проходной. Ну и плюс некие знания Java - я бы ответил как предложил в первом посте Blazkowicz.
В любом случае, я думаю не требовалось написать готовую программу для перевода и вычисления в постфиксную запись или построения дерева разбора выражения, а можно было бы рассказать "на пальцах", и собеседующих бы устроило.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109286
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно вообще последовательно скобочки раскрывать и заменять минусики на плюсики)
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109293
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин МаркPartisan MМожет оно и к лучшему. Задача была идиотская. Значит, тот кто её задал - идиот и набирает на работу идиотов. И кто его держит на работе идиот. То есть, вся организация идиотская.


Интересная задача чтобы немного пошевелить мозгами (если ее видишь первый раз). Если не первый, или не прогуливал пары получая профильное образование, то вопрос вообще проходной. Ну и плюс некие знания Java - я бы ответил как предложил в первом посте Blazkowicz.
В любом случае, я думаю не требовалось написать готовую программу для перевода и вычисления в постфиксную запись или построения дерева разбора выражения, а можно было бы рассказать "на пальцах", и собеседующих бы устроило.


Так что ж никто не расскажет то тут, на форуме?
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109315
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЛокшин Маркпропущено...


Интересная задача чтобы немного пошевелить мозгами (если ее видишь первый раз). Если не первый, или не прогуливал пары получая профильное образование, то вопрос вообще проходной. Ну и плюс некие знания Java - я бы ответил как предложил в первом посте Blazkowicz.
В любом случае, я думаю не требовалось написать готовую программу для перевода и вычисления в постфиксную запись или построения дерева разбора выражения, а можно было бы рассказать "на пальцах", и собеседующих бы устроило.
Так что ж никто не расскажет то тут, на форуме?
Если честно... я подобные задачи как-то решал в универе и забыл как.

Суть в том что такое выражение (инфиксный класс операций) .
Код: java
1.
String s="2-(5-(7-9))"


трансформируется в ПОЛИЗ (польская инверсная запись) или постфиксные операции
Код: java
1.
2,5,7,9,-,-,-


Скобки при этом исчезают.

И над ней выполняются вычисления таким образом как если-бы ты работал с инженерным
калькулятором типа МК-60. Тоесть сначала кладёшь два операнда в стек потом нажимаешь
кнопку операции. Операция снимает два операнда со стека и кладёт на стек результат.
И т.д. Вобщем покури Вики там достаточно доходчиво всё описано.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109318
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerТак что ж никто не расскажет то тут, на форуме?
Я ссылки привел на оба решения. Что рассказывать?
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109519
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerТак что ж никто не расскажет то тут, на форуме?
Я ссылки привел на оба решения. Что рассказывать?
Я может по себе людей сужу, но всё таки на мой взгляд здоровый человек не напишет на бумажке на память алгоритм дейкстры по трансформации инфиксной записи в постфиксную, а потом еще и парсинг этой записи.

Вот если только парсинг, это реально.

Давайте предположим, что могут быть только скобки и минусы. Мне кажется можно сочинить какой-нить простенький наколеночный алгоритм.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109522
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

ну и ещё, что задача не на знание того, что в джаве есть насхорн, а то, что это алгоритмическая задача.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109548
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажу как человек который много провёл собеседований по Java.

Не напишет.

Синьоры-помидоры, ковыряя в зубах зубочисткой презрительно скажут что
не царское это дело и укажут на ScriptEngine. Мидлы будуту пыхтеть и грысть
этот кактус полтора часа без особого результата. За джунов вообще страшно.
Им грозит глубокая кома.

С точки зрения работодателя - давать такое задание во время собеседования
- безсмысленно дорого. Дорого время собеседующего. Неясны также цели.
Зачем? Что-то очень специфичное? Давать на дом? Но даже при таком подходе
парсер мат-выражений не должен быть самой целью. Цель должна быть другая.

Вобщем как-то так.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109622
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЯ может по себе людей сужу, но всё таки на мой взгляд здоровый человек не напишет на бумажке на память алгоритм дейкстры по трансформации инфиксной записи в постфиксную, а потом еще и парсинг этой записи.

Вот если только парсинг, это реально.

Давайте предположим, что могут быть только скобки и минусы. Мне кажется можно сочинить какой-нить простенький наколеночный алгоритм.
Не могу никак прокоменнтировать. Мы это дотошно делали на лабах в универе, поэтому примерный подход отложился в памяти. Да, готовый код за 10 минут не накатать. Но за 30 с дебагом, можно. Только на интервью обычно этого не требуют. Достаточно объяснить.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109623
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerну и ещё, что задача не на знание того, что в джаве есть насхорн, а то, что это алгоритмическая задача.
Не понял коментария.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109677
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczquestionerну и ещё, что задача не на знание того, что в джаве есть насхорн, а то, что это алгоритмическая задача.
Не понял коментария.
Это прекондишен от меня))
...
Рейтинг: 0 / 0
Как решить задачу?
    #39109683
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerЯ может по себе людей сужу, но всё таки на мой взгляд здоровый человек не напишет на бумажке на память алгоритм дейкстры по трансформации инфиксной записи в постфиксную, а потом еще и парсинг этой записи.

Вот если только парсинг, это реально.

Давайте предположим, что могут быть только скобки и минусы. Мне кажется можно сочинить какой-нить простенький наколеночный алгоритм.
Не могу никак прокоменнтировать. Мы это дотошно делали на лабах в универе, поэтому примерный подход отложился в памяти. Да, готовый код за 10 минут не накатать. Но за 30 с дебагом, можно. Только на интервью обычно этого не требуют. Достаточно объяснить.

Я подозреваю, что Вы закончили универ намного раньше меня) мы это делали курсе на первом-втором...прошло уже лет так 6-7. Я помню, конечно, что такое польская запись, но алгоритмы...неее.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39110926
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не ссорьтесь вы все.

Задача для выпускника. Я вот не помню. Ни польской ни хрена.
Делал бы в лоб - приоритет операций, разбор , рекурсия.

Сложность - разбор скобок. Да и то при решении в лоб не сложно.
Но как сказал Блажкович - время и отладчик. И любая задача решаема. :)
Ну или гугл. Так быстрее.
...
Рейтинг: 0 / 0
Как решить задачу?
    #39111175
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как решить задачу?
    #39111181
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев, сколько времени у тебя заняло решение?
...
Рейтинг: 0 / 0
Как решить задачу?
    #39111939
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

не решал. Прибежали по работе злыдни сказали отчет горит. :(
сейчас попробую. :) Но не скажу.
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Как решить задачу?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]