LINUX.ORG.RU

Говорили что Перл старый, ни на что не способный язык. Проверим?

 , , , ,


9

4

Говорили что Перл старый, ни на что не способный язык. Проверим?

Задачка:

Необходимо для каждой пары слов получить новое слово, так, чтобы окончание первого совпадало с началом второго, например, шлакоблок + окунь = шлакоблокунь. Это слово надо вывести в стандартный поток вывода.Если слова возможно соединить несколькими способами, надо выбрать тот, что обеспечивает максимальную общую часть, например папа + папаха = папаха (а не папапаха). Необходимо написать последнее условие.

Я просто взял практически первое попавшаяся задание.

На Перле программа заняла 5 строк не считая ввода-вывода. С вводом-выводом - 7 строк.

А как у вас? На ваших Супер-пупер языках?

Перемещено xaizek из general

Перемещено hobbit из talks



Последнее исправление: Pinkbyte (всего исправлений: 1)

В принципе 20 рублей в час можно платить просто за удовольствие общения с ТС.

Но тут мы имеем возможность наслаждаться им бесплатно в рамках промо-акции.

wandrien ★★
()
Ответ на: комментарий от wandrien

Это из старых тем пациента. Он подобными вопросами проверяет интеллект своих собеседников.

Зачем Vue? Что в нём есть такого что нельзя сделать на js? (комментарий)

javascript
()
Последнее исправление: javascript (всего исправлений: 1)
Ответ на: комментарий от kompospec

s/[&*\w<>]//g;

  • удаление ненужного с входа. Нерусские буквы удаляются.
kompospec
() автор топика
Ответ на: АЗ не упала. Бабах не будет. от wandrien

Не проходит только icq . Но я тут не виноват. Там вероятно защита какая стоит

??? Там ниже - разжёвана причина. Вы правда это не знали?

kompospec
() автор топика
Последнее исправление: kompospec (всего исправлений: 1)
Ответ на: комментарий от wandrien

К этому вопросу можно было подойти тоньше: abâ + âba (:

Два разных представления одного и того же символа.

anonymous-angler ★☆
()
Последнее исправление: anonymous-angler (всего исправлений: 1)
Ответ на: комментарий от kompospec

Слушайте, ну вас и бомбит… Вы не знали что Перл лучший язык? Повторю - на нём половина Линукса написана

kompospec
() автор топика
Ответ на: комментарий от kompospec

Да мы с тебя рофлим. Ты такую дичь несёшь, что тут даже психиатр без литра не разберётся :’D

anonymous-angler ★☆
()
Ответ на: комментарий от kompospec

Года до 2013-го всё Ядро Яндекса было на Перле.

kompospec
() автор топика
Ответ на: комментарий от javascript

А где визитор? Где хотя бы простенькая фабрика? Непонятный у тебя код, перегруженный. Надо проще.

Legioner ★★★★★
()

Интересно, автор видел хоть раз реальные запросы SQL?

Например, вот в коде приложения кусок где-то 1/5 части запроса:

SELECT
    a.`id`, a.`film_id`, a.`title`, a.`episode`,
    a.`date`, UNIX_TIMESTAMP(a.`date`) AS `timestamp`
FROM `film_video` AS a
INNER JOIN `film` AS f ON a.film_id = f.film_id AND f.tv_series > 2
INNER JOIN (
    SELECT `film_id`, MAX(`date`) as `max_date`
    FROM `film_video`
    WHERE `code` <> ""
    GROUP BY `film_id`, `title`
) AS b ON a.film_id = b.film_id AND (
          a.date <= b.max_date AND
          a.date >= DATE_SUB(b.max_date, INTERVAL 1 DAY)
)
WHERE `code` <> "" AND ('.$filmFilter.')
ORDER BY a.date DESC
wandrien ★★
()
Ответ на: комментарий от kompospec

О! ТС, ты опять на водопой явился!

Повторю - на нём половина Линукса написана

А какая половина? Правая или левая?

Возьмёшься за 20 р. в неделю FreeRTOS переписать на perl? А то на rust она плохо работает, так как это недостаточно хороший язык.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от wandrien

Вы в Друпале с Вьюхами не работали?

Там так приблизительно:

SELECT node_field_data.nid AS nid, DATE_FORMAT((node__field_data_raboty.field_data_raboty_value + INTERVAL 10800 SECOND), ‘%Y%m%d%H%i’) AS node__field_data_raboty_field_data_raboty_value_minute FROM {node_field_data} node_field_data INNER JOIN {node__field_kran} node__field_kran ON node_field_data.nid = node__field_kran.entity_id AND node__field_kran.deleted = ‘0’ AND (node__field_kran.langcode = node_field_data.langcode OR node__field_kran.bundle IN ( ‘zaka’, ‘zakaz_smezhniki’ )) INNER JOIN {node__field_kranovschik} node__field_kranovschik ON node_field_data.nid = node__field_kranovschik.entity_id AND node__field_kranovschik.deleted = ‘0’ AND (node__field_kranovschik.langcode = node_field_data.langcode OR node__field_kranovschik.bundle IN ( ‘zaka’, ‘zakaz_smezhniki’ )) INNER JOIN {node__field_tip_oplaty} node__field_tip_oplaty ON node_field_data.nid = node__field_tip_oplaty.entity_id AND node__field_tip_oplaty.deleted = ‘0’ AND (node__field_tip_oplaty.langcode = node_field_data.langcode OR node__field_tip_oplaty.bundle IN ( ‘zaka’, ‘zakaz_smezhniki’ )) INNER JOIN {node__field_oplata} node__field_oplata ON node_field_data.nid = node__field_oplata.entity_id AND node__field_oplata.deleted = ‘0’ LEFT JOIN {node__field_data_raboty} node__field_data_raboty ON node_field_data.nid = node__field_data_raboty.entity_id AND node__field_data_raboty.deleted = ‘0’ WHERE (((node__field_kran.field_kran_target_id = ‘17’)) AND ((node__field_kranovschik.field_kranovschik_target_id = ‘492’)) AND ((node__field_tip_oplaty.field_tip_oplaty_target_id = ‘4’)) AND ((node__field_oplata.field_oplata_target_id = ‘77’))) AND ((node_field_data.status = ‘1’) AND (node_field_data.type IN (‘zaka’)) AND ((DATE_FORMAT((node__field_data_raboty.field_data_raboty_value + INTERVAL 10800 SECOND), ‘%Y-%m-%d\T%H:%i:%s’) BETWEEN DATE_FORMAT((‘2021-09-30T21:00:00’ + INTERVAL 10800 SECOND), ‘%Y-%m-%d\T%H:%i:%s’) AND DATE_FORMAT((‘2021-10-31T21:00:00’ + INTERVAL 10800 SECOND), ‘%Y-%m-%d\T%H:%i:%s’)))) ORDER BY node__field_data_raboty_field_data_raboty_value_minute DESC LIMIT 30 OFFSET 0

kompospec
() автор топика
Ответ на: комментарий от wandrien

Если докопаться не к чему - неучи докапываются до правописания.

Даже не понимая что в Друпале имена полей создаются автоматически.

То есть сейчас вы докапались до ядра Друпала. - Круто, чё.

kompospec
() автор топика
Ответ на: комментарий от kompospec

Вы предлагаете выучить язык запросов Фреймворка для того чтоб обратится к БД. Не проще выучить язык запросов БД?

А вот в друпале…

Ясно-понятно.

wandrien ★★
()
Ответ на: комментарий от wandrien

Для Веба - не проще. Веб подтягивает с собой регистрацию и работу с Юзерами. - А это и есть Друпал, в конечном счёте.

Вы правда этого не понимаете?

kompospec
() автор топика
Ответ на: комментарий от kompospec

Вот тебе реальная задача.

Есть таблица, в ней около миллиона строк.

В поле name лежат либо одиночные имена или через запятую списки разных имён. Могут быть такие варианты:

имя
имя, имя
имя (1)
имя (2), имя (3)
имя, имя, имя (8)

и т.п.

То есть после имени в скобках (пробелы могут быть, могут не быть) может стоять число. А может не стоять.

Дано «имя», нужно выбрать все строки, где это имя встречается.

Решение должно работать за миллисекунды, а не перебирать весь миллион строк каждый раз. Число в скобках при поиске игнорировать. А если в скобках не число, то значит это часть имени, и его нужно учитывать.

Твоё решение?

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от kompospec

Так это же прекрасно! Раз платное - плати, а затем беги кабанчиком код писать)0

anonymous-angler ★☆
()
Ответ на: комментарий от kompospec

Программирование, к сожалению у нас платное.

Ок, с тебя 20 баксов за моё программирование твоей задачи про шлакоблокуня. Плоти деняк.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)

Завтра же перепишу всё на пёрл, я ведь каждый день на работе такую задачу пишу, только слова меняются, а то на ассемблере неудобно.

А вообще, после такого

Я просто взял практически первое попавшаяся задание.

дальше можно не читать. Как ты можешь что-то заявлять исходя из рандомных данных?

Даже ламерские сравнения Rust и С++ более убедительны.

PhysShell ★★
()

А как у вас?

а у нас зп 2 раза в месяц

vvviperrr ★★★★★
()
Ответ на: комментарий от wandrien

Еще дополню к этой задачке.

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

Решение не должно ломать совместимость с существующим клиентским кодом.

Я эту задачу решил и получил определённое удовольствие, ну и деняк немного тоже.

Вот это реальная задача с прода, а не шлакоблокуни. По-своему красивая своими зарослями легаси.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от kompospec

Переходим к доминированию Перла в качестве языка для приложения.

  • Тут тоже полная победа потому никакие из представленных здесь языков не могут создать исполняемый файл, а Перл может.
kompospec
() автор топика
Ответ на: комментарий от kompospec

Работа с БД, с файловой системой, системными командами - всё это в Перле элементарно.

Этой лёгкости нет в php - что очень жалко. в JS - я тоже такого не видел.

А Питон? Как там с приложениями?

kompospec
() автор топика
Ответ на: комментарий от kompospec

Ты совсем читать не умеешь? Говорили что Перл старый, ни на что не способный язык. Проверим? (комментарий)

// лол, буфер обмена подвёл

Princesska ★★★★
()
Последнее исправление: Princesska (всего исправлений: 1)
Ответ на: комментарий от kompospec

Пока С++-ки спорят про типизацию переменных - мы уже решили все задачи и тратим полученное бабло на Итальянском море.

kompospec
() автор топика

На Перле программа заняла 5 строк

Обоже, jshell на 4 строки, из которых первая //jshell... и последняя /exit...

И да это с вводом и выводом.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)

Весь тред не читал. Давай я за джавистов скажу.

import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class FunStringJoiner {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNextLine()) {
            String arg = scanner.nextLine();

            List<String> words = Stream.of(arg.split("\\+")).map(String::trim).collect(Collectors.toList());
            if (words.size() == 2) {
                String substr = "";
                int len = words.get(0).length();
                for (int pos = len; pos > 0; pos--) {
                    String seq = words.get(0).substring(len - pos, len);
                    if (words.get(1).startsWith(seq)) {
                        substr = seq;
                        break;
                    }
                }
                System.out.printf("%s + %s = %s%s\n", words.get(0), words.get(1), words.get(0), words.get(1).replace(substr, ""));
            }
        }
    }
}
cat test.case| java -jar build/libs/FunStringJoiner.jar
шлакоблок + окунь = шлакоблокунь
папа + папаха = папаха
карусель + сельдь = карусельдь
спорткар + карась = спорткарась
форель + рельса = форельса

ps. java11

bvn13 ★★★★★
()
Последнее исправление: bvn13 (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.