Рубрика «Лисп» - 2

Потому что незачем. Во-первых, все уже написано и не раз. Во-вторых, штатный sort в общем случае работает не хуже. В-третьих, в моду входят задачки, требующие не столько умения пользоваться сортировкой, сколько обходиться вообще без нее. Взять, к примеру, вот эту с собеседования в Microsoft.

1. Анаграммы

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

Очевидное решение — отсортировать сами слова, потом отсортировать массив, пройтись по нему и посчитать количество слов с самоподобными соседями.

На CL это можно написать так:

(defvar *words* (list "thore" "ganamar" "notanagram" "anagram" "other"))

((lambda (words) 
    (loop for (a b c) in         
        (mapcar #'list words (append '("") words) (append '("" "") words))
        count (or (equal a b) (equal b c))))
    (sort (mapcar (lambda (one-word) (sort one-word #'char-lessp)) *words*) #'string-lessp))

Читать полностью »

в 20:54, , рубрики: Лисп, метки:

Прошло ровно два года с момента публикации на Хабре статьи про HomeLisp. Та статья, которую запостил мой сын, вызвала довольно бурное обсуждение и яростные нападки определенной части аудитории.
Что же произошло за эти два года с проектом?
Спешу «обрадовать» недоброжелателей: проект не заброшен и потихоньку развивается. 09.02.2012 разработчик выложил на сайт homelisp.ru последнюю версию пакета 1.13.4. Далее будет рассказано, чем она отличается от предыдущей (той, которуюе «клевали» два года назад).Самое важное отличие — переменные стали лексическими (представьте, разработчик знает, что такое лексическая переменная, замыкание,Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js