Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions otus-02/src/otus_02/homework/palindrome.clj
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
(ns otus-02.homework.palindrome)
(ns otus-02.homework.palindrome
(:require [clojure.string :as cs]))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это не ошибка, а скорее совет на будущее - одно или дву буквенные алиасы не рекомендуется использовать так как в будущем будет тяжело понять что это значит
в данном случае можно использовать string в качестве алиаса


(defn- bad-char? [c]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в принципе тот же совет что и выше про алиасы, лучше называть переменные и аргументы какими то осмысленными словами. через месяц или два становится очень трудно понять что значит буква c

(boolean (some #{\space \? \,} [c])))

(defn is-palindrome [test-string])
(defn- bad-char-to-nil [c]
(when-not (bad-char? c)
c))
(defn- rm-bad-chars [s]
(apply str (map bad-char-to-nil s)))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

хорошее решение через map
еще мы на втором уроке говорили про clojure.string/replace эта функция здесь хорошо бы подошла

(defn is-palindrome [test-string]
(let [s (cs/lower-case (rm-bad-chars test-string))
rs (cs/reverse s)]
(= s rs)))