AD0DE412
блин может это я туплю но не как не могу понять что хотя то
может кто распарсит это задние?
Вообще, для любой задачи ты применяешь следующий алгоритм:
Перед решением дано: то-то и то-то
Нужно получить: то-то и то-то
Так ты формируешь предусловие и постусловие алгоритма. Предусловие нужно максимально ослабить по деталям в нём, а постусловие нужно максимально усилить по деталям в нём.
Например:
Допустим, у тебя сначала в задаче сформулировано так “дан текст на русском, а нужно получить этот текст прописными буквами”. Ты делишь эту задачу на предусловие и постусловие.
Предусловие
Постусловие
Получить: текст прописными буквами
Сначала ослабляешь предусловие
Дано: текст на каком-то языке
Ещё дальше ослабляешь предусловие
Вроде достаточно ослабил, хотя дальше можно ослабить до вообще любой строки, хоть до бинарных данных. Так и сделаем.
Дано: строка с какими-то данными
Предусловие ослаблено максимально, дальше можно переходить к работе с постусловием.
Дальше усиливаешь постусловие
Получить: текст с русскими прописными буквами
У нас поменялось предусловие и понятие “текст” видоизменилось
Получить: исходную строку с русскими буквами, переведёнными в прописные
В итоге у тебя получилось
Дано: строка с какими-то данными
Получить: исходную строку с русскими буквами, переведёнными в прописные
Тут получилось максимально слабое предусловие и максимально сильное постусловие.
Вот теперь ты можешь взять предусловие и постусловие и, объединив их в одно предложение, придумать через это предложение имя алгоритму, сократив всё предложение до пары-тройки слов.
Поступает строка с какими-то данными и получается исходная строка с русскими буквами, переведёнными в прописные.
->
переводит русские буквы в прописные
Дальше из декларативной формы, которая отвечает на вопрос "что
делает функция?“ , мы переводим имя функции в императивную форму, которая отвечает на вопрос ”что
сделать функции?"
переводит русские буквы в прописные
->
перевести русские буквы в прописные
Дальше переводим это на английский язык
перевести русские буквы в прописные
->
capitalize_cyrillic_letters
Так у тебя задача “дан текст на русском, а нужно получить этот текст прописными буквами” превратилась в функцию
capitalize_cyrillic_letters(string) -> string
Естественно, когда ты это
умеешь делать, это происходит за несколько секунд всё. А когда ты не умеешь этого делать, то ты тупишь и не можешь сообразить, что вообще придумать и как это назвать, потому что придумать можно много чего и назвать это можно кучей всяких способов.
Дальше твоя задача
AD0DE412
Составить программу, которая позволяет найти произведение цифр некратных трем четырехзначного числа (3 балла).
Когда мы умеем всё это делать, мы просто ищем, что дано и что получить. Всё это быстро в голове разворачивается и генерируется имя функции.
Что дано? Четырёхзначное число.
Что получить? Произведение цифр исходного числа, каждое из которых не кратно трём.
Имя функции:
digits_notdiv3_multiply(number) -> number
tags: precondition postcondition