|
|
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Можно ли упростить мой код? Задача: -удаляет все гласные буквы, -перед каждой согласной буквой ставит символ ".", -все прописные согласные буквы заменяет на строчные. Гласными буквами считаются буквы "A", "O", "Y", "E", "U", "I", а согласными — все остальные. На вход программе подается ровно одна строка, она должна вернуть результат в виде одной строки, получившейся после обработки. входные данные aBAcAba выходные данные .b.c.b Мой код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 17:49 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Вариант. Возможно не самый короткий но по крайней мере он более-менее поддерживаемый. По крайней мере виден конвейер операций. Если гнаться за компактностью то можно потерять опции debugging и общий смысл. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Лет несколько назад наш форум посетил создатель "ультра-коротких" языков. Сообщество его побило и отвергло. Вот так вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 18:28 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Dmitry56, Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 18:44 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Dmitry56, Компиляция на основе варианта от Usman (добавлен toLowerCase()); вариант от mayton падал когда на входе первая согласная. Не описано что делать с точками на входе - в примере они удаляются. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Опасаюсь regex если честно... мощная штука но опасная (багами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 20:32 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid unique, о каких багах ты говоришь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 21:06 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
mayton, этот тест падает Код: java 1. org.junit.ComparisonFailure: Expected :.b.c.b Actual :b.c.b Что делает regex (поправьте если нужно так как я не спец в регексе, скорее дилетант): Код: java 1. 2. 3. а что нужно было сделать по заданию: Dmitry56 -удаляет все гласные буквы, -перед каждой согласной буквой ставит символ ".", -все прописные согласные буквы заменяет на строчные. Тест упал там где нет гласной перед согласной; замена гласной на . нежелательна, нужно заменять согласную, как сделано в примере от Usman. Можно усложнить задачку и менять на lowercase не все символы а только часть, это будет более интересная задача, именно с применением Java API. Что то мне все больше напоминает topcoder arena , несколько лет назад у нас народ подсел на него, потом успокоился, там была песочница но к сожалению соревнование было по скорости создания решения а не его эффективности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 21:34 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
maytonuid unique, о каких багах ты говоришь? Извини mayton, не сразу понял, наверное вопрос был о багах в целом при применении regex? Часто regex применяется в конфигах для расширения функционала, набьет администратор regex в конфиг, программа отработает, что то не так поменяет с бизнес данными. Regex в конфигах это минное поле. Даже в коде не всегда есть возможность хорошо протестировать и сделать полное покрытие тестами, особенно сложных, развесистыех выражений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 21:48 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid uniquemaytonuid unique, о каких багах ты говоришь? Извини mayton, не сразу понял, наверное вопрос был о багах в целом при применении regex? Часто regex применяется в конфигах для расширения функционала, набьет администратор regex в конфиг, программа отработает, что то не так поменяет с бизнес данными. Regex в конфигах это минное поле. Даже в коде не всегда есть возможность хорошо протестировать и сделать полное покрытие тестами, особенно сложных, развесистыех выражений. 1) Конешно в целом. Мой сорс я написал за 2 минуты и даже не тестил как следует. Собственно он не интересен как объект для улучшения. По поводу возможных багов. Мало кто вкурсе что если вы конфигурируете композитное выражение которое состоит из пользовательского ввода и регулярки то пользовательский ввод нужно эскейпить через Код: java 1. Это одна из самый попсовых причин багов. Альтернативный кейс который был предложен Усманом - неплох но мне не нравится дублирование исходного шаблона "aoyeui" который повторяется аж три раза. Этот код компактен но его сложно поддерживать. Мне больше нравится вариант когда "код обслуживает данные" а не наоборот. 2) По поводу развесистых выражений. КМК есть разумный предел когда 1 регулярку лучше заменить на ковейер из более простых (или даже элементарных фунцкий-предикатов) которые делают последовательные проверки или реплейсменты. Это - по Фаулеру. Функции максимально просты. И их легко тестить. И по ним можно ходить дебаггером. Контр-пример - это написание регулярки которая проверять емейл на корректность. https://habrahabr.ru/post/175375/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 22:02 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
mayton2) По поводу развесистых выражений. КМК есть разумный предел когда 1 регулярку лучше заменить на ковейер из более простых (или даже элементарных фунцкий-предикатов) которые делают последовательные проверки или реплейсменты. Это - по Фаулеру. Функции максимально просты. И их легко тестить. И по ним можно ходить дебаггером. Контр-пример - это написание регулярки которая проверять емейл на корректность. https://habrahabr.ru/post/175375/ Мэйтон, опять пугаете меня ссылками, я человек от сохи, книг почти не читал. Согласен что отдельные специализированные функции (модули) есть благо для надежности и повторного использования кода, но к сожалению, regex не всегда сидит в коде а приходит из конфигов (от пользователей). Прижился он именно в скриптах и конфигах. Второй вопрос - использование разных паттернов под высокой нагрузкой - может оказаться что использование модулей (цепочки) жрет ресурсы (создание и сканирование строки несколько раз ) и красивый правильный подход не эффективен... Уходим в сторону, мое дело маленькое, поправил чуток тестик и пошел спать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 23:00 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
mayton Это - по Фаулеру. Функции максимально просты. И их легко тестить. И по ним можно ходить дебаггером. меня терзают смутные сомнения что еще чуть чуть и перейдем к функциональному программированию. ;-) хорошие уроки были от парней из netflix, как раз по поводу повторного использования фунций и развитию "функционально ориентированного" мышления (в обработке ассинхронных событий). Правда это была не Java, а JS но ведь у нас сейчас есть Scala. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 23:10 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid uniqueСогласен что отдельные специализированные функции (модули) есть благо для надежности и повторного использования кода, но к сожалению, regex не всегда сидит в коде а приходит из конфигов (от пользователей). Прижился он именно в скриптах и конфигах. Я - большой противник наполнять конфиги регулярками. Если есть любой другой механизм - определять бизнес логику - то это всё что угодно кроме регулярок. Регулярки - это необоснованное усложнение кода там, где решение может быть получено более просто. В примере где пользователь просит делать функцию подобную soundex или сворачивает гласные буквы, оставляя эдакое себе "письмо на идиш", я проведу code-review только в том случае когда необходимость регулярок будет мне доказана. Мой собственный пример с регулярками который я привел во втором посте - неудачен да и то я его писал по просьбе автора о минимизации объема кода. Яркий пример подобного овер-проектирования - это язык Perl который положили в гроб так и не проникнувшись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 23:49 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid uniqueменя терзают смутные сомнения что еще чуть чуть и перейдем к функциональному программированию. ;-) хорошие уроки были от парней из netflix, как раз по поводу повторного использования фунций и развитию "функционально ориентированного" мышления (в обработке ассинхронных событий). Правда это была не Java, а JS но ведь у нас сейчас есть Scala. Сомнения совершенно верные. И хотя я сам с ФП - пока "на вы" тоесть не являюсь его регулярным пользователем но тем не менее вижу в нем положительный эффект почти для любой логики. Особенно когда мы делаем применение цепочки фильтров. Например вместо Код: java 1. 2. 3. 4. Используем Код: java 1. на неком гипотетическом ФП языке. И если в верхнем варианте - функция-монолит имеющая повышенный complexity (попробуйте ее покрыть тестами!), то в нижнем варианте у нас несколько примитивных функций каждая очень проста и выполняет узкую задачу. А форма записи с pipeline - достаточно наглядна чтобы не вводить еще одну никому не нужную функцию transform() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2017, 23:56 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid uniqueЧто то мне все больше напоминает topcoder arena , несколько лет назад у нас народ подсел на него, потом успокоился, там была песочница но к сожалению соревнование было по скорости создания решения а не его эффективности. Я - самый далекий человек от Олимпиад, контестеров, хакатонов и топкодеров. Мне органически претит идея очень быстрого кодинга. Я - мыслитель и философ в программировании. А также - воинствующий эстет. И если войду в соревнование - то солью по времени сразу же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2017, 00:17 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Искал вариант преобразования регистра средствами самой регулярки... в Jаве не нашел, но есть в Intellij Idea : Character Description \l Changes the case of the next character to the lower case. \u Changes the case of the next character to the upper case. \L Changes the case of all the subsequent characters up to \E to the lower case. \U Changes the case of all the subsequent characters up to \E to the upper case. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2017, 05:34 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
maytonна неком гипотетическом ФП языке. И если в верхнем варианте - функция-монолит имеющая повышенный complexity (попробуйте ее покрыть тестами!), то в нижнем варианте у нас несколько примитивных функций каждая очень проста и выполняет узкую задачу. А форма записи с pipeline - достаточно наглядна чтобы не вводить еще одну никому не нужную функцию transform() Наглядность хорошая но цепочки хороши при работе с потоками а не пересоздаваемыми массивами (строками в java), для больших массивов это малоэффективно (выше расход памяти и скорость ниже при обработке в цепочке), но для понимания и наглядности/отладки это хорошо. Функциональное программирование (и фильтры в частности) хороши (эффективны) для потоков. Пример того как можно использовать regex на потоках в скала: http://matt.might.net/articles/parsing-with-derivatives/ http://matt.might.net/articles/nonblocking-lexing-toolkit-based-on-regex-derivatives/ Пришлось столкнуться с Аpache Spark недавно (коннекторы к нему нужно делать под кастомный датасорс), в него scala органично вписалась, интерфейс к Спарку есть на Java но выглядит он каракатицей по сравнению со скала API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2017, 16:42 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
UsmanИскал вариант преобразования регистра средствами самой регулярки... в Jаве не нашел, но есть в Intellij Idea : Character Description \l Changes the case of the next character to the lower case. \u Changes the case of the next character to the upper case. \L Changes the case of all the subsequent characters up to \E to the lower case. \U Changes the case of all the subsequent characters up to \E to the upper case. Java похоже не поддерживает эти расширения (можно через матчер ручками делать но красоты не будет). В Java много ограничений в паттерне: Perl constructs not supported by this class: The preprocessing operations \l \u, \L, and \U. https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2017, 16:49 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
КМК здесь суть не том как сделать case-insensitive поиск. А в том что надо заменить заглавные согласные на строчные. И регулярка здесь вообще не нужна. Учитесь смотреть на вещи проще. Без овер-проектирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2017, 22:40 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
maytonКМК здесь суть не том как сделать case-insensitive поиск. А в том что надо заменить заглавные согласные на строчные. И регулярка здесь вообще не нужна. Учитесь смотреть на вещи проще. Без овер-проектирования. Это мы в сторону отвлекались. Вот пример с потоковым АПИ из Java 8 (без regex): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. или так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2017, 23:52 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Давайте сделаем альтернативный вариант. Без использования сложных структур данных типа HashSet и функций высшего порядка. Простой минимализм. Я считаю что данную задачу можно решить через FSM. И нам достаточно только строковых операций над 1 символом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 02:01 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
maytonДавайте сделаем альтернативный вариант. Без использования сложных структур данных типа HashSet и функций высшего порядка. Простой минимализм. Я считаю что данную задачу можно решить через FSM. И нам достаточно только строковых операций над 1 символом. Зачем state machine то сюда тащить? Можно чуть укоротить изначальный вариант то автора топика: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 02:26 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid unique, давайте еще меньше. Без String-API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 10:28 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
maytonuid unique, давайте еще меньше. Без String-API. Можно и так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. или так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. или так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 11:37 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid unique, я немного не это имел в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 12:34 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Давай вернемся к заданию Код: java 1. 2. 3. 4. Обращаю внимание на то что автор ничего не говорит про строковый тип данных. (На самом деле я щас играю постановкой - но пускай будет так). Поэтому возможно нас устроит работа с потоками. Допустим будет System.in куда идет входной поток символов. А результат будет на System.out. Я с одной стороны усложняю API (Нельзя юзать String) а с другой стороны - снимаю все лимиты на размер. Теперь можно на вход подать строку больше чем 2 Гига-символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 13:08 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
maytonДавай вернемся к заданию Код: java 1. 2. 3. 4. Обращаю внимание на то что автор ничего не говорит про строковый тип данных. (На самом деле я щас играю постановкой - но пускай будет так). Поэтому возможно нас устроит работа с потоками. Допустим будет System.in куда идет входной поток символов. А результат будет на System.out. Я с одной стороны усложняю API (Нельзя юзать String) а с другой стороны - снимаю все лимиты на размер. Теперь можно на вход подать строку больше чем 2 Гига-символов. Можно что то подобное слепить Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но внутри используется массив так что чанки нельзя использовать (строка до нажатия Enter длинее чем максимальная длина массива в Java (2 гига, мах положительное значение int), везде используются буффера на массивах. Можно читать нажатия клавишь на клавиатуре и переключить терминал в символьный режим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 13:58 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid unique Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Отлично. Только многобукв получилось. Я-бы сделал все-таки toLowerCase(). Кстати если по условию мы работаем с Ansi то формула toLowerCase очень простая. Проверка условия и арифметика с кодами символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 14:49 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
mayton Теперь можно на вход подать строку больше чем 2 Гига-символов. уточнение - внутри строки живет массив, они длинее чем Integer MAX_VALUE не бывают. Можно подать несколько строк в сумме длинее 2 гигов. Вообще этот лимит напрягает, множество библиотек (не только массивы в Java) используют адресацию 32 бит / 2, приходится либо в лонг снаружи заворачивать адрес либо 2 int инспользовать (сегмент и смещение в сегменте); буквально полгода назад наткнулся на такое ограничение в одном проекте (количество объектов больше 2 миллиардов а библиотека использовала инт для подсчета и адресации). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 14:50 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 15:04 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Usman, VowelFilter - слишком генерализованный термин. И гугл слишком много находит. Ты хоть подскажи откуда взял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 15:30 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
mayton, maytonТы хоть подскажи откуда взял?Интрига дня! Ничего особенного, всего лишь самописный фильтр: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 15:35 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
UsmanНичего особенного, всего лишь самописный фильтр: Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 15:42 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
maytonДавай вернемся к заданию Код: java 1. 2. 3. 4. ... (На самом деле я щас играю постановкой - но пускай будет так). ... имхо, первая "игра с постановкой" возникла с того момента, как взялись удаления точек из входного потока. Это чистый домысел. Про удаление точек, требование их одиночности или любое их преобразование ничего не сказано, сказано только, что точка "ставится" перед гласным символом. Что можно читать и так - точка ставится, если ее не было в предыдущем символе и не ставится, если предыдущий символ точка, а сама по точка преобразованию не подлежит. Тогда возникает память (о предыдущем символе) и состояние в алгоритме обработки. Это тоже вариант домысла. Или читать так - всегда перед согласной добавляется точка, независимо от ее предшествующего возможного присутствия Так или иначе - в составе описания алгоритма никаких явных действий по очищению потока от символов, отличных от гласных нет. Значит такой очистки не должно быть в этом разрабатываемом алгоритме. Если входному потоку требуется дополнительная фильтрация, она должна быть: а) произведена другим, отдельным алгоритмом б) произойти это должно до начала применения разрабатываемого алгоритма. (Как сортировка происходит отдельно и до применения алгоритма двоичного поиска). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 15:43 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Usman Код: java 1. System.in определился как java.io.BufferedInputStream Usman Код: java 1. По началу хотел его переопределить, но почему-то он не используется (в данном случае). Usman Код: java 1. Код: java 1. Это первоначальный вариант, с расчетом на то, что (возможно) пользователь uid unique (и в т.ч. другие) совместными усилиями допилят его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 15:57 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Я как себе понимаю смысл. Даже не из задачи а из модульного теста. Код: java 1. 2. 3. 4. На вход приходит фонема. Голосовое сообщение. Или машинно-обработанный звук. Алгоритм работает по аналогу soundex, или metaphone, позволяя идентифицировать фразу по набору согласных букв. Поэтому "mayton" => ".m.t.n" И последняя гласная или точка (если-бы она существовала) удаляется т.к. не играет роли. Я-бы еще удалил и первую точку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 16:00 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
UsmanЭто первоначальный вариант, с расчетом на то, что (возможно) пользователь uid unique (и в т.ч. другие) совместными усилиями допилят его. Масса вариантов возможна если подтянуть библиотеки апаче коммонс, гуаву, от гугла. Если символы ASCII строго и используется только Java API то ничего не мешает работать как в С и смещением делаеть toLowerCase(). Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 17:42 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid uniqueUsmanЭто первоначальный вариант, с расчетом на то, что (возможно) пользователь uid unique (и в т.ч. другие) совместными усилиями допилят его. Масса вариантов возможна если подтянуть библиотеки апаче коммонс, гуаву, от гугла. Если символы ASCII строго и используется только Java API то ничего не мешает работать как в С и смещением делаеть toLowerCase(). Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Пардон, так обычно декомпилированный код выглядит (обфускированый еще хуже). Надо 'u', 'a'.. поставить вместо кодов. Еще можно свитч использовать Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Можно конечно дальше крутить если не надоело ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 17:49 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid unique, Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 18:10 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Usmanuid unique, Спасибо И вам спасибо. Надо иногда что нибудь вытаскивать из простого но не очевидного и сделать отбор решений заодно и мнениями обменяться 1) По красоте кода с точки зрения ООП, расширяемости и модификации. Использовать кроме Java API широко распространенные библиотеки. 2) Скорости работы (нагруженный код, красота не важна, нужна скорость). Кракозябры в С стиле. 3) Минимизации расхода памяти (большие объемы данных - скажем так, по сто мегов / гигабайту данных в чанке (массиве). Недавно напоролся на высокий расход памяти при обработке больших byte[] вложений (50 100 мегов) в веб сервисе (старая версия apache axis), оказалось там в процессе парсинга создавалось до 12 копий строки (стринг буфферы, toChars() в общем копирования постоянные буферов по цепочке). Память съедалась моментально (1 гиг памяти требовался на обработку одного запроса!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 18:34 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
uid uniqueНадо иногда что нибудь вытаскивать из простого но не очевидного и сделать отбор решений заодно и мнениями обменятьсяпремного плюсую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 19:19 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
Да. Почему я настаивал на том что это FSM. Потому что считал что последовательность гласных заменяется на точку. Например "maori" => "m.r" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2017, 22:04 |
|
||
|
Строки java. Упрощение программы.
|
|||
|---|---|---|---|
|
#18+
maytonДа. Почему я настаивал на том что это FSM. Потому что считал что последовательность гласных заменяется на точку. Например "maori" => "m.r" Имело бы смысл подумать о FSM если бы была вложенность с разными правилами парсинга: "(maori){aaaa}(meeet)" => "m.r|AAA|m.t" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2017, 21:26 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123234]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 417ms |

| 0 / 0 |
