Дедка бабка репка сказка решение


0

Как решить пример дедка+бабка+репка=сказка­, заменив буквы цифрами?

В примере — криптарифме

ДЕДКА+БАБКА+РЕПКА=СК­<wbr />АЗКА

замените буквы цифрами, так чтобы одинаковым буквам соответствовали одинаковые цифры и математическое равенство было верным.

1 ответ:



2



0

Записываем в столбик

и замечаем что последняя буква это буква А

для последнего разряда получаем А+А+А=3*А=А

это возможно только если А=0

для предпоследнего разряда получаем К+К+К=К

Это возможно только если К=5 (5+5+5=3*5=15) единица переносится в новый разряд

Для разряда тысяч получаем:

Е+А+Е=А (Е+0+Е=2*Е=0) Е не может равняться 5 (потому что К=5)

учитывая что 2*Е четное число и возможен перенос (числа 2) из предыдущего разряда 2*Е+2=10 тогда получаем для 2*Е=8 ; Е=4

буквы Д,Б,Р могут иметь разные значения из оставшихся цифр.

В итоге получим несколько решений:

  1. Д=7; Е=4; К=5; А=0; Б=9; Р=8; П=6; С=2; З=3 (74750+90950+84650=2­<wbr />50350)
  2. Д=8; Е=4; К=5; А=0; Б=9; Р=7; П=3; С=2; З=1 (84850+90950+74350=2­<wbr />50150)
  3. Д=9; Е=4; К=5; А=0; Б=7; Р=8; П=6; С=2; З=3 (94950+70750+84650=2­<wbr />50350)
  4. Д=9; Е=4; К=5; А=0; Б=8; Р=7; П=3; С=2; З=1 (94950+80850+74350=2­<wbr />50150)

Читайте также

Решаем составляя наборы допустимых значений для каждого разряда и затем записываем получившиеся решения примера:

РОЗА+РОЗА+РОЗА+ВАЗ­<wbr />А=БУКЕТ

Используются все цифры и получается большое разнообразие вариантов, можно выбрать решение практически на любой вкус.

  1. 2084+2084+2084+9484=­<wbr />15736 Р=2; О=0; З=8; А=4; В=9; Б=1; У=5; К=7; Е=3; Т=6
  2. 2385+2385+2385+9585=­<wbr />16740 Р=2; О=3; З=8; А=5; В=9; Б=1; У=6; К=7; Е=4; Т=0
  3. 2945+2945+2945+7545=­<wbr />16380 Р=2; О=9; З=4; А=5; В=7; Б=1; У=6; К=3; Е=8; Т=0
  4. 3927+3927+3927+4727=­<wbr />16508 Р=3; О=9; З=2; А=7; В=4; Б=1; У=6; К=5; Е=0; Т=8
  5. 3942+3942+3942+5242=­<wbr />17068 Р=3; О=9; З=4; А=2; В=5; Б=1; У=7; К=0; Е=6; Т=8
  6. 4073+4073+4073+6373=­<wbr />18592 Р=4; О=0; З=7; А=3; В=6; Б=1; У=8; К=5; Е=9; Т=2
  7. 4592+4592+4592+3292=­<wbr />17068 Р=4; О=5; З=9; А=2; В=3; Б=1; У=7; К=0; Е=6; Т=8
  8. 4819+4819+4819+5919=­<wbr />20376 Р=4; О=8; З=1; А=9; В=5; Б=2; У=0; К=3; Е=7; Т=6
  9. 5319+5319+5319+4919=­<wbr />20876 Р=5; О=3; З=1; А=9; В=4; Б=2; У=0; К=8; Е=7; Т=6
  10. 5796+5796+5796+3696=­<wbr />21084 Р=5; О=7; З=9; А=6; В=3; Б=2; У=1; К=0; Е=8; Т=4
  11. 5874+5874+5874+3474=­<wbr />21096 Р=5; О=8; З=7; А=4; В=3; Б=2; У=1; К=0; Е=9; Т=6
  12. 7409+7409+7409+5909=­<wbr />28136 Р=7; О=4; З=0; А=9; В=5; Б=2; У=8; К=1; Е=3; Т=6
  13. 7452+7452+7452+9252=­<wbr />31608 Р=7; О=4; З=5; А=2; В=9; Б=3; У=1; К=6; Е=0; Т=8
  14. 8504+8504+8504+7404=­<wbr />32916 Р=8; О=5; З=0; А=4; В=7; Б=3; У=2; К=9; Е=1; Т=6
  15. 8509+8509+8509+1909=­<wbr />27436 Р=8; О=5; З=0; А=9; В=1; Б=2; У=7; К=4; Е=3; Т=6
  16. 8704+8704+8704+3404=­<wbr />29516 Р=8; О=7; З=0; А=4; В=3; Б=2; У=9; К=5; Е=1; Т=6
  17. 8915+8915+8915+7515=­<wbr />34260 Р=8; О=9; З=1; А=5; В=7; Б=3; У=4; К=2; Е=6; Т=0
  18. 9418+9418+9418+6818=­<wbr />35072 Р=9; О=4; З=1; А=8; В=6; Б=3; У=5; К=0; Е=7; Т=2
  19. 9506+9506+9506+8606=­<wbr />37124 Р=9; О=5; З=0; А=6; В=8; Б=3; У=7; К=1; Е=2; Т=4
  20. 9762+9762+9762+1262=­<wbr />30548 Р=9; О=7; З=6; А=2; В=1; Б=3; У=0; К=5; Е=4; Т=8

Ребус «ДРАМА» + «ДРАМА» = «ТЕАТР» решаем так.

В словах «ДРАМА» и «ТЕАТР» по 5 (пять) букв. Значит цифры надо подобрать так, чтобы при сложении «Д» не было переноса десятков и добавления нового старшего ряда.

Оба слова имеют одинаковые буквы «А» и «Р», соответственно это должны быть одинаковые цифры вместо букв.

Пробуем искать подходящие цифры для ребуса: «ДРАМА» + «ДРАМА» = «ТЕАТР».

1) «А» + «А» = «Р» и «А» + «А» = «А» невозможно.

Здесь при сложении «А» должно получится двухзначное число, чтобы перенести единицу.

«А» + «А» должно быть равно цифре от 5 до 9.

Значит: «А» + «А» + 1= 10 + «А»

«А» + «А» — «А» = 10 — 1

«А» = 9

2) Следовательно: «А» + «А» + 18, «Р» = 8 (и перенос единицы).

3) Третья буква «А» при сложении даст перенос единицы, поэтому:

«Р» + «Р» + 1 = 8 + 8 + 1 = 17

Тогда «Е» равна 7 (и перенос единицы).

4) Буква «М» должна дать перенос единицы, поэтому там предполагаемая цифра от 5 до 9.

Мы уже знаем, что цифры 7, 8, и 9 заняты. Значит: 5 или 6.

При «М» равном 5 + 1 (перенос единицы),

получилось бы: 5 + 5 + 1, что «Т» равно 1, но это невозможно.

Потому что «Д» + «Д» + 1 (перенос единицы) не может быть равно 1.

Выяснили, что «М» равна 6 (и перенос единицы).

5) Легко находим оставшиеся цифры, вместо букв: «Д» = 1 и «Т» = 3.

Получилось:

«Д» = 1, «Р» = 8, «А» = 9, «М» = 6, «А» = 9.

«Т» = 3, «Е» = 7, «А» = 9, «Т» = 3, «Р» = 8.

Правильно составить такой пример: 18969 + 18969 = 3 7938

Решаем ребус «ГОРА» + «ОГОНЬ» = «ВУЛКАН», подставляя цифры вместо букв, так:

«ГОРА» слово из 4-рёх букв,

«ОГОНЬ» слово из 5-ти букв,

«ВУЛКАН»слово из 6-ти букв.

Есть повторяющиеся буквы «Г», «О», «А», Н», следовательно будут повторяющиеся цифры.

10 разных букв, значит используем цифры от 0 до 9.

Подставляем цифры вместо букв: «ГОРА» + «ОГОНЬ» = «ВУЛКАН».

1) Чтобы, путём сложения четырёхзначного и пятизначного чисел, получить шестизначное число,

буква «О» должна равняться 9, а сумма «Г» + «Г» должна быть двухзначным числом,

чтобы перенести единицу и получить 9 + 1 = 10.

2) Следовательно «У» = 0, а «В» = 1.

3) Буква «К» = «О» + «О» = 9 + 9 = 18. Пишем «К» = 8 и переносим 1.

4) Знаем, что сумма «Г» + «Г», это двухзначное число.

Значит выбираем из цифр 5, 6, 7.

Буква «Г» не будет 5, так как «Л» = «Г» + «Г» + 1 = 5 + 5 + 1 = 11, а цифра 1 уже занята.

Если «Г» = 6, то «Л» = «Г» + «Г» + 1 = 6 + 6 + 1 = 13, тогда «Л» = 3 и переносим 1.

Остались цифры: 2, 4, 5, 7 и буквы «Р», «А», «Н», «Ь».

5) «А» + «Ь» = «Н»

«Р» + «Н» = «А»

Путём подбора, получаем «А» = 7, «Ь» = 5.

«Н» = 7 + 5 = 12, значит «Н» = 2 и переносим 1.

Осталась последняя цифра: «Р» = 4.

«А» = 4 + 2 + 1 = 7

Подставляем цифры и проверяем:

«Г» = 6, «О» = 9, «Р» = 4, «А» = 7.

«О» = 9, «Г» = 6, «О» = 9, «Н» = 2, «Ь» = 5.

«В» = 1, «У» = 0, «Л» = 3, «К» = 8, «А» = 7, «Н» = 2.

6.947 + 96.925 = 103.872 — Ответ получился верный.

Все цифры от 0 до 9 задействовать не получится, потому что в выражении используется всего 6 различных букв, значит может быть использовано только 6 цифр.

Решением криптарифма

КНИГА+КНИГА+КНИГА=НАУКА

будет

К=2

Н=8

И=3

Г=7

А=5

У=1

а после расшифрвки выражение примет вид

28375+28375+28375=85125

Верное решение 85679 + 85679 = 171358.

Поскольку тут нет варианта, когда при сложении двух букв получается она же, то сложно определить, где изначально находится 5.

Поэтому стоит начинать с самого начала.

Можно сразу предположить, что С=1, поскольку при сложении получаем слово из шести букв.

После этого можно предположить, что А=5, поскольку после сложения мы получаем 1, а она не может быть результатом суммы, значит, она просто съехала с предыдущего сложения.

Перейдем к букве О. После сложения двух таких букв мы получаем 5. Поскольку результатом суммы может быть только четное число, значит, единица пришла из предыдущего сложения, а чистая сумма — 4. А О=2. Но тогда не сходится. В+В=О. Мы уже знаем, что после сложения пятерок сносится единица. И число должно быть нечетным. Тогда предполагаем, что О=7.

Возвращаемся к В. В=В+1= 17. А значит, В=8.

Отсюда — Н=9, это крайние цифры, иначе быть не может, ведь нам надо снести единицы.

Г=6, ее я уже подобрала по оставшимся цифрам. А Т=3, результат суммы и снесенной единицы.

 

Доброго здоровья всем!
Помогите пожалуйста решить детскую задачку по математике с помощью Эксель.
Когда-то  в школе в виде дополнительного задания на дом дали следующую задачу:
УДАР+УДАР =ДРАКА.
Надо вместо букв подставить цифры, чтобы выражение было верно. (Одна буква=одна цифра). Да и на олимпиадах такие задачи были в средних классах. Первый раз я её долго делал (типа перебором). Позже понял, что такие задачи решаются за несколько минут путем логических рассуждений. Наверно, чтобы  решить её при помощи Эксель надо гораздо больше времени (Мне так кажется). Как это сделать при помощи формул вообще не представляю (в формулах не силен). Макросом можно попробовать, но никогда такие задачи не решал. Обычно берем данные с листа, что-то делаем с ними и выгружаем на лист. Очень хотелось бы посмотреть, как это сделать в Эксель.
Заранее благодарен за предложенные варианты (Формула или макрос без использования всяких надстроек)

P.S. Для разнообразия и проверки универсальности решения КИС+КСИ=ИСК

Изменено: Евгений Смирнов15.01.2022 15:30:03
(Исправил ошибку в последней строке)

 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

#2

15.01.2022 11:10:54

Можно решить через «Поиск решения», но считает не очень быстро: 8126 + 8126 = 16252
Удар.xlsx (11.41 КБ)

Цитата
Евгений Смирнов написал: КИС+КСИ=ИКС

Скорее всего записано с ошибкой, т.к. С+И=С, только при И=0, но ноль не может стоять в ИКС первым разрядом

 

Тимофеев

Пользователь

Сообщений: 1174
Регистрация: 01.09.2020

ИСК

Прикрепленные файлы

  • ИСК.PNG (219.06 КБ)

 

MCH Да последнее выражение с ошибкой =ИСК ( Ну более 40 лет прошло подзабыл к сожалению не всё помню со школы)
Ваш файл глянул но пока не понял сейчас некогда разбираться. В принципе наверно лучше это как-то кодом сделать чем поиском решения в принципе комп и методом подбора может сделать. Главное правильно условия проверки прописать

 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

«Поиск решения» долго считает и не всегда находит решение, можно сделать полный перебор на VBA

 

MCH Ну я вот пока не представляю как полный перебор в VBA сделать

Изменено: Евгений Смирнов15.01.2022 11:30:24

 

Тимофеев

Пользователь

Сообщений: 1174
Регистрация: 01.09.2020

#7

15.01.2022 13:11:58

Решение математических буквенно-числовых ребусов в Excel.
(Криптоарифметическая задача)

Код
Для удара (каникулярная задача) можно так (2Удара=Драка):
=ИНДЕКС(СТРОКА(1000:9999);
ПОИСКПОЗ(ИСТИНА;2*СТРОКА(1000:9999)=--(ПСТР(СТРОКА(1000:9999);2;1)&ПСТР(СТРОКА(1000:9999);4;1)&
ПСТР(СТРОКА(1000:9999);3;1)&A10&ПСТР(СТРОКА(1000:9999);3;1));0))

для 3 буквенных так же формирование 3-ех вспомогательных массивов, но тут попроще буквы все повторяются:
КИС: =СТРОКА(100:999)
КСИ: =ПСТР(СТРОКА(100:999);1;1)&ПСТР(СТРОКА(100:999);3;1)&ПСТР(СТРОКА(100:999);2;1)
ИСК: =ПСТР(СТРОКА(100:999);2;1)&ПСТР(СТРОКА(100:999);3;1)&ПСТР(СТРОКА(100:999);1;1)
в 3-ем ищем сумму первых 2-ух: =СТРОКА(100:999)--(ПСТР(СТРОКА(100:999);1;1)&ПСТР(СТРОКА(100:999);3;1)&ПСТР(СТРОКА(100:999);2;1))

Прикрепленные файлы

  • Пример.xlsx (10.73 КБ)

Изменено: Тимофеев15.01.2022 14:10:47

 

Тимофеев классно. Я даже предположить не мог, что кто-то напишет формулу, ждал решение макросом. Теперь мне с ней месяц разбираться.

P.S. Не скучайте через месяц вернусь. Пошел разбираться с формулой

Изменено: Евгений Смирнов15.01.2022 14:18:01

 

БМВ

Модератор

Сообщений: 20830
Регистрация: 28.12.2016

Excel 2013, 2016

Мне не очень нравится вариант провеки исползуемый в №7 но всеж модифицируем чтоб небыло доп столбцов  и ячеек.
=SUM(IFERROR(MMULT(ROW(1000:9999)*(2*ROW(1000:9999)=—(MID(ROW(1000:9999);2;1)&MID(ROW(1000:9999);4;1)&MID(ROW(1000:9999);3;1)&COLUMN(A:J)-1&MID(ROW(1000:9999);3;1)));ROW(1:10)^0);))

Изменено: БМВ15.01.2022 16:06:26

По вопросам из тем форума, личку не читаю.

 

Прошу прощения, но вчера не все сообщения посмотрел внимательно (Времени не было). Сегодня исправляюсь.
Тимофеев Вы просто умница и формулу написали и с карандашом можете решить Браво!!!.  В способностях БМВ я уже давно не сомневаюсь. Обе формулы рабочие. Использование подбора параметра для решения наверно можно, но скорее всего надо еще какие формулы добавлять. Только целевая формула это мало. Раз формулы от Тимофеева и БМВ практически мгновенно выдают результат, то и другие методы при правильном наборе входных параметров и условий должны сразу давать результат.
Еще раз благодарю всех кто откликнулся и потратил своё драгоценное время на эту тему.

 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

#11

16.01.2022 09:30:50

Решение на VBA под конкретную задачу:

Код
Sub main()
    Dim u, d, a, r, k
    For u = 5 To 9
        d = 1
        For r = 2 To 9
            If r <> u Then
                a = r * 2 Mod 10
                If a <> u And a <> r Then
                    For Each k In Array(0, 2, 3, 4, 5, 6, 7, 8, 9)
                        If k <> u And k <> a And k <> r Then
                            If (u * 1000 + d * 100 + a * 10 + r) * 2 = d * 10000 + r * 1000 + a * 100 + k * 10 + a Then
                                MsgBox u & d & a & r & " + " & u & d & a & r & " = " & d & r & a & k & a
                                Exit Sub
                            End If
                        End If
                    Next k
                End If
            End If
        Next r
    Next u
End Sub

Для общей задачи можно перебрать все размещения из 10 по 5 и прорешать каждый вариант, количество вариантов не очень большое (10!/5 ! = 30240)

 

MCH Здравствуйте. Вы видимо настойчивый все-таки написали макрос, не пожалели время. Мне проще с макросом, с ним точно разберусь. По формулам не тяну до БМВ и Тимофеева.
Спасибо огромное за помощь и мое сэкономленное время.

PS С кодом разобрался быстро. В принципе несложно. Просто никогда не видел такого. Там только небольшой недочет. Присвоение значения переменной d надо сразу писать после объявления переменных (зачем 5 раз гонять в цикле)

Изменено: Евгений Смирнов16.01.2022 14:55:14

 

Светлый

Пользователь

Сообщений: 487
Регистрация: 07.03.2019

#13

16.01.2022 17:18:51

Упрощённая формула массива (не универсальная):

Код
=МАКС(СТРОКА(5000:9999)*(ПСТР(СТРОКА(5000:9999)*2;5;1)=ПСТР(СТРОКА(5000:9999);3;1))*(ПСТР(СТРОКА(5000:9999)*2;3;1)=ПСТР(СТРОКА(5000:9999);3;1))*(ПСТР(СТРОКА(5000:9999)*2;2;1)=ПСТР(СТРОКА(5000:9999);4;1))*(ПСТР(СТРОКА(5000:9999)*2;1;1)=ПСТР(СТРОКА(5000:9999);2;1)))
 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

#14

16.01.2022 18:52:04

Универсальный способ, подходящий для любого подобного ребуса
АТАКА + УДАР + УДАР = НОКАУТ
93989 + 7492 + 7492 = 108973

Перебираем все размещения из 10 по 8, проверяем на правильность отдельной функцией (здесь как раз можно настроить любую проверку, под любой ребус)
если есть решение — выводим результат
С поиском решения справляется за пару секунд

Код
'АТАКА + УДАР + УДАР = НОКАУТ

Sub mainSet()
    Dim n As Long, m As Long, i As Long, txt As String, a() As Long

    n = 10
    m = 8
    ReDim a(1 To m) As Long
    For i = 1 To m: a(i) = i: Next i
    Do
        txt = CheckWords(a(1) - 1, a(2) - 1, a(3) - 1, a(4) - 1, a(5) - 1, a(6) - 1, a(7) - 1, a(8) - 1)
        If txt <> "" Then
            Debug.Print txt
            MsgBox txt
            Exit Do
        End If
    Loop While NextSet(a(), n, m)
End Sub

Function CheckWords(a As Long, t As Long, k As Long, u As Long, d As Long, r As Long, n As Long, o As Long) As String
    If a = 0 Or u = 0 Or n = 0 Then Exit Function
    If a * 10101 + t * 1000 + k * 10 + (u * 1000 + d * 100 + a * 10 + r) * 2 = _
        n * 100000 + o * 10000 + k * 1000 + a * 100 + u * 10 + t Then _
        CheckWords = a & t & a & k & a & " + " & u & d & a & r & " + " & u & d & a & r & " = " & n & o & k & a & u & t
End Function

Function NextPerm(a() As Long, n As Long) As Boolean  'следующая перестановка в лексикографическом порядке
    Dim i As Long, k As Long, t As Long, tmp As Long
    For k = n - 1 To 1 Step -1
        If a(k) < a(k + 1) Then Exit For
    Next k
    If k Then
        For i = n To k + 1 Step -1
            If a(k) < a(i) Then tmp = a(k): a(k) = a(i): a(i) = tmp: Exit For
        Next i
        NextPerm = True
    End If
    t = n
    For i = k + 1 To (n + k)  2
        tmp = a(i): a(i) = a(t): a(t) = tmp
        t = t - 1
    Next i
End Function

Function NextSet(a() As Long, n As Long, m As Long) As Boolean 'следующее размещение
    Dim b() As Long, c() As Boolean, i As Long, j As Long
    ReDim b(1 To n) As Long, c(1 To n) As Boolean
    For i = 1 To m
        b(i) = a(i)
        c(a(i)) = True
    Next i
    For j = n To 1 Step -1
        If Not c(j) Then
            b(i) = j
            i = i + 1
        End If
    Next j
    NextSet = NextPerm(b, n)
    For i = 1 To m
        a(i) = b(i)
    Next i
End Function
 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

Еще варианты, решенные данным способом:
ВЕТКА + ВЕТКА = ДЕРЕВО
74235 + 74235 = 148470

ДЕДКА + БАБКА + РЕПКА = СКАЗКА
74750 + 90950 + 84650 = 250350

КОРОВА + ТРАВА + ДОЯРКА = МОЛОКО
140498 + 60898 + 542018 = 743414
540498 + 60898 + 142058 = 743454

 

Здравствуйте Светлый  Спасибо за отклик. Насколько я понял у вас немного урезан диапазон перебора значений конкретно для этой задачи. Когда писал тему думал будет куча макросов, а оказалось наоборот макрос только MCH пишет, а формул уже 3. Хотя я больше склоняюсь к решению макросом, с ними мне проще.

 

MCH Здравствуйте. Классно!!! Спасибо. Меня совсем лишили возможности, что-то написать самому. Кстати первый макрос очень быстро работает. Я так и не смог замерить время, показывает одни нули после запятой. Формулы все таки чуток заметно, что считают. Поэтому для этой задачи все-таки лучше решение макросом. Сейчас попробовал с карандашом одно выражение решить, за 5 минут не получилось. Давно уже не решал. Вообщем разобрал выражение
ДЕДКА + БАБКА + РЕПКА = СКАЗКА
Здесь не единственное решение есть ещё (Возможно какое-то пропустил)
74750+80850+94650=250250
84850+70750+94650=250250
Исходя из этого может не стоит останавливать цикл, а сохранить первое решение и продолжить поиск и вывести все решения, тогда можно использовать макрос для написания таких ребусов с единственным решением.
С последним вашим макросом пока еще не разбирался.

 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

#18

17.01.2022 08:28:36

Цитата
написал:
84850+70750+94650=250250

«С»<>»З»

Цитата
написал:
Здесь не единственное решение есть ещё (Возможно какое-то пропустил)

4 решения для задачи: ДЕДКА + БАБКА + РЕПКА = СКАЗКА
74750 + 90950 + 84650 = 250350
84850 + 90950 + 74350 = 250150
94950 + 70750 + 84650 = 250350
94950 + 80850 + 74350 = 250150

 

MCH Последний макрос все решения выводит? Я сам еще не разбирался.

 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

#20

17.01.2022 09:01:41

Цитата
Евгений Смирнов написал:
MCH Последний макрос все решения выводит?

В такой интерпретации (сделал перестановки 10 цифр, т.к. используется 9 цифр, убрал перебор размещений), выводит все варианты

Код
Sub main()
    Const n As Long = 10
    Dim i As Long, a() As Long, tmr As Single
    ReDim a(1 To n) As Long
    
    tmr = Timer
    For i = 1 To n: a(i) = i - 1: Next i
    Do
        CheckWords a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8), a(9)
    Loop While NextPerm(a(), n)
    Debug.Print Timer - tmr
End Sub

Sub CheckWords(d As Long, e As Long, k As Long, a As Long, b As Long, r As Long, p As Long, s As Long, z As Long)
    If d = 0 Or b = 0 Or r = 0 Or s = 0 Then Exit Sub
    If d * 10000 + e * 1000 + d * 100 + k * 10 + a + _
       b * 10000 + a * 1000 + b * 100 + k * 10 + a + _
       r * 10000 + e * 1000 + p * 100 + k * 10 + a = _
       s * 100000 + k * 10000 + a * 1000 + z * 100 + k * 10 + a Then _
        Debug.Print d & e & d & k & a & " + " & b & a & b & k & a & " + " & r & e & p & k & a & " = " & s & k & a & z & k & a
End Sub

Function NextPerm(a() As Long, n As Long) As Boolean  'следующая перестановка в лексикографическом порядке
    Dim i As Long, k As Long, t As Long, tmp As Long
    For k = n - 1 To 1 Step -1
        If a(k) < a(k + 1) Then Exit For
    Next k
    If k Then
        For i = n To k + 1 Step -1
            If a(k) < a(i) Then tmp = a(k): a(k) = a(i): a(i) = tmp: Exit For
        Next i
        NextPerm = True
    End If
    t = n
    For i = k + 1 To (n + k)  2
        tmp = a(i): a(i) = a(t): a(t) = tmp
        t = t - 1
    Next i
End Function

Перебор всех перестановок — 10! (3,6 млн комбинаций) — 3 секунды
Если нужен перебор размещений (если используется менее 9 цифр) — см. предыдущую реализацию, можно сократить количество комбинаций для перебора

Изменено: MCH17.01.2022 09:08:11

 

MCH Спасибо огромное!!! На пару дней вы меня загрузили.  С этим макросом сходу не могу разобраться первый был простой. Но я упертый, буду разбираться до полной победы.

 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

#22

17.01.2022 12:05:24

Полный перебор всех комбинаций
УДАР + УДАР = ДРАКА
8126 + 8126 = 16252
0,3 секунды

Скрытый текст

 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

#23

17.01.2022 13:16:50

ОТВЕТ + ОЧЕНЬ = ПРОСТ:
16476 + 18720 = 35196
18478 + 16720 = 35198
21651 + 27580 = 49231
24384 + 26890 = 51274
26386 + 24890 = 51276
27657 + 21580 = 49237
27937 + 28310 = 56247
28938 + 27310 = 56248
32582 + 34810 = 67392
34214 + 35170 = 69384
34584 + 32810 = 67394
35125 + 39260 = 74385
35215 + 34170 = 69385
39129 + 35260 = 74389
42132 + 45360 = 87492
42312 + 47150 = 89462
43763 + 48650 = 92413
45135 + 42360 = 87495
47317 + 42150 = 89467
48768 + 43650 = 92418

Скрытый текст

 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

#24

17.01.2022 13:25:09

НИТКА + НИТКА = ТКАНЬ
15306 + 15306 = 30612

Скрытый текст

 

БМВ

Модератор

Сообщений: 20830
Регистрация: 28.12.2016

Excel 2013, 2016

Off
Михаил сел на коНьбинаторику , теперь его долго от туда долго не снять будет.   :D

По вопросам из тем форума, личку не читаю.

 

MCH

Пользователь

Сообщений: 3870
Регистрация: 22.12.2012

#26

17.01.2022 14:23:22

Цитата
БМВ написал:
сел на коНьбинаторику

Я другим не запрещаю на нее садиться, пусть тоже едут

Цитата
Евгений Смирнов написал:
С этим макросом сходу не могу разобраться

Чтобы легче было разобраться — немного про комбинаторику на VBA:

http://www.excelworld.ru/forum/3-36449-1

 

Евгений Смирнов

Пользователь

Сообщений: 539
Регистрация: 18.02.2021

#27

23.01.2022 04:54:53

MCH Спасибо за ссылку. Файл очень помог разобраться. Правда пришлось почитать про комбинаторику, перемещения, сочетания, размещения.(Восполнить пробел из-за пропущенных лекций). Можно считать, что обучение прошло успешно. Выкладываю домашнее задание для разнообразия решений. Правда по скорости это не лучшее решение. Оказывается в этих макросах сильно влияет на скорость тип переменных. К сожалению в моем коде переменные Zx нельзя объявить типом Long.

Код
Sub mainForEach() 'УДАР+УДАР=ДРАКА
Dim Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, Z9, tmr!: tmr = Timer
a1 = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
For Each Z1 In a1
    a2 = Filter(a1, Z1, 0, 1)
    For Each Z2 In a2
        a3 = Filter(a2, Z2, 0, 1)
        For Each Z3 In a3
            a4 = Filter(a3, Z3, 0, 1)
            For Each Z4 In a4
                a5 = Filter(a4, Z4, 0, 1)
                For Each Z5 In a5
If (Z1 * 1000 + Z2 * 100 + Z3 * 10 + Z4) * 2 = Z2 * 10000 + Z4 * 1000 + Z3 * 100 + Z5 * 10 + Z3 Then
Debug.Print Z1 & Z2 & Z3 & Z4 & " + " & Z1 & Z2 & Z3 & Z4 & " = " & Z2 & Z4 & Z3 & Z5 & Z3
Debug.Print FormatNumber(Timer - tmr, 4)
Exit Sub
End If
                Next Z5
            Next Z4
        Next Z3
    Next Z2
Next Z1
'Debug.Print FormatNumber(Timer - tmr, 4)
End Sub
Неизвестные фрагменты сказки о репке

— А-а, — догадался Иван, — ты решила, что я шут гороховый. Что я — так себе, Ванек в лапоточках… Тупой, как ты говоришь. Так вот знай: я мудрее всех вас… глубже, народнее. Я выражаю чаяния, а вы что выражаете? Ни хрена не выражаете! Сороки. Вы пустые, как… Во мне суть есть, а в вас и этого нету. Одни танцы — шманцы на уме…

— Тю, тю, тю, — испуганно затараторил черт и стал теснить Ивана в угол. — Чего это тут такое? Кто это нам разрешил выступать?.. Ая-я-я-яй! Отойти никуда нельзя. Предисловий начитался, — пояснил он девице «выступление» Ивана.

Василий Шукшин. До третьих петухов

Известно, что «сказка ложь, да в ней намек…» Другими словами, рациональное мышление нового времени заставляет нас интерпретировать любой текст как осмысленное послание. Будь то шумерские истории о Гильгамеше, Библия, народные сказки или, скажем, Ганс Христиан Андерсен. Любой, даже кажущийся бессмысленным, фрагмент обязательно будет истолкован как притча, аллегория, метафора или, на худой конец, пережиток забытых верований и обычаев. Такой — на первый взгляд, разумный — подход иногда заводит интерпретатора в настоящий тупик.

Возьмем основной сюжет сказки о репке: посадил дед репку, выросшую до сверхъестественных размеров, после неудачной попытки выдернуть репку из земли на помощь зовется бабка, которая привлекает к работам внучку, та — сучку Жучку, Жучка — кошку, кошка — мышку, после чего репка успешно вытягивается из земли. На этом общеизвестный сюжет заканчивается. Общий смысл происходящего хорошо сформулировал, например, Леонид Каганов (см. http://lleo.aha.ru/dnevnik/2009/05/27.html):

Суть сказки мы все помним: некто Дед вложился в проект, который оказался ему не по силам. Увы, так бывает. Это тоже необходимо знать малышам с рождения. Но это не беда — дед не отступился, не махнул рукой, не продал бизнес. Он принялся расширять производственные мощности, заинтересовав партнеров. Малышам пока не важно, на каких долевых паях строилось сотрудничество, но очевидно, что в итоге репки хватило всем. Важно другое: каждый следующий партнер приводил в проект своего знакомого специалиста, и тот активно включался в работу. Помните: «Мышка за Кошку, Кошка за Жучку, Жучка за Внучку, Внучка за Бабку, Бабка за Дедку, Дедка за Репку — вытянули…» Интересен в сказке образ Мышки. Ведь мышь — самое маленькое и слабое существо. Однако именно ее вклад в коллективную работу привел к успеху всего предприятия! Что тоже является для малыша важным жизненным уроком — ведь он пока сам такая же мышка в мире взрослых. Также следует отметить безупречную организацию труда: скажем, попади Мышка между Дедкой и Бабкой, ее бы разорвало. Но производство спланировано грамотно, и силы распределены по убыванию. Когда в детстве нам мамы читали сказку, мы, не умеющие читать, изучали картинки, где выстраивались в цепочку по уменьшению роста и сил Дедка, Бабка, Внучка, Жучка, Кошка, Мышка… Глядя на эту интуитивно понятную экспоненту, мы понимали, что это правильно организованное дело, так и надо.

На первый взгляд — все в порядке. Налицо и «намек», и «добру молодцу урок». В данном виде сказка приобрела широкую популярность не только в России, но, благодаря сборнику Афанасьева, даже на Западе. Вот, к примеру, какую книжку на английском языке Даша купила в Харькове совсем недавно: http://www.amazon.com/Enormous-Turnip/dp/184646059X.

Enormous turnip

Обратите внимание, что в процессе участвуют дед (old man), бабка (old woman), мальчик (little boy), девочка (little girl), большая собака (big dog), черная кошка (black cat) и крошечная мышка (tiny mouse). Сказка обросла подробностями: кто кого за что тянул, как распорядились репкой после всего и т. д.

Вообще, немногие знают, что целое направление науки занимается сортировкой сказочных сюжетов и их изучением. К примеру, сказка о репке относится к т. н. цепочным сказкам, а ее сюжет включен в Указатель сюжетов фольклорной сказки Аарне—Томпсона под номером 2044.

Между тем, со сказкой о репке все ясно лишь на первый взгляд. Обратимся к варианту сказки из сборника «Библиотека русского фольклора. Сказки.» 1988 года издания (http://www.ozon.ru/context/detail/id/1192603/)

Жили дед да баба, посеяли они репку. «Расти, расти, репка, вырасти, репка, сладка!» Пошел дедка репу рвать. Тяне, потяне, вытянуть не може: репка крепка — не вырвется.

И пришла бабка, поймалась за дедка; дедка — за репку: тянут, потянут — вытянуть не могут.

Пришел внук и поймался за бабку; бабка — за дедка, дедка — за репку: тянут, потянут — вытянуть не могут; репа крепка — не вырвется.

Пришла внучка; внучка — за внука, внук — за бабку, бабка — за дедка, дедка — за репку: тянут, потянут — вытянуть не могут.

Мышка пришла, мышка репку вырвала, съела.

Обратим внимание, что мышка в данной версии действует в одиночку и выполняет, примерно, ту же роль, что в сказке про курочку рябу. Боюсь, что соображения Каганова о пользе коллективного труда и правильного менеджмента в этом сюжете вряд ли применимы. В принципе, даже этого простого примера достаточно, чтобы понять, что наши представления о т. н. народной мудрости являются плодом тщательного рафинирования этнографического материала с целью гуманизировать и рационализировать последний.

Еще запутаннее становится ситуация, когда мы обратимся к тексту Афанасьева:

Посеял дедка репку; пошел репку рвать, захватился за репку: тянет-потянет, вытянуть не может! Созвал дедка бабку; бабка за дедку, дедка за репку, тянут-потянут, вытянуть не можут! Пришла внучка; внучка за бабку, бабка за дедку, дедка за репку, тянут-потянут, вытянуть не можут! Пришла сучка; сучка за внучку, внучка за бабку, бабка за дедку, дедка за репку, тянут-потянут, вытянуть не можут! Пришла нога (?). Нога за сучку, сучка за внучку, внучка за бабку, бабка за дедку, дедка за репку, тянут-потянут, вытянуть не можут!

Пришла друга нога; друга нога за ногу, нога за сучку, сучка за внучку, внучка за бабку, бабка за дедку, дедка за репку, тянут-потянут, вытянуть не можут! (и так далее до пятой ноги). Пришла пята нога. Пять ног за четыре, четыре ноги за три, три ноги за две, две ноги за ногу, нога за сучку, сучка за внучку, внучка за бабку, бабка за дедку, дедка за репку, тянут-потянут: вытянули репку!

Репка с ногами

Итак, ноги… Пять штук. Как сейчас любят говорить, автор курил что-то забористое. Неудивительно, что все расплодившиеся по миру вариации сказки про репку начисто лишены этих ног как совершенно неадекватного преступления против здравого смысла. И, кажется, никто не замечает, как, выплескивая эту воду, мы совершаем предательство против воспетой гуманистической наукой «народной мудрости». Википедия в этой связи цитирует журналиста Валерия Панюшкина:

Мне кажется, как только я пойму, что это за ноги и что там у этих ног с репкой, дедкой, бабкой, внучкой и сучкой на самом деле произошло, я пойму самое существо русской народной души, и разъясню для себя все извивы отечественной истории, и прозрею будущее отечества, и вообще смогу спокойно умереть… Но тайна пятой ноги непознаваема. Я спрашивал фольклористов. Они тоже не знают. Иногда мне кажется, что архангельская бабушка (или дедушка), более ста лет назад рассказывавшая исследователю Харитонову свой уникальный и необъяснимый вариант сказки про репку, просто была пьяна или откровенно издевалась над городским чудаком в очочках, всерьез записывавшим сказки, которых даже дети не слушают внимательно.

Ну что ж, это уже не шутки. Тот, кто разгадает тайну ног, ни много, ни мало, постигнет загадочную русскую душу.

В таком случае, я счастлив заявить, что темная страница русского фольклора, над интерпретацией которой безуспешно более ста лет бьются лучшие этнографические умы — равно как и загадочная русская душа — успешно разгаданы моей женой Дашей пару лет назад.

Как часто бывает, разгадка эта до смешного простая. Будь ты хоть богом этнографии, но пока не перевоплотишься в папуаса, до конца папуасскую жизнь тебе не понять и загадочную папуасскую душу — не разгадать. В данном конкретном случае перевоплотиться нужно в того, кто эти сказки рассказывает, и вспомнить: для чего вообще это делается. Вот кто, кому и в каких обстоятельствах в последний раз рассказывал сказку? Вообще говоря, в современном обществе ответ на это уже не столь очевиден, как в XIX веке, когда сказку в 90% случаев применяли по ее прямому назначению: усыпить ребенка. Потому и возникли эти цепочные сказки про дом, который построил Джек или про козу, ушедшую за орехами: чем длиннее и монотоннее сказка, чем больше в ней циклических повторов, тем легче достигается искомый усыпляющий эффект. Вот и вся, в данном случае, народная мудрость.

Забавно, что практически везде (по-видимому, и в самом сборнике Афанасьева) основное тело повествования о ногах пропущено и заменено на «и так далее», в то время как это и есть главная часть сказки. Разумеется, количество ног может варьироваться в зависимости от реакции ребенка на сказку. Если заснул — достаточно, если еще нет — можно добавлять до бесконечности.

  • Дед мороз и осень сочинение 2 класс
  • Дед мороз и лето читать сказку
  • Дед мороз и лето сочинение 2 класс
  • Дед май и зайцы сказка
  • Дед мазай и зайцы это сказка или рассказ