개요
이 도전에서, 당신의 임무는 무작위로 두 세트 사이 의 단조 수학 함수를 생성하는 것 입니다.
입력
입력은 두 개의 양의 정수 s
와 n
입니다.
이러한 입력을 얻은 후 프로그램은에서에서 임의의 수학 함수 f
를 생성해야 합니다 . 다시 말해, 와 사이의 정수-튜플 을 취하고 그러한 정수 중 하나를 반환 하는 "규칙"입니다 . 또한 다음과 같은 의미에서 단조로운 것이어야합니다 . 만약 하고 있는 두 사람은 그러한 -tuples 모든 좌표에 대한 보유 후 .{0,1,...,s-1}n
{0,1,...,s-1}
f
n
0
s-1
f
A
B
n
A[i] ≥ B[i]
i
f(A) ≥ f(B)
단조 함수의 정확한 분포는 f
각 함수가 생성 될 가능성이있는 한 (완벽한 RNG를 가정 할 때) 중요하지 않습니다.
산출
귀하의 출력은의 입력과 출력을 열거해야합니다 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
-value 가옵니다 . 단 조성 조건도 만족됩니다. 튜플은 여기에서 사전 식 순서로 제공되지만 반드시 그럴 필요는 없습니다.
또 다른 예로서, 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
규칙과 채점
전체 프로그램 또는 함수를 작성할 수 있습니다. 가장 낮은 바이트 수가 이기고 표준 허점 이 허용되지 않습니다. 설명이있는 코드가 선호됩니다.
시간 복잡성에 대한 제한은 없지만 솔루션이 항상 일정 시간 내에 완료되도록 보장하면 (입력에 따라 일정한 시간에 실행되는 완벽한 RNG를 가정 할 경우) -15 % 의 보너스를 제공합니다 .