:: Игры Разума
Задачка с хабра
medstrax
Забанен
Автор

Сообщений: 5964
Дата регистрации: 23.03.2007
habrahabr.ru
В комментах приведено немало решений (есть и совершенно адские) на разных языках, все они кажутся неоптимальными. Предлагаю конкурс на самое быстрое решение на фоксе, хотя и на любом другом языке тоже приветствуется. Выводом можно не заморачиваться, достаточно по заданному числу определить его координаты в 2-мерном массиве - один цикл от 1 до N^2, где N - сторона квадрата. Либо по заданным координатам 1<=X,Y<=N определить выводимое в эту ячейку число - два цикла по координатам. Т.е. в конечном счете нужно заполнить массив NxN нужными числами (без вывода на экран для чистоты эксперимента, да и при больших N нет смысла выводить)
P.S. Можно написать и реализацию для произвольного прямоугольника



Исправлено 1 раз(а). Последнее : medstrax, 31.01.14 13:04
Ratings: 0 negative/0 positive
Re: Задачка с хабра
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
По-моему там есть вполне адекватные алгоритмические/математические решения (от Mrrl). Не вникая глубоко в суть вопроса
ООП-выдержанный бред, конечно, позабавил.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Задачка с хабра
ry

Сообщений: 2113
Дата регистрации: 24.09.2007
Если с выводом на экран не заморачиваться, то вот код, состряпанный под чашечку кофе в обеденный перерыв. Можно и в один цикл уложить, но заполнение первой строки решил вынести, чтобы не делать дополнительные проверки внутри цикла. Насчет эффективности не знаю, просто одно из возможных решений. Заполнение массива 1000х1000 идет около 3 сек.
nSize=10
Dimension aSquare(nSize,nSize)
For i=1 to nSize
aSquare(1,i)=i
EndFor
nRow=2
nCol=nSize
nSubSize=nSize-1
nDeltaX=0
nDeltaY=1
j=1
For i=nSize+1 to nSize^2
aSquare(nRow,nCol)=i
nRow=nRow+nDeltaY
nCol=nCol+nDeltaX
j=j+1
If j=nSubSize
nDelta=nDeltaY
nDeltaY=nDeltaX
nDeltaX=-1*nDelta
EndIf
If j=2*nSubSize
nDelta=nDeltaY
nDeltaY=nDeltaX
nDeltaX=-1*nDelta
nSubSize=nSubSize-1
j=0
EndIf
EndFor
Ratings: 0 negative/0 positive
Re: Задачка с хабра
medstrax
Забанен
Автор

Сообщений: 5964
Дата регистрации: 23.03.2007
Igor Korolyov
адекватные алгоритмические/математические решения (от Mrrl)
Ага, его последние 2 решения впечатлили. Но проверять лень, а в уме что-то ниасилил Просто обращаю внимание, что в одном решении он задал константой размер массива 7, а в другом 6 - это сразу наводит на мысль, что решения неуниверсальны, а зависят от четности размера
Ratings: 0 negative/0 positive


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

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

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