Задача возвращается.
Прошу помощи!
Буду пытаться реализовать этот алгоритм.
Честно пыталась написать программу, не получилось.
Есть 4 двумерных массива. Надо сделать выборку из этих массивов.
Задача о выборке
вспомогательная, она используется в моём алгоритме построения пандиагонального квадрата 8-го порядка. Тогда, когда писала тут об этой задаче, я пыталась построить по этому алгоритму наименьший пандиагональный квадрат 8-го порядка из простых чисел. Мне не удалось решить эту задачу, так как вспомогательную задачу решить не смогла.
Сейчас по тому же алгоритму пытаюсь построить наименьший (или хотя бы не наименьший) пандиагональный квадрат 8-го порядка из последовательных простых чисел.
И снова застряла на этой же вспомогательной задаче.
Итак, имеем 4 двумерных массива (4 группы пар простых чисел):
первая группа (21 пара):
Код:
79,431
89,421
101,409
109,401
113,397
127,383
131,379
137,373
151,359
157,353
163,347
173,337
179,331
193,317
197,313
199,311
227,283
229,281
233,277
239,271
241,269
вторая группа (15 пар):
Код:
79,419
89,409
97,401
101,397
109,389
131,367
139,359
149,349
151,347
167,331
181,317
191,307
227,271
229,269
241,257
третья группа (18 пар):
Код:
107,439
113,433
127,419
137,409
149,397
157,389
163,383
167,379
173,373
179,367
193,353
197,349
199,347
229,317
233,313
239,307
263,283
269,277
четвёртая группа (17 пар):
Код:
79,383
83,379
89,373
103,359
109,353
113,349
131,331
149,313
151,311
179,283
181,281
191,271
193,269
199,263
211,251
223,239
229,233
Это исходные данные для программы, которая будет делать выборку. Количество пар в группах может быть разным, но не менее 8.
Что нужно выбрать?
Надо выбрать из каждой группы восемь пар так, чтобы все выбранные пары не пересекались, то есть не имели ни одного одинакового числа.
Выборку сделать я не смогла. Поэтому просто написала программу, реализующую мой алгоритм; программа строит пандиагональный квадрат по данному алгоритму и в процессе построения автоматически делает выборку:
Код:
79 101 439 109 227 401 379 281
359 233 263 409 191 197 251 113
89 419 257 271 269 383 149 179
389 311 173 131 229 83 353 347
283 97 167 181 431 397 107 353
307 313 211 433 139 277 199 137
193 163 349 331 373 127 241 239
317 379 157 151 157 151 337 367
Всё в этом решении замечательно, кроме повторения 4-х чисел.
Вот, значит, с четырьмя одинаковыми числами выборка есть.
Интересно, а с тремя (двумя, одним) повторяющимися числами есть выборки?
Ну и наконец ВЫБОРКА БЕЗ ПОВТОРЕНИЙ, самая важная и нужная.
Очень нужно мне сделать такую выборку. Если она невозможна для приведённых 4-х групп пар чисел, надо брать другие наборы групп и искать выборку. По крайней мере одна такая выборка должна быть. В противном случае набор групп просто негодный, из чисел этого набора квадрат без повторения чисел не построится.
Хорошо, если такая выбока будет не одна, а несколько, но как минимум одна должна быть.
Вот так я действую вручную.
Беру из второй группы первые 8 пар:
Код:
79,419
89,409
97,401
101,397
109,389
131,367
139,359
149,349
Теперь выбираю из первой группы 8 пар, чтобы они не имели с выбранными парами одинаковых чисел:
Код:
127,383
137,373
157,353
163,347
173,337
179,331
193,317
197,313
Вроде всё правильно, одинаковых чисел нет. Вручную запросто можно и ошибиться, не углядеть повторение.
Теперь точно так же выбираю из третьей группы пары, чтобы не было повторений чисел. Из третьей группы мне удалось выбрать только 6 пар:
Код:
107,439
113,433
167,379
239,307
263,283
269,277
И наконец, из четвёртой группы удалось выбрать только 5 пар:
Код:
151,311
181,281
191,271
211,251
229,233
По 8 пар в этом примере выбрать не удалось.
Но это только один вариант выборки. А их будет очень много.
Однако крутила программу построения квадрата долго и решений менее чем с 4 повторениями не найдено, с 4 повторениями найдено несколько решений.
Вручную всё просто ведь, алгоритм совершенно прозрачный А программу написать не могу
P.S. Могу расписать, какая выборка (с 4 повторяющимися числами) содержится в приведённом пандиагональном квадрате.