ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Задачка для 3 класса школы
  #1  
Старый 27.12.2009, 17:43
Аватар для dk-ne
dk-ne
Познающий
Регистрация: 21.01.2007
Сообщений: 69
Провел на форуме:
211655

Репутация: 4
Lightbulb Задачка для 3 класса школы

Вобщем дочке моей знакомой в итоговой контрольной на дом задали задачку по математике. Смысл такой:
1 2 3 4 5 6 7 8 9 = 99
Между цифрами нужно расставить знаки ( + - * / ), причем нельзя пользоваться скобками, и чтобы в итоге получился правильный ответ. Один из ответов:
1*2+3+4+5+6+7+8*9. Таких ответов несколько. Так вот, дам плюсики тому, кто составит самый простой php код, выводящий все возможные варианты решения этой задачи.

Последний раз редактировалось dk-ne; 27.12.2009 в 18:02..
 
Ответить с цитированием

  #2  
Старый 27.12.2009, 18:35
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Дети в 3 классе уже знакомы с дробями и отрицательными числами или нет ещё?
 
Ответить с цитированием

  #3  
Старый 27.12.2009, 18:38
Аватар для PaTRom
PaTRom
Новичок
Регистрация: 10.07.2008
Сообщений: 7
Провел на форуме:
91993

Репутация: -2
По умолчанию

а сколько плюсиков дашь?
 
Ответить с цитированием

  #4  
Старый 27.12.2009, 19:17
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

astrologer Возможность ставить минус - подразумевает известность отрицательных чисел.

dk-ne Можно побрутить правильные наборы, но это будет слишком неспортивно. Тем не менее:
PHP код:
$znaki = array('+','-','*','/');
$znak = array('','-');
foreach (
$znaki as $q)
foreach (
$znaki as $w)
foreach (
$znaki as $e)
foreach (
$znaki as $r)
foreach (
$znaki as $t)
foreach (
$znaki as $y)
foreach (
$znaki as $u)
foreach (
$znaki as $i)
foreach (
$znak as $o)
{
eval(
"\$a = {$o}1{$q}2{$w}3{$e}4{$r}5{$t}6{$y}7{$u}8{$i}9;");
if (
$a == 99printf("%18s = %d\n","{$o}1{$q}2{$w}3{$e}4{$r}5{$t}6{$y}7{$u}8{$i}9"$a);

Результат:
Код:
 1+2+3+4*5-6+7+8*9 = 99
 1+2-3+4+5*6+7*8+9 = 99
 1+2-3+4+5*6-7+8*9 = 99
-1+2*3+4+5+6+7+8*9 = 99
-1+2*3-4*5+6*7+8*9 = 99
-1+2*3*4+5+6+7*8+9 = 99
-1+2*3*4+5+6-7+8*9 = 99
-1-2+3+4+5*6+7*8+9 = 99
-1-2+3+4+5*6-7+8*9 = 99
-1-2+3*4+5+6+7+8*9 = 99
-1-2-3+4*5+6+7+8*9 = 99
-1-2-3-4+5*6+7+8*9 = 99
-1-2-3-4-5+6*7+8*9 = 99
 1*2+3+4+5+6+7+8*9 = 99
 1*2+3-4*5+6*7+8*9 = 99
-1*2+3*4*5+6*7+8-9 = 99
-1*2+3*4*5-6+7*8-9 = 99
 1*2-3*4+5*6+7+8*9 = 99
 1*2-3*4-5+6*7+8*9 = 99
-1*2*3+4*5+6+7+8*9 = 99
 1*2*3+4*5-6+7+8*9 = 99
-1*2*3-4+5*6+7+8*9 = 99
-1*2*3-4-5+6*7+8*9 = 99
 1*2*3*4*5/6+7+8*9 = 99
 1/2/3*4*5*6+7+8*9 = 99
Комбинированные знаки без скобок применять можно?
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm

Последний раз редактировалось Gifts; 27.12.2009 в 19:51..
 
Ответить с цитированием

  #5  
Старый 27.12.2009, 21:11
Аватар для dk-ne
dk-ne
Познающий
Регистрация: 21.01.2007
Сообщений: 69
Провел на форуме:
211655

Репутация: 4
По умолчанию

В целом, задача решена. Спс. Но все-таки здесь перебор, а не просмотр всех вариантов. 3++ добавил
 
Ответить с цитированием

  #6  
Старый 27.12.2009, 21:13
Аватар для mailbrush
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

Цитата:
Сообщение от dk-ne  
В целом, задача решена. Спс. Но все-таки здесь перебор, а не просмотр всех вариантов. 3++ добавил
Просмотр всех вариантов - будет банальный echo с правильными ответами, но их можно достать только перебором.
 
Ответить с цитированием

  #7  
Старый 27.12.2009, 23:07
Аватар для dk-ne
dk-ne
Познающий
Регистрация: 21.01.2007
Сообщений: 69
Провел на форуме:
211655

Репутация: 4
По умолчанию

У меня получился такой код. Но почему-то он повторяет результаты. Хотя вроде счетчик изменяется каждый раз после прохождения цикла на 1, а значит результаты деления всегда различны. Кто-то поймет почему?


set_time_limit(0);

$znaki = array ('+','-','*','/');
$odin = array (' ','-');

$SUM = 0;
$n = 0;
$end = (bcpow(4, 9, 0) - 1);
$sss = 0;

do
{

$sum = $SUM;

$a1 = $sum % 4;
$sum = ($sum - $a1)/ 4;
$a1 = $znaki[$a1];

$a2 = $sum % 4;
$sum = ($sum - $a2)/ 4;
$a2 = $znaki[$a2];

$a3 = $sum % 4;
$sum = ($sum - $a3)/ 4;
$a3 = $znaki[$a3];

$a4 = $sum % 4;
$sum = ($sum - $a4)/ 4;
$a4 = $znaki[$a4];

$a5 = $sum % 4;
$sum = ($sum - $a5)/ 4;
$a5 = $znaki[$a5];

$a6 = $sum % 4;
$sum = ($sum - $a6)/ 4;
$a6 = $znaki[$a6];

$a7 = $sum % 4;
$sum = ($sum - $a7)/ 4;
$a7 = $znaki[$a7];

$a8 = $sum % 4;
$sum = ($sum - $a8)/ 4;
$a8 = $znaki[$a8];

$a9 = $sum % 4;
$sum = ($sum - $a9)/ 4;
$a9 = $odin[$a9];

$SUM++;

eval("\$otv = {$a9}1{$a8}2{$a7}3{$a6}4{$a5}5{$a4}6{$a3}7{$a2}8{$ a1}9;");
if ($otv == 99)
{
echo "{$a9}1{$a8}2{$a7}3{$a6}4{$a5}5{$a4}6{$a3}7{$a2}8{ $a1}9<br>";
$sss++;
}
}
while ($n <= $end);

echo "Итого $sss вариантов";
 
Ответить с цитированием

  #8  
Старый 28.12.2009, 01:00
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

dk-ne Ээээ, те же лыжи, только анально. Тот же перебор, только сделанный одним циклом. А ошибка - вы не инкрементируете $n. Вот если бы вы могли найти решение аналитически - тогда бы еще можно было подискутировать
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

  #9  
Старый 28.12.2009, 01:09
Аватар для dk-ne
dk-ne
Познающий
Регистрация: 21.01.2007
Сообщений: 69
Провел на форуме:
211655

Репутация: 4
По умолчанию

Цитата:
Сообщение от Gifts  
dk-ne Ээээ, те же лыжи, только анально. Тот же перебор, только сделанный одним циклом. А ошибка - вы не инкрементируете $n. Вот если бы вы могли найти решение аналитически - тогда бы еще можно было подискутировать
У тебя то код, как я понял, берет случайные значения из массива. А я попытался сделать по порядку, чтоб ни одно решение не пропустить. Поясни, плз, про $n. Что не так? Я еще слабо разбираюсь в пхп
 
Ответить с цитированием

  #10  
Старый 28.12.2009, 01:15
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

dk-ne http://php.net/foreach Ну или английский учите.

В условии выхода из цикла - используется $n - оно нигде не увеличивается
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МикроДжоинер для начинающих ReanimatoR Статьи 23 02.01.2010 15:07
[Статья] Создание расширения для Windows Explorer при помощи C++ Builder Dobby007 С/С++, C#, Delphi, .NET, Asm 2 29.03.2009 08:58
О законе. _-[A.M.D]HiM@S-_ Статьи 28 01.11.2007 12:25
Редактирование содежимого прошивок для Самсунгов Digimortal Схемы и программы 3 28.02.2007 14:22
Моя подборка софта для КПК на базе Wm5 Noman Схемы и программы 12 19.12.2006 22:40



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ