Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2020, 12:53   #1
xande.R
Новичок
Джуниор
 
Регистрация: 27.08.2020
Сообщений: 6
Сообщение Ребус ДВА * ДВА = ЧЕТЫРЕ (1 решение)

Добрый день (или вечер) столкнулся со следующей задачей и не пойму логику решения такой задачи:

ДВА * ДВА = ЧЕТЫРЕ (1 решение)

Собственно есть теоретический материал:
Математический ребус – логическая задача, где в арифметическом примере цифры заменены буквами (одинаковым цифрам соответствуют одинаковые буквы, разным – разные). Например, 123+456=579 можно закодировать как сом + лук = уха.
Решить математический ребус означает найти числа, которые были закодированы. Один из способов решения – перебор возможных значений для букв. Но полный перебор занимает много времени за счёт большого числа вложенных циклов, поэтому следует отсекать заведомо неподходящие значения. Например, очевидно, что с≠9, с≠,0, у≠,0, л≠9, л≠0. Таким образом, числа, закодированные словами «сом» и «лук» меняются от 100 до 800, а число, закодированное словом «уха» - от 200 до 999.

Возможно задача простая, но самостоятельно понять тему я так и не смог. Буду очень признателен, если подскажете как написать код.

Есть также пример на C++:
Код:
set<int> M;
    set<int> N;
    for(int i=10000; i < 44000; i++)
    {
        if(i % 5 != 0)
        {
            M = Set_From_Number(i);
            if (M.size() == 5) {
                for (int j = 200; j < 1000; j++) {
                    int t1 = j / 100;
                    int t2 = (j / 10) % 10;
                    if (t1%2 == 0 && i % 10 == t2) {
                        N = Set_From_Number(j);
                        if (N.size() == 3 && i * 2 == j * 100 + 10 * t2 + t1)
                            cout << i << " + " << i << " = " << i * 2 << endl;
                    }
                }
            }
        }
    }
Заранее благодарю за любую помощь.
xande.R вне форума Ответить с цитированием
Старый 27.08.2020, 13:30   #2
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

в слове "четыре" буквы отличаются от букв слова "два"
и буквы различаются между собой
кроме буквы "е"
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Старый 27.08.2020, 15:05   #3
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

Цитата:
Сообщение от xande.R Посмотреть сообщение
ДВА * ДВА = ЧЕТЫРЕ (1 решение)
И правда всего одно решение
459 * 459 = 210681
kvitaliy вне форума Ответить с цитированием
Старый 27.08.2020, 21:06   #4
xande.R
Новичок
Джуниор
 
Регистрация: 27.08.2020
Сообщений: 6
По умолчанию

Цитата:
Сообщение от kvitaliy Посмотреть сообщение
И правда всего одно решение
459 * 459 = 210681
Угу, тоже смог прорешать, но до логистики код так и не смог довести. Пока что не придумал как решить подобный случай.
xande.R вне форума Ответить с цитированием
Старый 27.08.2020, 23:52   #5
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

Код:
for d = 1 to 9
for v = 0 to 9
for a = 0 to 9

for c = 1 to 9
for e = 0 to 9
for t = 0 to 9
for y = 0 to 9
for r = 0 to 9

' if if if if if 

88 next r
77 next y
66 next t
55 next e
44 next c
 
33 next a
22 next v
11 next d
Программа qb64 без условий работает от 5 до 15 минут
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 28.08.2020 в 00:07.
сфинкс вне форума Ответить с цитированием
Старый 28.08.2020, 01:40   #6
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

лень было заполнять все 28 комбинаций
зато отныне есть шаблон решения подобных задач
работающий за 5 секунд

Код:
' dacetyr.bas

start = TIMER

FOR d = 1 TO 9
FOR v = 0 TO 9
FOR a = 0 TO 9

FOR c = 1 TO 9
FOR e = 0 TO 9
FOR t = 0 TO 9
FOR y = 0 TO 9
FOR r = 0 TO 9

if d = v THEN 22
if d = a THEN 33
if v = a THEN 33

if c = e THEN 55
if c = t THEN 66
if c = y THEN 77
if c = r THEN 88

if e = t THEN 66
if e = y THEN 77
if e = r THEN 88

if t = y THEN 77
if t = r THEN 88
if y = r THEN 88

dva = 100 * d + 10 * v + a
cetyre = c * 10 ^ 5 + e * 10 ^ 4 + t * 1000 + y * 100 + r * 10 + e

if dva * dva = cetyre THEN PRINT dva, cetyre

88 NEXT r
77 NEXT y
66 NEXT t
55 NEXT e
44 NEXT c

33 NEXT a
22 NEXT v
11 NEXT d

finish = TIMER

PRINT finish - start

end
? почему 28 комбинаций ?
парадоксально уже отвечал накануне:

https://www.programmersforum.ru/show...63#post1819163

https://www.programmersforum.ru/show...41#post1806541

ищем похожие задачи типа УДАР+УДАР=ДРАКА и решаем за час
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Старый 28.08.2020, 01:55   #7
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

УДАР+УДАР=ДРАКА

изменено за 5 минут и решено за 5 наносекунд

Код:
' daudar.bas

start = TIMER

FOR u = 1 TO 9
    FOR d = 1 TO 9
        FOR a = 0 TO 9
            FOR r = 0 TO 9
                FOR k = 0 TO 9

                    IF u = d THEN 22
                    IF u = a THEN 33
                    IF u = r THEN 44
                    IF u = k THEN 55

                    IF d = a THEN 33
                    IF d = r THEN 44
                    IF d = k THEN 55

                    IF a = r THEN 44
                    IF a = k THEN 55
                    IF r = k THEN 55

                    udar = 1000 * u + 100 * d + 10 * a + r
                    draka = d * 10000 + r * 1000 + a * 100 + k * 10 + a

                    IF udar + udar = draka THEN PRINT udar, draka

                55 NEXT k
            44 NEXT r
        33 NEXT a
    22 NEXT d
11 NEXT u

finish = TIMER

PRINT finish - start

END
На другие языки и в онлайн компиляторы
переведу когда-нибудь как пишу в моей теме

Учим C# зная Basic & Excel & qb64
https://programmersforum.ru/showthre...=327446&page=5
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Старый 28.08.2020, 11:16   #8
xande.R
Новичок
Джуниор
 
Регистрация: 27.08.2020
Сообщений: 6
По умолчанию

Цитата:
Сообщение от сфинкс Посмотреть сообщение
УДАР+УДАР=ДРАКА

изменено за 5 минут и решено за 5 наносекунд

Код:
' daudar.bas

start = TIMER

FOR u = 1 TO 9
    FOR d = 1 TO 9
        FOR a = 0 TO 9
            FOR r = 0 TO 9
                FOR k = 0 TO 9

                    IF u = d THEN 22
                    IF u = a THEN 33
                    IF u = r THEN 44
                    IF u = k THEN 55

                    IF d = a THEN 33
                    IF d = r THEN 44
                    IF d = k THEN 55

                    IF a = r THEN 44
                    IF a = k THEN 55
                    IF r = k THEN 55

                    udar = 1000 * u + 100 * d + 10 * a + r
                    draka = d * 10000 + r * 1000 + a * 100 + k * 10 + a

                    IF udar + udar = draka THEN PRINT udar, draka

                55 NEXT k
            44 NEXT r
        33 NEXT a
    22 NEXT d
11 NEXT u

finish = TIMER

PRINT finish - start

END
Спасибо
xande.R вне форума Ответить с цитированием
Старый 28.08.2020, 11:16   #9
xande.R
Новичок
Джуниор
 
Регистрация: 27.08.2020
Сообщений: 6
По умолчанию

Цитата:
Сообщение от сфинкс Посмотреть сообщение
На другие языки и в онлайн компиляторы
переведу когда-нибудь как пишу в моей теме
Буду ждать
xande.R вне форума Ответить с цитированием
Старый 28.08.2020, 12:33   #10
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

Ждать слишком долго:

читается: "переведу когда-нибудь" ... за год
ведь считает быстро и на медленном языке

Плюс на современном языке листинг длиннее
да и переход goto не любят

Лучше покажу иностранцам вдруг доделают

Моя тема учит переводить самостоятельно
https://programmersforum.ru/showthre...=327446&page=5
... посетили свыше 10^4 раз ...
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребус на Делфи Jane_Air Помощь студентам 4 11.01.2014 18:40
Ребус Delphi2010 Василий01 Помощь студентам 3 24.12.2012 16:08
Ребус! prelest' Паскаль, Turbo Pascal, PascalABC.NET 1 30.05.2011 22:59
Ребус Junger Помощь студентам 5 30.05.2011 10:29
Ребус solnze.90 Паскаль, Turbo Pascal, PascalABC.NET 10 11.01.2011 23:23