обзор
В этой задаче ваша задача состоит в том, чтобы случайным образом генерировать монотонную математическую функцию между двумя наборами.
вход
Ваши входные данные представляют собой два натуральных числа sи n.
После получения этих входных данных ваша программа должна сгенерировать случайную математическую функцию fиз набора в . Другими словами, это «правило», которое принимает кортеж целых чисел между и и возвращает одно такое целое число. Дополнительно должен быть монотонным в следующем смысле. Если и два- кортежи такие, что выполняется для каждой координаты , то .{0,1,...,s-1}n{0,1,...,s-1}fn0s-1fABnA[i] ≥ B[i]if(A) ≥ f(B)
Точное распределение монотонных функций fне имеет значения, если каждая такая функция имеет положительную вероятность генерации (при условии идеального ГСЧ).
Выход
Ваш вывод должен быть перечислением входов и выходов f. Он должен содержать все nнаборы целых чисел между 0и s-1в некотором порядке, за каждым из которых следует соответствующий вывод f. Точный формат вывода является гибким (в пределах разумного).
Примеры
Входы s = 3и n = 2могут производить выход
(0, 0) 0
(0, 1) 1
(0, 2) 2
(1, 0) 0
(1, 1) 1
(1, 2) 2
(2, 0) 1
(2, 1) 1
(2, 2) 2
Он содержит все пары в наборе {0, 1, 2}ровно один раз, и за каждой из них следует ее f-значение. Условие монотонности также выполнено. Кортежи приведены здесь в лексикографическом порядке, но это не обязательно.
В качестве другого примера, s = 2и n = 4может привести
(0, 0, 0, 0) 0
(0, 0, 0, 1) 0
(0, 0, 1, 0) 0
(0, 0, 1, 1) 0
(0, 1, 0, 0) 1
(0, 1, 0, 1) 1
(0, 1, 1, 0) 1
(0, 1, 1, 1) 1
(1, 0, 0, 0) 0
(1, 0, 0, 1) 1
(1, 0, 1, 0) 0
(1, 0, 1, 1) 1
(1, 1, 0, 0) 1
(1, 1, 0, 1) 1
(1, 1, 1, 0) 1
(1, 1, 1, 1) 1
Ниже приведены все возможные выходы для s = 2и n = 2(вплоть до переупорядочения кортежей); ваша программа должна случайно вывести один из них:
(0,0) 0
(0,1) 0
(1,0) 0
(1,1) 0
-------
(0,0) 0
(0,1) 0
(1,0) 0
(1,1) 1
-------
(0,0) 0
(0,1) 0
(1,0) 1
(1,1) 1
-------
(0,0) 0
(0,1) 1
(1,0) 0
(1,1) 1
-------
(0,0) 0
(0,1) 1
(1,0) 1
(1,1) 1
-------
(0,0) 1
(0,1) 1
(1,0) 1
(1,1) 1
Правила и оценки
Вы можете написать полную программу или функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены. Код с объяснением является предпочтительным.
Нет ограничений на временную сложность, но я дам бонус -15%, если ваше решение всегда гарантированно завершит работу через определенное время (в зависимости от входных данных и при условии, что идеальный ГСЧ работает в постоянном времени) ,