LINUX.ORG.RU

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

 , , , ,


9

4

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

Задачка:

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

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

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

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

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

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



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

А никаких граничных пограничных случаев нет

В спецификации — нет. Значит, к ним применяются те же условия.

результирующая строка не может быть больше или равна длине суммы длины слов

Где вы это увидели в спецификации?

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

В спецификации — нет. Значит, к ним применяются те же условия.

Все верно, проверяются с помощью теста для условий 1

Где вы это увидели в спецификации?

получить новое слово, так, чтобы окончание первого совпадало с началом второго, например, шлакоблок + окунь = шлакоблокунь.

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

получить новое слово, так, чтобы окончание первого совпадало с началом второго, например, шлакоблок + окунь = шлакоблокунь.

Где тут слово «длина»?

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

Начало, окончание слова

А в математике, в разделе, где изучают формальные грамматики, слово может быть пустым. Как теперь быть? И да, в условии не сказано, что начало одного слова и конец другого тоже должно быть словом.

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

В мою? Там дальше пример идет из двух слов) Считай пример реализации спецификации.

И? Слова «абба» и «баба» тоже склеивать не надо, раз их нет в примере?

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

Ну как же. В формулировке теста у вас есть слово «длина». В том куске спецификации, который вы привели как обоснование, этого слова нет. Значит, ваш тест не соответствует спецификации. Если вы имели в виду что-то другое, то что именно?

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

Так pcre далеко выходит за рамки конечного автомата. Но по крайней мере тут этим можно управлять. А в случае голой сишечки приходится устраивать закат Солнца вручную.

С другой стороны, при малых N, O(N²) на C может быть быстрее O(N) на перле.

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

А вы видите спецификацию на реализацию теста?

Я вижу ваше описание. Оно не соответствует тому, как вы собираетесь реализовывать тест?

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

Да этих сравнениев раньше пол интернета было. Выводы самые простые. На числодробилке перл сливает. А на обработке строк как правило играют факторы, которые важнее производительности С. В итоге каждой нише своё решение.

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

Ну это к Хаскеллю вопросы

Это к вопросу определения начала и конца слова. У людей оно одно, у вас почему-то некоторое своё.

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

Все просто - по условиям 1 и 2 его нет

Такого не бывает. Программа должна выдать какой-то результат. Это может быть пустая строка, это может быть ошибка, но результат должен быть.

Впрочем, ещё один вариант: программа может зависнуть. Вы это имели в виду?

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

В си 0 это конец строки, но это не соответствует условию 1.

В си 0 – маркер конца строки, нечто другое всё же.

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

Ну вы правы, но ведь в спецификации начало слова и конец слова, а не сравнение слов в хаскелле)

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

И правда, потому что пустота это не начало и конец слова, вы правы я не могу с этим согласиться.

Ну, тогда остаётся только плакать в подушку. Есть общепринятые определения и им нужно следовать. Говорить, что вам не нравятся определения – контрпродуктивно.

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

А «пустая строка» это действительно конец и начало слова, вы уверены?

Пустая строка – конец и начало любого слова, в том числе и пустого.

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

Начало и конец слов пусты?)

У слова не одно начало, внезапно.

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

Это не в спецификации. Это в реальном мире. Мир так устроен: любая программа либо зависает, либо выдаёт результат (который может быть ошибкой). Нет других вариантов.

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

Про пустое начало и конец не пустого слова по подробнее расскажите пожалуйста, новая концепция для меня.

Рассказываю:

$ perl -e 'print "Empty prefix of the word \"word\": \"" . substr("word", 0, 0) . "\"\n"'
Empty prefix of the word "word": ""
Miguel ★★★★★
()
Ответ на: комментарий от demensdeum

Ещё раз: в реальном мире программы НЕ МОГУТ вести себя иначе, чем а) вернуть результат, или б) зависнуть. Это не зависит от спецификации. Это просто всегда так.

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