LINUX.ORG.RU

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

 , , , ,


9

4

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

Задачка:

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

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

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

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

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

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



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

Щас бы крутизну мерять количеством строк

xDShot ★★★★★
()

Офигеть, 9 страниц борьбы поехавшего ТСа с такими же регистрантами.

moonmadness
()
Ответ на: комментарий от Princesska

...в любом случае, в очках было гораздо спокойнее. Это были суперхроматические опасностезащитные солнечные очки Жужанта 200, разработанные специально, чтобы помочь человеку выработать разумное отношение к опасности. При малейшем намеке на неприятность очки становились непроницаемо-черными, тем самым лишая владельца возможности увидеть что-либо, что может его потревожить.

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

Популярность старичков без явной или с маленькой нишей падает.

Сами ниши растут. Сейчас на питоне решают кучу задач, которые раньше просто никак не решали. Поэтому у «старичков» падение, хотя по факту в своих нишах они могут еще десятилетия прочно сидеть.

А вот перл практически вымер. В каком-то очевидном легаси только живёт.

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

Ещё есть группа в Телеге с Серча. Но там гомосеки одни собрались. Я у них - как бог. Они мои слова повторяют и пр.

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

Учите регулярки - и будет вам счастье.

А наиболее удобный язык для Регулярок - это Перл.

kompospec
() автор топика
import Data.List

joinPref s1 s2 = noPref s1 ++ s2
    where noPref [] = []
          noPref (c:s) | (c:s) `isPrefixOf` s2 = []
                       | otherwise = c : noPref s
                       
solution s = joinPref s1 (tail s2)
    where (s1, s2) = break (=='+') s

Само решение 4 строчки + 2 строчки на нелепое разделение по плюсу.

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

Waterlaz ★★★★★
()

perl сливает даже жабоподобному шарпу, получается?

List<string> strings = Console.ReadLine().Split('+').Select(s => s.Trim()).ToList();
var counter = 0;
for (int i = 1; i <= strings.Min(s=>s.Length); i++)
    if(strings[0].Substring(strings[0].Length-i)==strings[1].Substring(0, i))
        counter = i;
Console.WriteLine("{0}{1}", strings[0], strings[1].Substring(counter));
Ford_Focus ★★★★★
()

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

Дай угадаю: получилось неудобоваримое «чукча-только-писатель» УГ?

seiken ★★★★★
()

Ненавижу, когда дистростроители пишут свои утилиты на питоне или перле5 (магея), вместо какой-нибудь gtk/qt/c++ gui тулзы (которая максимум кушала 10мб) они создают нечто что меньше 60/80мб никак не может.

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

Ну я не про Си. Я как раз под всякие нейросети и т.п.

Мда, у питона отвратительный синтаксис, но он с нами надолго. Даже JS был бы лучше. Или Ruby.

wandrien ★★
()
Ответ на: комментарий от javascript
[a, b] = process.argv[2].split(/\s?\+\s?/)
for (w = b; ; w = w.slice(0, -1))
    if (a.endsWith(w)) return console.log(a + b.slice(w.length))
static_lab ★★★★★
()
Ответ на: комментарий от seiken
#!/usr/bin/perl
 
$_= "шлакоблок + окунь";
#$_= "папа + папаха";

($u1,$u2) = split/[+\s]+/;

for(split(//,$u2)){
  $v .= $_;
  if ($u1 =~ /$v$/) {$v1=$v}  
  }

$u2 =~ s/$v1//;

print "$u1$u2";

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

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

Нейросети — это круто, но питон там — высокоуровневый интерфейс, библиотеки всё равно пишутся на чём-то нормальном.

Даже JS был бы лучше

Да, жс таки получше.

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

Ну согласитесь что красота… - Лепотаааа:

#!/usr/bin/perl
 
$_= "шлакоблок + окунь";# Исходная строка
#$_= "папа + папаха";

($u1,$u2) = split/[+\s]+/; #Разбиваем исходную строку на 2 слова

for(split(//,$u2)){ #Цикл по буквам второго слова
  $v .= $_;
  if ($u1 =~ /$v$/) {$v1=$v}  #Если есть совпадение с концом первого слова - запоминаем
  }

$u2 =~ s/$v1//; #Выкидываем общее из 2 слова

print "$u1$u2"; #Выход

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

На yoba lisp решение в одну строчку:

(yoba6)

7 символов.

fulmar_lor
()
Ответ на: комментарий от fernandos

Блин, я хочу ЯП, в котором:

  • Стандартная библиотека такая крутая и продуманная как в Ruby и построена на принципах ООП, а не на лапше из случайных функций.
  • Менеджер виртуальных окружений как rvm для Ruby.
  • Сторонних библиотек море как в Python.
  • Синтаксис можно Си-подобный как в JS, но лишь бы без сраных синтаксических отступов питона!
  • Не было семантических багов с автоконверсией типов как в JS или в PHP, и вообще автоконверсии не было. (В Python и Ruby всё ок.)
  • Не было семантического бага как в Ruby с лямбдами, когда наплодили «блоков», Proc-ов, лямбд и черта лысого вместо одной ясной абстракции.
  • Еще желательна опциональная возможность самопроверяющегося синтаксиса, чтобы можно было писать не только скобочки { ... }, но и if ... end if, for ... end for, чтобы при разборе запутанного кода видеть структуру.

В общем, слишком много я хочу от XXI века. :-(

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

построена на принципах ООП

В общем, слишком много я хочу от XXI века.

Боюсь, ты застрял в двадцатом. Хотя Scala довольно близка к твоему идеалу.

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

а и под «нетехническую» тема не подходит, вполне себе техническая.

как это «техническая», если тема коммерческая…

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

Стандартная библиотека такая крутая и продуманная как в Ruby и построена на принципах ООП, а не на лапше из случайных функций.

+100500, смотришь на стандартную библиотеку пхп и прямо грустно. Ладно, хоть СПЛ развивается.

было семантических багов с автоконверсией типов как в JS или в PHP

В пхп для этого есть строгие типы. Почти всегда спасают.

Еще желательна опциональная возможность самопроверяющегося синтаксиса, чтобы можно было писать не только скобочки { … }, но и if … end if, for … end for, чтобы при разборе запутанного кода видеть структуру.

В пхп есть, лучше бы не было.

В общем, слишком много я хочу от XXI века. :-(

Вы — человек умный, можете и склепать такой ЯП, он, возможно, даже станет популярным.

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

c# :D

  • именно rvm нет, но поставить несколько sdk разом и переключаться между ними можно
  • библиотек конечно же меньше, но их качество в среднем выше
  • вместо endif и endfor блоки кода заключают в #region RegionName и #endregion

если нужна именно скриптота, есть dotnet-script

есть еще котлин и ява, но я за них пояснить не смогу

Даже JS был бы лучше

не, уж лучше бидон

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

Колесо это шовинистическое изобретение мужчин для угнетения женщин! Каждый имеет право на свои колёса любой формы или их отсутствие!

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

Пока вы тут на каменных колесах катаетесь, я воюю с типичным куском кода на питоне. =)

  1. Драйвер на питоне, стартующий сервис, перед запуском сервиса не проверяет занят ли порт.
  2. Сам сервис на джаве, если порт занят, просто виснет, вместо того, чтобы завершить работу.
  3. Драйвер на питоне на делает финализацию, чтобы убить сервис при завершении работы, так что при следующем запуске — см. пункт 1.
wandrien ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.