:: Игры Разума
Магический квадрат
Зингер

Сообщений: 541
Откуда: Белгород
Дата регистрации: 02.12.2008
Здравствуйте. Помогите составить квадрат из цифр 1,2,...8 так чтобы каждая сторона квадрата равнялась 13.
P.S.За алгоритм отдельное спасибо.[attachment 11709 1.JPG]



Исправлено 1 раз(а). Последнее : Mitchman, 15.03.11 20:08
Ratings: 0 negative/0 positive
Re: Магический квадрат?
Зингер

Сообщений: 541
Откуда: Белгород
Дата регистрации: 02.12.2008
Извините, за такой страшный скриншот.
Ratings: 0 negative/0 positive
Re: Магический квадрат?
Mitchman

Сообщений: 9978
Откуда: Николаев
Дата регистрации: 24.05.2002
Зингер
Извините, за такой страшный скриншот.
мог бы и сам отредактировать

------------------
-
«свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской»
-
Олесь Бузина
Ratings: 0 negative/0 positive
Re: Магический квадрат?
Зингер

Сообщений: 541
Откуда: Белгород
Дата регистрации: 02.12.2008
Получилось методом научного тыка
1-7-5
4-6
8-3-2

Логику построения пока понять не могу.
И это 4 класс ... Что дальше то будет? [sm128]
Ratings: 0 negative/0 positive
Re: Магический квадрат?
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
13 говорит о том, что либо 3 числа должны быть нечетными, либо одно на каждой грани.
Т.е. минимум 1 грань заполнена нечетными полностью.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.




Исправлено 2 раз(а). Последнее : Влад Колосов, 16.03.11 15:06
Ratings: 0 negative/0 positive
Re: Магический квадрат
Goodwin

Сообщений: 3539
Откуда: Омск
Дата регистрации: 03.05.2006
Не алгоритм, но облегчение перебора:
1+2+3+4+5+6+7+8=36
13*4=52
52-36=16
Значить по углам стоят числа на сумму 16 (числа по углам считаются дважды)
Выбираем из восьми чисел четыре на эту сумму, расставляем их углам, дальше перебор.


------------------
Что мы знаем о лисе?
Ничего. И то не все.
(С)Б. Заходер
Ratings: 0 negative/0 positive
Re: Магический квадрат
ry

Сообщений: 2113
Дата регистрации: 24.09.2007
Задача, похоже, как раз на подбор значений - вряд ли в четвертом классе ребенок сможет самостоятельно составить универсальный алгоритм. Но рассуждать можно было бы примерно так:
1. Все суммы состоят из трех чисел от 1 до 8.
2. Попробуем составить сумму 13 из числа 1 и других слагаемых. Получим 2 возможных варианта: 1+4+8, 1+5+7. Значит, цифра один должна стоять в одном из углов квадрата, а другие цифры - по смежным сторонам в неизвестном порядке. В запасе остаются цифры 2,3,6.
3. Допустим, по одной стороне цифры стоят в порядке 1+4+8, тогда следующая сторона должна быть 8+3+2 или 8+2+3 (прочие цифры уже заняты).
4. Допустим, следующая сторона 8+3+2, тогда дальше возможен лишь вариант 2+6+5 и 5+7+1 (если идти по кругу), что дает решение задачи.
5. Проверим условие стороны 8+2+3, в этом случае дальше необходимо 3+6+4 - но цифра 4 уже занята, приходим к противоречию, отклоняем условие.
6. Проверим условие первой стороны 1+8+4, тогда следующая сторона 4+6+3, далее необходимо 3+2+8, но 8 занята - отклоняем условие.
В итоге имеем одно решение.
Ratings: 0 negative/0 positive
Re: Магический квадрат
sphinx

Сообщений: 31182
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Цитата:
Задача, похоже, как раз на подбор значений - вряд ли в четвертом классе ребенок сможет самостоятельно составить универсальный алгоритм. Но рассуждать можно было бы примерно так:
...
В итоге имеем одно решение.

Это рассуждения именно для 4 класса среднестатической средней школы? Вернее, следует поставить вопрос так: "Это точно задача для 4 класса, для решения которой необходимо провести следующие рассуждения?"




------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Магический квадрат
sergcastle

Сообщений: 4
Дата регистрации: 26.03.2011
1. 13 получиться только в том случае если в выражении есть числа 8,7,6 а так как сумм 4 шт, следовательно одно из этих чисел обязательно должно быть вершиной и формировать две суммы, оставшиеся формируют по одной (итого четыри суммы)
2. Расположение 8 и любого из 765 рядом на смежных вершинах или на одной грани недопустимо
3. Расположение 67 на смежных вершинах или на одной грани недопустимо
Учитывая это размещаем цифры
4. 8 можно использовать в двух суммах, располагаем в вершине
5. Учитывая п2 и п3 67 единственно возможное размещение только на противоположных от 8 гранях
6. Учитывая п2 единственно возможное размещение 5 на вершине противоположной вершине 8
7. Расставляем оставшиеся числа

Можно наверное немножко с другого конца, п1 п2 обязателен
с помощью 8 возможны две суммы 13, уже есть вершина, две смежные к ней грани и пять использованных цифр,
учитывая п3 раскладываем оставшиеся три цифры, возможен только один вариант где 5 в вершине
корректируем суммы в оставшихся вершинах
корректируем суммы на гранях смежных с вершиной 8
Ratings: 0 negative/0 positive
Re: Магический квадрат
bcook
Автор

Сообщений: 160
Дата регистрации: 12.04.2011
test.prg
А можно и банальным перебором:
clear
declare mass(8)
FOR i=1 TO 8
mass(i) = 0
ENDFOR
usl_1 = '!( mass(1)+mass(2)+mass(3) = 13 )'
usl_2 = '!( mass(3)+mass(5)+mass(8) = 13 )'
usl_3 = '!( mass(1)+mass(4)+mass(6) = 13 )'
usl_4 = '!( mass(6)+mass(7)+mass(8) = 13 )'
uslovie = usl_1 + ' or ' + usl_2 + ' or ' + usl_3 + ' or ' + usl_4
DO WHILE &uslovie
DO generation
DO view_win WITH 'nowait' && для ускорения можно заремарить
ENDDO
DO view_win
PROCEDURE check_8
PARAMETERS pos, num
FOR i=1 TO pos
IF num = mass(i)
RETURN .F.
ENDIF
ENDFOR
RETURN .T.
ENDPROC
PROCEDURE generation && 1-8
n=0
DO WHILE n<>7
n=n+1
DO while .T.
new = INT(RAND()*8)+1
IF !INLIST(new,0,9) AND check_8(n,new)
mass(n)=new
Exit
ENDIF
ENDDO
ENDDO
FOR i = 1 TO 8
IF !INLIST(i,mass(1),mass(2),mass(3),mass(4),mass(5),mass(6),mass(7))
mass(8) = i
RETURN
ENDIF
ENDFOR
ENDPROC
PROCEDURE view_win
PARAMETERS no_wait
IF parameters()=0
no_wait = ''
endif
a1 = alltrim(STR(mass(1)))
a2 = alltrim(STR(mass(2)))
a3 = alltrim(STR(mass(3)))
b1 = alltrim(STR(mass(4)))
b2 = ' '
b3 = alltrim(STR(mass(5)))
c1 = alltrim(STR(mass(6)))
c2 = alltrim(STR(mass(7)))
c3 =alltrim(STR( mass(8)))
WAIT WINDOW a1 + ' ' + a2 + ' ' + a3 + CHR(13) +;
b1 + ' ' + b2 + ' ' + b3 + CHR(13) + ;
c1 + ' ' + c2 + ' ' + c3 &no_wait
ENDPROC



Исправлено 2 раз(а). Последнее : bcook, 22.05.11 18:20
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 1 (Гостей: 1)

© 2000-2024 Fox Club 
Яндекс.Метрика