LINUX.ORG.RU

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

 , , , ,


9

4

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

Задачка:

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

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

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

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

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

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



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

Да гольф меня не интересует. Я чемпион мира по всем версиям в нём. Нужны были только синтаксические ништячки. Спасибо за $y.comb.produce(&[~])

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

А почему не так?:

sed -E 's/([^+\s]*?)([^+\s]*)\s*[ +]\s*\2/\1\2/' < 1.txt
шлакоблокунь
форельса
папаха

Вроде тоже срабатывает.

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

Т.е. то, что «размер блока в 1023680 Кб» вчетверо больше всей оперативной памяти в виртуалке вас нимало не смущает? Я ведь вывод free не просто так показывал, наверное.

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

Всё. Превосходство Борна Перла:

#!/usr/bin/perl


open D, 'vxod.txt';
open V, '>vyxod.txt';

while (<D>) {print V if s/([^+\s]*?)([^+\s]*)[\s+]+\2/$1$2/}

ЧТД

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

Скорость я здесь писал неоднократно. Если никто не ответил - значит скорость у их программ - ниже.

Простота. - одна строчка и меньше 100 Байт. - Это всегда хорошо.

Ваше решение гораздо длиннее.

Перл предустановлен на все Линуксы.

Перл позволяет создавать исполняемые файлы.

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

Но сейчас я делаю программу которая будет конвертировать с перла на другие языки - в интернете эта моя тема где то уже есть

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

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

:-)

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

Давай я за джавистов скажу.

Лови извращенца! Вот jshell чтобы на классы строки не тратить

//usr/bin/env jshell -J-Darg="$1" --execution local "$0"; exit $?
String[] str = System.getProperty("arg").split("\\s*\\+\\s*");
System.out.println(java.util.stream.IntStream.iterate(Math.min(str[0].length(), str[1].length()), len -> len - 1).filter(len -> str[0].substring(str[0].length() - len, str[0].length()).equals(str[1].substring(0, len))).mapToObj(len -> System.getProperty("arg") + "=" + str[0] + str[1].substring(len, str[1].length())).findFirst().orElseGet(() -> str[0] + str[1]));
/exit
ya-betmen ★★★★★
()

Та тут даже баш в 140 символов укладывется

while read a;do b=${a%+*};c=${a#*+};i=0;while [ $i -lt ${#b} ] && [[ ! ${c} == ${b:i}* ]];do ((i++));done;echo "$a=${b:0:i}$c";done < input

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

Не, я и портянку могу, для студентов нахаляву.

ya-betmen ★★★★★
()

проверим.
где твоё ядро на пёрле?
как собрать?

darkenshvein ★★★★★
()
perl -COD -aE'$F[1]=~m<.+(??{$F[0]=~/$&$/?!say$`,$_:"(?!)"})>' text

Содержимое файла text:

шлакоблок окунь
карусель  сельдь
папа папаха
спорткар карась
форель рельса

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

Просьба отправлять код в соответствии с новыми требованиями:

Да. И так-как появились разночтения по поводу Вход-выход. Вход выход делаем в виде файлов:

vxod.txt
vyxod.txt
vxod.txt

шлакоблок + окунь
форель + рельса
папа + папаха

Это всё есть на предыдущей странице. Спасибо.

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

Я считал что в регулярках - я номер 1.

Использование регулярных выражений – признак говнокода. Правильно использовать соответствующие инструменты, например парсеры INI/XML/JSON/…

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

Почему поэтому? Потому что говнокод?

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

А что такое на твоём сайте тогда?

  • Опыт php, perl, mySQL - больше 5 лет;
  • JS - 3 года;
  • вёрстка - больше 5 лет;
  • C++, Java, Python - меньше года, под десктоп.

Если ты оставишь только пёрл, о 20 руб\час можешь и не мечтать!

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

Второе приложение верное. Из того, что приложение считает, что ему выделено 100500 гигабайтов памяти, не следует, что на него реально эти 100500 гигов потрачены.

ugoday ★★★★★
()

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

xmikex ★★★★
()
Ответ на: комментарий от perl5_guy
perl -F\\W+ -COD -E'say$F[1]=~s/.+(??{$F[0]!~$&&&"(?!)"})/$F[0]/r' vhod.txt > vyhod.txt

Ладушки. Я думаю что доказал всем кто главный перловик на районе.

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

perl-golf был довольно популярен. Так что считайте, что тут ролевики занимаются исторической реконструкцией.

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

Переходящий приз «работа за 20 рублей в час» переходит perl5_guy. Бурные, продолжительные аплодисменты!

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

Вы не внимательно читали - я взял первое попавшееся задание. За деньги. Ссылка есть на первых страницах

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

задание за деньги? это где учебные задания решать дают за деньги?

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

А все уже осознали что они со своими Супер-пупер языками даже близко к перлу не подойдут. Но я ещё не запускал свою прогу по конвертации - скоро запущу

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

Как по-мне, оно что так, что эдак бессмысленно. Но на людей посмотреть забавно.

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

Я пока проанализировать не смогу. - У меня работа за 90 руб в час. Нужно объединять Эксельные прайсы - из 4 источников и класть их в Друпаловсие Ноды

kompospec
() автор топика
Ответ на: комментарий от perl5_guy
/.+(??{$F[0]!~$&&&"(?!)"})/gm


All the errors detected are listed below, from left to right, as they appear in the pattern.
(? Incomplete group structure
? The preceding token is not quantifiable
) Incomplete group structure

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

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

А что проверять? Пёрл с пхп довели тебя то того, что побираешься на фриланс-помойках, пытаясь решать тупой студентоте лабы на плюсах, фейлишь, пишешь велик-интерпретатор перл-плюсы, опять фейлишь и в итоге бежишь сюда набрасывать, чтобы тебе выкатили готовое решение. То есть после длительной практики с пёрлом и пхп имеем существенную утрату контингентных способностей, фактически инвалидность.

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

??? Я воткнул ваш код в редактор - И этот редактор мне написал это.

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

Всё. Я получил свои 80 руб за 4 часа работы и всё сделал. Клиент просто пищит от восторга.

Ты бы мог насобирать больше, если бы просто побирался возле какого-нибудь ТЦ. А бомжи, которые роются в мусорных баках вообще по сравнению с 20р/час - олигархи.

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

А вот тут редактор говорит что ошибок нет

/(.*)\K\W+(?>\1)/gm

1st Capturing Group (.*)
.
matches any character (except for line terminators)
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
\K resets the starting point of the reported match. Any previously consumed characters are no longer included in the final match
\W
matches any non-word character (equivalent to [^a-zA-Z0-9_])

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

Если это решение - то оно интересно. Вы не могли бы написать его в виде?:

#!/usr/bin/perl


open D, 'vxod.txt';
open V, '>vyxod.txt';

while (<D>) {print V if s/([^+\s]*?)([^+\s]*)[\s+]+\2/$1$2/}


kompospec
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.