IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> помогите решить ребус!
eXTreMe
сообщение 20.11.2005 16:50
Сообщение #1


Гость






я не знаю как решить ребус VOLVO+FIAT=MOTOR. Пожалуйста кто-нибудь помогите решить его!!!
Заранее благодарен, eXTreMe
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 7.02.2006 19:14
Сообщение #2


Гость






Немного подниму тему...

Вот тут некоторым особо переборчивым (Люди сами не предлагают НИКАКИХ вариантов, а чужие ВСЕГДА критикуют, "можно сделать гораздо эффективнее"... Удобная позиция, правда?) не понравилось, что слишком много циклов в программе, вот - решил переделать на рекурсию, чтобы был выбор...
uses crt;
var
dig: set of byte;

var
first, second, res: string;
T: string;

function check(s, what: string): longint;
var
i: byte;
n: longint;
begin
n := 0;
for i := 1 to length(s) do begin
n := 10 * n;
n := n + ( ord(what[ pos(s[i], T) ]) - 48 );
end;
check := n;
end;

procedure full(s: string);
var i: integer;
begin
if length(s) = length(T) then begin
if check(first, s) + check(second, s) = check(res, s) then
writeln('found: ', check(first, s), '+', check(second, s), '=',
check(res, s));
end
else
for i := 0 to 9 do
if not (i in dig) then begin
include(dig, i);
full(s + chr(48 + i));
exclude(dig, i);
end
end;

procedure fill_str(var s: string; what: string);
var i: byte;
begin
for i := 1 to length(what) do
if pos(what[i], s) = 0 then s := s + what[i];
end;


begin
T := '';
first := 'volvo'; second := 'fiat'; res := 'motor';
fill_str(T, first); fill_str(T, second); fill_str(T, res);
full('');
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.06.2025 12:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"