Conversation
|
|
||
| (defn is-palindrome | ||
| [test-string] | ||
| (as-> test-string p |
There was a problem hiding this comment.
Хороший подход. решение верное 👍
Вы заметили что переменная p всё время выступает в качестве последнего аргумента? Можно воспользоваться ->> макросом! он как раз помещает результат в нужное место
|
|
||
| (defn is-pangram | ||
| [test-string] | ||
| (as-> test-string p |
There was a problem hiding this comment.
как и в примере с палиндромом можно брать ->>
| [test-string] | ||
| (as-> test-string p | ||
| (re-seq #"[\w+]" p) | ||
| (string/join "" p) |
There was a problem hiding this comment.
такой вопрос - а зачем джойнить список обратно в строку? списки и вектора можно сравнивать напрямую
| (string/lower-case p) | ||
| (re-seq #"[\w+]" p) | ||
| (set p) | ||
| (string/join "" p) |
There was a problem hiding this comment.
тут джойн в строку тоже выглядит как лишняя операция
| (defn combinations | ||
| "Ищем все возможные комбинации потомков в сторке с учетом порядка следования букв" | ||
| [letters] | ||
| (loop [result nil |
There was a problem hiding this comment.
вот тут не совсем понятка задумка. зачем тут loop? в теле нет вызова recur значит итерации не будет. вместо этого используется рекурсия
| (if (empty? rest-result) | ||
| #{result} | ||
| (let [current (first rest-result) | ||
| next-result (conj result current) |
| (defn delete-not-repeat-letter | ||
| "Удаляем не повторяющиеся буквы в двух строках" | ||
| [first-string second-string] | ||
| (filterv identity |
There was a problem hiding this comment.
filter identity обычно можно заменить на вызов функции remove
| s2-not-repeat (delete-not-repeat-letter s2 s1)] | ||
| (reduce max | ||
| (map count | ||
| (some-> (intersection (combinations s1-not-repeat) (combinations s2-not-repeat))))))) |
There was a problem hiding this comment.
а для чего используется some-> ? кажется лишним
No description provided.