Автор Тема: Помогите решить  (Прочитано 11450 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн JoKeR

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
    • E-mail
Помогите решить
« : 08 Май 2011, 00:02:36 »
«загадка: 1,2,3,4=28; 2,3,4,5=28; 3,4,5,6=28; 4,5,6,7=28; 5,6,7,8=28; 6,7,8,9=28 Пример решения (1-го) 2*3+1*4=28.»
 
Можно делить,умножать,отнимать,прибавлять ("/","*","-","+"). Всё нужно делать по порядку, как показано в примере №1.

Оффлайн devnull

  • Ветеран
  • *****
  • Сообщений: 745
    • Просмотр профиля
Re: Помогите решить
« Ответ #1 : 08 Май 2011, 00:07:52 »
2*3 + 1*4 - это не 28. И это не цифры по порядку 1,2,3,4.

Оффлайн zer0

  • Ветеран
  • *****
  • Сообщений: 688
    • Просмотр профиля
    • E-mail
Re: Помогите решить
« Ответ #2 : 08 Май 2011, 16:19:24 »
а так: (1+2*3)*4=28

Оффлайн seamew

  • Старожил
  • ****
  • Сообщений: 369
  • Доброе слово и Чайке приятно..
    • Просмотр профиля
Re: Помогите решить
« Ответ #3 : 08 Май 2011, 16:30:41 »
а такие задачи решаются методом научного тыка или все таки есть какой-то алгоритм?  :-[
Я не люблю, когда мне лезут в душу, особенно, когда в нее плюют (с)

Оффлайн zer0

  • Ветеран
  • *****
  • Сообщений: 688
    • Просмотр профиля
    • E-mail
Re: Помогите решить
« Ответ #4 : 08 Май 2011, 23:39:24 »
Все-таки интересно: где Joker взял пример решения и решал ли сам остальные варианты.

Оффлайн Илья

  • Эксперт
  • ******
  • Сообщений: 3617
    • Просмотр профиля
Re: Помогите решить
« Ответ #5 : 09 Май 2011, 02:26:17 »
2. не совсем корректно, но по другому не получилось
4.
« Последнее редактирование: 09 Май 2011, 02:37:46 от Илья »

Оффлайн JoKeR

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
    • E-mail
Re: Помогите решить
« Ответ #6 : 09 Май 2011, 03:32:52 »
Вот решения: №1 2*3+1*4=28; №2 5*2-3*4=28; №3 6/3+5*4=28; №4 6-5*4*7=28. Осталось решить два последних примера. По поводу решения я имею ввиду,что цифры можно переставлять как угодно, но не должно быть никаких скобок. И всё делается по порядку то есть: два умножить на три получается шесть прибавить один получается семь и умножить на четыре получается двадцать восемь (№1  2*3+1*4=28), а не как по правилу сначала умножение и т.д.

Оффлайн zer0

  • Ветеран
  • *****
  • Сообщений: 688
    • Просмотр профиля
    • E-mail
Re: Помогите решить
« Ответ #7 : 09 Май 2011, 11:59:42 »
А какие гарантии от автора задачи, что решение существует?

Оффлайн devnull

  • Ветеран
  • *****
  • Сообщений: 745
    • Просмотр профиля
Re: Помогите решить
« Ответ #8 : 09 Май 2011, 19:46:25 »
Программа:
#!/usr/bin/perl
$\=$/;
perm([split//,$_],'') for '1234', '2345', '3456', '4567', '5678', '6789';
sub perm
{
        if(!@{$_[0]}){
                solve($_[1]);
                return;
        }
        for(0..$#{$_[0]}){
                @d=@{$_[0]};
                $n=splice(@d,$_,1);
                perm([@d],$_[1].$n);
        }
}
sub solve
{
        @a=qw(+ - * /);
        for $i(@a){for $j(@a){for $k(@a){
                return 1 if test([split//,$_[0]],[$i,$j,$k]);
        }}}
}
sub test
{
        ($d,$o)=@_;
        for $m(0..15){
                $s=$r=$m&1?-$d->[0]:$d->[0];
                for(0..2){
                        $n=$d->[$_+1]*($m&(1<<($_+1))?-1:1);
                        $a=$o->[$_];
                        $s.=$a.$n;
                        $r+=$n if $a eq '+';
                        $r-=$n if $a eq '-';
                        $r*=$n if $a eq '*';
                        $r/=$n if $a eq '/';
                }
                if($r==28){
                        $s=~s/\+-|-\+/-/g;
                        print "$s = $r";
                        return 1;
                }
        }
        return;
}
Результат запуска (все возможные решения):
$ ./joker.pl
2*3+1*4 = 28
3*2+1*4 = 28
2*5-3*4 = 28
5*2-3*4 = 28
6/3+5*4 = 28
-5+6*4*7 = 28
-5+6*7*4 = 28
6-5*4*7 = 28
6-5*7*4 = 28

Для последних двух условий решений нет.

Оффлайн zer0

  • Ветеран
  • *****
  • Сообщений: 688
    • Просмотр профиля
    • E-mail
Re: Помогите решить
« Ответ #9 : 10 Май 2011, 11:16:01 »
Вопрос к Joker'у:
Зачем размещать нерешаемые задачи?