Member 13608224 Ответов: 1

Как сделать диагональный латинский квадрат?


Привет!
Поэтому я хотел бы спросить, есть ли у вас какие-либо идеи, как сделать диагональный латинский квадрат (я имею в виду квадрат, который имеет комбинацию 1..n не только в строке и столбце, но и как по диагонали, так и по антидиагонали). Я перепробовал много вещей, но это просто не хочет работать. Хуже всего то, что я нашел какой-то код в интернете, но он написан на python, и мне приходится использовать Pascal для своего. Кстати я новичок так что даже не совсем понимаю что происходит на других языках 😀
Спасибо!

Что я уже пробовал:

Я пробовал кодировать программу, которая берет случайное число от 1..n и проверяет его, если оно правильно, если да, то оно идет на другое место, если не все повторяется. Но, к сожалению, я допустил слишком много ошибок .

Richard MacCutchan

Нарисуйте квадрат на бумаге и попробуйте сложить цифры вручную. Подумайте о том, какое решение вам нужно принять в каждой точке, и запишите шаги, которые вы делаете. Когда вы закончите квадрат, вам просто нужно преобразовать эти логические шаги в Операторы Pascal.

Member 13608224

^ я попробовал это сделать,но нет никакого паттерна, если только это не простое число, я имею в виду квадрат 7x7, 5x5 и так далее. В других ситуациях вы должны начать с диагонали и антидиагонали, но даже при том, что в каждом пространстве вы можете написать 2 числа и только одно правильно, так что это не полезно, по крайней мере для меня

Richard MacCutchan

Именно так. Проблема заключается в логике, и это зависит от вас, чтобы выяснить эту логику. Преобразование логики в код-это самая простая часть.

Member 13608224

Вероятно, для кого-то, кто может легко запрограммировать что-либо, это легко, но что касается кого-то совершенно нового, то это не так. У меня есть 2 Идеи для алгоритма, но я рассчитывал, что кто-то здесь сможет сказать мне, должна ли моя идея работать и так далее. Вот почему я попытался объяснить один из них. Это не похоже на то, что я прошу готового решения, просто для некоторых советов

Richard MacCutchan

Но, как я уже сказал, это не проблема программирования (то есть Паскаля), поэтому мы ничего не можем предложить в этих терминах. Фактический алгоритм упоминается в решении Мацея ниже, так что именно с него вы должны начать. Вы не можете думать о написании какого-либо кода, пока не поймете реальную проблему и ее решение.

Member 13608224

Ну, но, насколько я знаю, там вообще нет никакой закономерности. Так что сидеть еще несколько дней и читать о них бессмысленно. Я очень хорошо понимаю эту проблему, просто не знаю, насколько сложным языком Паскаля мне следует пользоваться. Насколько мне было известно, есть массивы, но, возможно, есть какая-то готовая функция, которая может помочь мне сделать эту задачу немного проще

Richard MacCutchan

Интересно, сколько раз мне нужно повторять: "это не проблема Паскаля". Не имеет значения, какой язык программирования вы хотите использовать, пока у вас нет логического решения проблемы, вы не можете написать какой-либо код.

1 Ответов

Рейтинг:
1

Maciej Los

Вы не можете ожидать, что кто-то из нас напишет вам программу.

Начать здесь: Латинский квадрат - от Wolfram MathWorld[^]. Диаграмму, которая может помочь вам написать программу, вы найдете здесь (pdf)[^]


Member 13608224

Ну, я не ожидаю, что вы сделаете программу вместо меня только для того, чтобы объяснить, как это сделать на Паскале. Я знаю, что в Python вы можете сделать это легче, но я просто не знаю этого. И ссылки, которыми Вы делитесь,не совсем то, что я имею в виду, потому что там на диагонали у вас всегда есть 0, и я должен иметь там комбинацию [1, n], и это самая большая проблема для меня. Сделать нормальный латинский квадрат гораздо проще я думаю