Учитывая положительное целое число n < 10
, создайте 2-мерную матрицу, где каждое местоположение заполнено своим x
и y
индексом (начиная с верхнего левого угла).
Например:
Вход: 2
00 10
10 11
Вход: 3
00 10 20
01 11 21
02 12 22
Как только сетка будет создана, случайным образом заполните каждый индекс. Это может быть с «х» или любым другим способом обозначить место было заполнено.
Вы определяете, какое место заполнить, путем случайного создания индексов для заполнения матрицы. Вы можете заполнить только n ^ 2 раза, поэтому вы не можете заполнить столько раз, сколько хотите, пока матрица не будет полностью заполнена. В конце матрица должна быть заполнена, поэтому вы должны выполнить некоторую работу, чтобы убедиться, что вы проверяете случайные числа, которые вы используете для заполнения, чтобы убедиться, что место еще не заполнено.
Обновите или напечатайте после каждого заполнения, чтобы показать ход выполнения итераций заполнения.
Пример для заполнения:
Вход: 2
00 10
01 11
00
случайно выбран:
XX 10
01 11
01
случайно выбран:
XX 10
XX 11
00
выбирается случайным образом, но так как он уже выбран, повторный бросок выбирает 10
:
XX XX
XX 11
11
случайно выбран:
XX XX
XX XX
Не распечатывайте случайные числа, так как визуально я смогу увидеть, какой индекс был выбран. Под этим я подразумеваю не печатать " 11
случайно выбранный". Это здесь для исследовательской цели.
Так как это код-гольф, выигрывает самый короткий код.
Веселитесь и радуйтесь игре в гольф!
n>= 10
Возможно ли ? (Вы должны начать знать о максимальной длине, чтобы правильно заполнить первые 0). Заполнением для этого случая является один индекс за раз, а не 1 цифра за раз, верно?Ответы:
05AB1E , 29 байт
Попробуйте онлайн!
В качестве символа для удаленных чисел выбрано пространство (как это выглядит красиво), но его можно заменить любым символом, не влияя на количество байтов.
объяснение
источник
Пип ,
41403836 байт35 байт кода, +1 за
-S
флаг.Принимает входные данные из аргумента cmdline. Заменяет пробел (любой другой символ возможен за +1 байт). Выводит последовательные итерации, разделенные одной новой строкой (что допустимо, но может усложнить чтение). Попробуйте онлайн!
Все виды подвохов в этом.Укороченная версия имеет меньше грязных трюков. : ^ (Объяснение:источник
n>=10
рандомизации не работает правильно, но это все еще бьет по сути. Для чисел больше 10 он только удаляет гдеindex_i==index_j
. Есть какая-нибудь идея, почему это так?(mi@##Pmi@0)
части. Я добавил несколько хаков, уменьшающих байты, которые зависят от того, являются ли индексы однозначными.##
, понял. Хорошее использование предположений. Спасибо за объяснение, ха-ха.Groovy (202 байта)
Этот конкретный выходной формат действительно испортил мой счетчик байтов, но не так.
Попробуйте: https://groovyconsole.appspot.com/edit/5171951567896576 (+9 байт для более красивой печати)
Ungolfed:
Пример вывода:
источник
4x4
квадрат с 0 индексами . Сам квадрат просто разделен символом новой строки, а каждая итерация разделена символом новой строки, поэтому выходные данные вроде бы выполняются вместе.R,
848174 байтаТеперь используется одноиндексирование, а не нулевое индексирование. Избавился от 7 байтов благодаря @Billywob.
Пример вывода для N = 3
источник
replace
:for(i in sample(N^2)){m[i]="XX";print(m)}
AWK, 229 байт
Я добавил несколько байтов, чтобы дать выводу пробел между каждой матрицей.
Примечание: чтобы сделать его более «случайным» между запусками, можно добавить вызов
srand()
для 7 дополнительных байтов.Использование и вывод после сохранения вышеуказанного кода в
FILE
:источник
PHP, 172 байта
Сломать
источник
Python 2, 190 байт
источник