LINUX.ORG.RU

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

 , , , ,


9

4

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

Задачка:

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

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

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

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

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

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



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

Да это JS console.log это не логи это просто вывод в консоль как std::cout в c++

romanlinux ★★★
()

Ох все теперь я точно спать))

2 строки 150 символов в месте с переносом строки (1 символ) и 17 символов на вводную фразу без них будет 134

[a,b]='карусель+сельдь'.split('+').map(e=>e.replace(/\s/g,''))
console.log(a.replace(a.split('').filter((e,i)=>b.includes(a.slice(i))).join(''),'')+b)
romanlinux ★★★
()
Последнее исправление: romanlinux (всего исправлений: 3)
Ответ на: комментарий от romanlinux

Я тоже могу, если смешать ввод-вывод с вычислением.

import Data.List
main = getLine >>= \xs -> getLine >>= \ys -> putStrLn (xs ++ drop (last $ findIndices (`isSuffixOf` xs) $ inits ys) ys)
$ wc test.hs
       2      25     137 test.hs

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

Так всмысле?

8 строк…

и 132 символа…. (можно вычесть 17 символов вводной фразы и 7 переносов строк будет 108)

https://imgur.com/a/1kgc7jH

Надо бы еще скорость работы замерить)

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

Перл укладывается в 90 символов разве что без ввода-вывода. А без ввода-вывода на Haskell получается одна строка в 76 символов. И это при том, что Перл изначально заточен на работу со строками. Успокойся уже, нунчаковец.

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

Я так понимаю, мы полагаемся на встроенные функции? Что ж…

Программа: F

Компилировать gcc -DF=‘main(){говнокод}’

Один символ! Ну и где твой перл? То-то же, щенок.

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

Нам не нужно такого счастья как работа за 20 рублей, рофел)0

Да и я вполне себе счастлив с читаемым пайтоном и шустрым растом, зачем мне твоя криптическая некрота, не приносящая ни радости, ни денег - вопрос открытый)0

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

короч сделал в одну строку))

console.log([a,b]='карусель+сельдь'.split('+').map(e=>e.replace(/\s/g,'')),a.replace(a.split('').filter((e,i)=>b.includes(a.slice(i))).join(''),'')+b)

150 символов. 135 если не считать карусель+сельдь

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

Справедливости ради, это не из-за кода ему так мало платят. Ну, не только из-за кода. Загляни вот сюда, например: http://prohorov-andrej.ru/job

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

Окей. Тогда вот так nodejs будет брать из аргументов командной строки и будет 148 символов

console.log([a,b]=process.argv[2].split('+').map(e=>e.replace(/\s/g,'')),a.replace(a.split('').filter((e,i)=>b.includes(a.slice(i))).join(''),'')+b)

запускать так:

node app.js "карусель+сельдь"

и все еще в одну строку)

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

Ну а смысл. у вас там куча функций награмаждённых друг на друга. Тройные! скобки. Зачем это? По символам всё равно никак не 80.

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

Да вывод не корректный. Сорян писал в голове не проверил. Ща подумаю как в одну запилить нормально))

romanlinux ★★★
()

Ладно, уговорили. Мрак, работающий только для двух тесткейсов из ОП. 64 символа, принимает ввод, делает вывод.

$ cat x.py
a,b=input().replace('+',' ').split()
print(a[:a.find(b[:2])]+b)
$ cat x.py | wc
      2       3      64
$ echo "шлакоблок + окунь" | python x.py
шлакоблокунь
$ echo "папа + папаха" | python x.py
папаха
WitcherGeralt ★★
()
Ответ на: комментарий от romanlinux

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

А главное требование — минимальное количество символов — соблюдено.

WitcherGeralt ★★
()

https://arxiv.org/abs/1409.0252

Sometimes debates on programming languages are more religious than scientific. Questions about which language is more succinct or efficient, or makes developers more productive are discussed with fervor, and their answers are too often based on anecdotes and unsubstantiated beliefs. In this study, we use the largely untapped research potential of Rosetta Code, a code repository of solutions to common programming tasks in various languages, to draw a fair and well-founded comparison. Rosetta Code offers a large data set for analysis. Our study is based on 7087 solution programs corresponding to 745 tasks in 8 widely used languages representing the major programming paradigms (procedural: C and Go; object-oriented: C# and Java; functional: F# and Haskell; scripting: Python and Ruby). Our statistical analysis reveals, most notably, that: functional and scripting languages are more concise than procedural and object-oriented languages; C is hard to beat when it comes to raw speed on large inputs, but performance differences over inputs of moderate size are less pronounced and allow even interpreted languages to be competitive; compiled strongly-typed languages, where more defects can be caught at compile time, are less prone to runtime failures than interpreted or weakly-typed languages. We discuss implications of these results for developers, language designers, and educators.

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

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

А ты с перлом проиграл уже раз 6 или 7, я уже сбился.

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

Итак. Нормальные результаты у языков:

PHP, Python, JS

Победитель - Perl

Скорость будите мерить? Perl по скорости был всегда первый.

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

ахаха я знаю я извращенец))

Вот так в одну строку)) и 148 символов))

[a,b]=process.argv[2].split('+').map(e=>e.replace(/\s/g,'')),console.log(a.replace(a.split('').filter((e,i)=>b.includes(a.slice(i))).join(''),'')+b)

https://imgur.com/a/uVDeJF6

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

За самый доступный - берём мой хостинг. Он или вообще бесплатный или 30 руб за 10ГБ. Остальное неограниченно.

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

Perl по скорости был всегда первый.

С конца.

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

берём мой хостинг. Он или вообще бесплатный или 30 руб за 10Г

Это не ваш хостинг.

Остальное неограниченно.

Вообще? А можно 100500 cpu + 100500Tb рамы?

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

PHP - вообще самое прекрасное размещение, никаких тебе приколов;

Python - тут тоже можно разместить - чуть сложнее чем на Перл;

JS - Наверное есть небольшие сложности с выводом. Хотя тоже вполне решаемо.

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