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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2017, 18:44   #1
IIo3uTuB
Пользователь
 
Регистрация: 08.12.2016
Сообщений: 18
По умолчанию Расшифровать ребус, паскаль

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

ГОД+ГОД+ГОД+ГОД=ВЕК
IIo3uTuB вне форума Ответить с цитированием
Старый 12.02.2017, 22:04   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Так сгодится ?
Код:
program god_vek;
var i,j,god,vek,god_ms,tk : integer ;
   tmp:array[0..5] of integer ; tmp10:array[0..9] of integer ;
procedure d100 (arg,ind: integer) ;
begin
   tmp[ind] := arg div 100 ;
   tmp[ind+2] := arg mod 10 ;
   tmp[ind+1] := (arg - tmp[ind]*100-tmp[ind+2]) div 10 ;
end ;
begin
  god_ms := 0 ;
  for god := 1 to 249 do
    begin
      vek := god * 4 ;
      d100(god,0) ; d100(vek,3) ;
      for j := 0 to 9 do tmp10[j] := 0 ;
      for j := 0 to 5 do 
         if tmp10[tmp[j]] =0 then
             begin tmp10[tmp[j]] := 1 ; Inc (tk) end ;
      if tk =6 then
         begin
          Writeln(god,'  ',vek,'  ',tk) ;
          if god_ms < god then god_ms := god
         end ;
    end ;
  Writeln(god_ms) ;
end.
И тишина...

Последний раз редактировалось digitalis; 13.02.2017 в 15:21.
digitalis вне форума Ответить с цитированием
Старый 20.02.2017, 10:43   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

ИЧСХ, ему важно вопрос задать - ответы он не читает. Совсем как в фильме "О чем говорят мужчины" .

Последний раз редактировалось digitalis; 20.02.2017 в 10:48.
digitalis вне форума Ответить с цитированием
Старый 20.02.2017, 13:10   #4
IIo3uTuB
Пользователь
 
Регистрация: 08.12.2016
Сообщений: 18
По умолчанию

Можно её сделать методом полного перебора используя 3 цикла? Что бы попроще было
IIo3uTuB вне форума Ответить с цитированием
Старый 20.02.2017, 14:35   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Проще не будет, а правильней так точно ))
Код:
var i1,i2,i3,j,k,vmax: Integer;
    s: Set of Byte;
...
  s:=[];  vmax:=0;
  for i1:=1 to 2 do begin
    s:=[i1];
    for i2:=0 to 9 do
      if not (i2 in s) then begin
        s:=s+[i2];
        for i3:=0 to 9 do
          if not (i3 in s) then begin
            s:=s+[i3];
            j:=(i1*100+i2*10+i3)*4;
            if j<1000 then begin
              k:=j div 100;
              if not (k in s) then begin
                s:=s+[k];
                k:=(j mod 100) div 10;
                if not (k in s) then begin
                  s:=s+[k];
                  k:=j mod 10;
                  if not (k in s) then begin
                    if j>vmax then vmax:=j;   //в vmax результат
                  end;
                end;
              end;
            end;
            s:=[i1,i2];
          end;
        s:=[i1];
      end;
  end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.02.2017, 15:08   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Интересно девки пляшуть... И где же неправильность в моем решении? Тем более протестировано.
digitalis вне форума Ответить с цитированием
Старый 20.02.2017, 15:20   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

И не анализировал. Просто результат:
Код:
2 8 6
2
Что это? Правильный ответ 245+245+245+245=980. Там еще около трех десятков подходящих решений, но в выше приведенном максимум для ВЕК

ЗЫ Может и не прав. Там
Цитата:
Найти также такие значения цифр, при которых сумма цифр в результате окажется наибольшей
а я ищу максимум всего числа. Щас посмотрим ))

Итого так, но прогу пусть ТС подправит ))

192+192+192+192=768 - 7+6+8=21
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.02.2017 в 15:33.
Аватар вне форума Ответить с цитированием
Старый 20.02.2017, 16:08   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Да, есть косяк... Все оттого, что отлаживал и тестировал в Дельфи ( отвык уже от этого у...го консольного редактора ), а потом при переносе в ТР последнюю правку пропустил. Признаю и посыпаю этим самым ... Но лаконичность решения этот досадный баг не опорочил Все 45 решений от 37/48 до 245/980 на лице
Код:
program god_vek;
var i,j,god,vek,god_ms,tk : integer ;
   tmp:array[0..5] of integer ; tmp10:array[0..9] of integer ;
procedure d100 (arg,ind: integer) ;
begin
   tmp[ind] := arg div 100 ;
   tmp[ind+2] := arg mod 10 ;
   tmp[ind+1] := (arg - tmp[ind]*100-tmp[ind+2]) div 10 ;
end ;
begin
  god_ms := 0 ;
  for god := 12 to 249 do 
    begin
      vek := god * 4 ; tk := 0 ;
      d100(god,0) ; d100(vek,3) ;
      for j := 0 to 9 do tmp10[j] := 0 ; tk := 0 ;
      for j := 0 to 5 do
        if tmp10[tmp[j]] =0 then
          begin tmp10[tmp[j]] := 1 ; Inc (tk) end ;
      if tk =6 then
         begin
          Writeln(god,'  ',vek,'  ',tk) ;
          if god_ms < god then god_ms := god
         end ;
    end ;
  Writeln(god_ms) ;
end.

Последний раз редактировалось digitalis; 20.02.2017 в 16:11.
digitalis вне форума Ответить с цитированием
Старый 20.02.2017, 17:00   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

37/148 не решение. В таких ребусах первая цифра числа обычно не ноль. ГОД именно трехзначное число. Так что искать со 100 ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.02.2017, 18:51   #10
IIo3uTuB
Пользователь
 
Регистрация: 08.12.2016
Сообщений: 18
По умолчанию

Спасибо
IIo3uTuB вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расшифровать ребус, полученный в результате замены одинаковых букв ZigaBr0 Паскаль, Turbo Pascal, PascalABC.NET 2 30.08.2016 10:07
Расшифровать ребус, полученный в результате замены одинаковых букв одинаковыми цифрами. Найти также такие значения цифр, при котор ZigaBr0 Паскаль, Turbo Pascal, PascalABC.NET 3 19.02.2016 17:59
Ребус! prelest' Паскаль, Turbo Pascal, PascalABC.NET 1 30.05.2011 22:59
Ребус Junger Помощь студентам 5 30.05.2011 10:29
расшифровать в ASCII потом цифры расшифровать в бинарный код viorel Общие вопросы Delphi 1 07.05.2010 14:43