Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HW04 - домашнее задание. #12

Open
wants to merge 20 commits into
base: main
Choose a base branch
from

Conversation

medvedevvu
Copy link

Доброго времени суток - сумел написать scramblies , а как делать задание magic_square - не знаю, не могу составить алгоритм даже на императивном языке, не то что на clojure. Пытался смотреть ролики на ютьюбе чтоб хоть понять как действовать - не помогло, как выполнить такие-же действия программно пока не могу себе представить ( а хотелось бы ).

(defn is-palindrome [test-string])
(defn is-palindrome [test-string]
(let [normal-str (string/upper-case (string/replace test-string #"[^a-zA-Z0-9]" ""))
invert-str (string/reverse normal-str)] (= normal-str invert-str)))
Copy link
Contributor

Choose a reason for hiding this comment

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

"тело" в let лучше переносить на новую строчку.

normal-string (-> test-string
(string/replace #"[\s\W]" "")
string/lower-case)]
(= (set alphabet) (set normal-string))))
Copy link
Contributor

Choose a reason for hiding this comment

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

Раз уж с множествами работаете, то можно было бы проверить, что пересечение (set alphabet) и (set test-string) равно (set alphabet) - это и есть признак того, что все буквы были использованы :) В этом случае никакие дополнительные действия над входной строкой не нужны.

nil)
(let [letters-set (set (mapv str letters))
word-set (set (mapv str word))]
(= (clojure.set/intersection letters-set word-set) word-set)))
Copy link
Contributor

@astynax astynax Nov 27, 2023

Choose a reason for hiding this comment

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

А вот здесь использование множеств не сработает. Потому что, приводя строку к множеству, вы теряете информацию о количестве повторов букв. А чтобы составить word из letters может потребовать более одного экземпляра той или иной буквы.

Вы точно запускали тесты? Среди тестовых примеров точно есть такой, в которому буквы в собираемом слове повторяются.

@astynax
Copy link
Contributor

astynax commented Nov 27, 2023

В будущем, пожалуйста, делайте по одному pull request на домашнее задание. Сейчас PR называется "HW04", но содержит код к другим урокам.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants