![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
eXTreMe |
![]()
Сообщение
#1
|
Гость ![]() |
я не знаю как решить ребус VOLVO+FIAT=MOTOR. Пожалуйста кто-нибудь помогите решить его!!!
Заранее благодарен, eXTreMe |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
eXTreMe, а кто такая FIAT?
![]() |
klem4 |
![]()
Сообщение
#3
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
да простят меня модераторы и администраторы
![]() ![]() ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Altair |
![]()
Сообщение
#4
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Эх, так никто и не скажет про FIAT ...
![]() eXTreMe, вот решение ребуса (взято отсюда: Множества: загадка-ребус и подправлено под нужную задачу...) {
VOLVO+FIAT=MOTOR;
}
uses crt;
var
v, o, l, f, i, a, t, m, r: 0 .. 9;
dig : set of 0..9;
sum, motor: longint;
begin
clrscr;
for v:=0 to 9 do begin
include(dig,v);
for o:=0 to 9 do if not (o in dig) then begin
include(dig,o);
for l:=0 to 9 do if not (l in dig) then begin
include(dig,l);
for f:=0 to 9 do if not (f in dig) then begin
include(dig,f);
for i:=0 to 9 do if not (i in dig) then begin
include(dig,i);
for a:=0 to 9 do if not (a in dig) then begin
include(dig,a);
for t:=0 to 9 do if not (t in dig) then begin
include(dig,t);
for m:= 0 to 9 do if not (m in dig) then begin
include(dig, m);
for r := 0 to 9 do if not (r in dig) then begin
include(dig, r);
sum := v*10000 + (o+f)*1000 + (l+i)*100 + (v+t)*10 + (o+t);
motor := m*10000+o*1000+t*100+o*10+r;
if sum = motor then
writeln(':', v,o,l,v,o,'+',f,i,a,t,'=', m,o,t,o,r);
exclude(dig, r)
end;
exclude(dig, m);
end;
exclude(dig,t);
end;
exclude(dig,a);
end;
exclude(dig,i);
end;
exclude(dig,f);
end;
exclude(dig,l);
end;
exclude(dig,o);
end;
exclude(dig,v);
end;
end.
В результате - 12 решений... |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
А можно вопрос ... как и в какую сторону надо начинать думать, чтобы решить эту задачу и каков смысл этого решения ?
![]() ![]() и на склько я понял, таким способом можно проверить любое соотношение слов? аа.. про инклуды понял, включае в множество ... Сообщение отредактировано: klem4 - 21.11.2005 14:15 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата как и в какую сторону надо начинать думать, чтобы решить эту задачу и каков смысл этого решения ? Полный перебор вариантов, исключая повторные присваивания одинаковых цифр разным буквам (для чего и используются множества)... |
eXTreMe |
![]()
Сообщение
#8
|
Гость ![]() |
Volvo, огромное спасибо за программу, она
![]() P.S: ты бы не мог объяснить что делает функция include, а что exclude? |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Если описаны
Var
X: Byte;
S: Set Of Byte;
то Include(X, S) - Добавляет элемент Х во множество S Exclude(X, S) - Извлекает (удаляет) X из S (если X в это время не входит в S, то просто ничего не делается) |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Немного подниму тему...
Вот тут некоторым особо переборчивым (Люди сами не предлагают НИКАКИХ вариантов, а чужие ВСЕГДА критикуют, "можно сделать гораздо эффективнее"... Удобная позиция, правда?) не понравилось, что слишком много циклов в программе, вот - решил переделать на рекурсию, чтобы был выбор... 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.
|
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 9:31 |