컴퓨터 프로그래밍의 예술

Oct 19 2020

편집 : 나는 우리가 첫 번째 게시 후 새로운 요구 사항을 편집해서는 안된다는 것을 알고 있지만, 내가 이해하는 한이 요구 사항은 여기 모든 질문에 암시 적입니다.
답변을 설명하십시오! 적어도 조금. 따라서 평범한 독자는 당신의 생각을 따르고 당신의 천재성에 감사 할 기회를 갖게됩니다.

다음은 간단하지만 재미 있기를 바랍니다.

다음 패턴을 다시 만들 수 있습니까?

규칙 :

  1. 정수 산술 만

  2. 엄격히 로컬, 즉 포인트의 x, y 좌표 만 사용하여 색상을 계산할 수 있습니다.

  3. 조회 테이블 없음

  4. 무차별 대입 금지 (궁금한 경우를 대비해 컴퓨터 없음 태그가있는 이유), 적합하다고 생각되는 컴퓨터를 사용할 수 있다는 점을 제외하고는 없습니다.

(5.) 단순할수록 좋습니다.

노트:


패턴은 모두 주기적이며 0,1,2,3,4 색상을 사용합니다.
똑같은 색상을 사용할 필요는 없습니다. 5 가지 색상이면 충분합니다.
나는 당신이 그것을 무차별 대입해서는 안되기 때문에 의도적으로 패턴의 텍스트 버전을 넣지 않았습니다.
나는 여전히 퍼즐을 만드는 데 익숙하지 않으며 어떤 피드백이라도 환영합니다.

솔루션이있는 한 가지 예 :


가능한 대답 $f(x,y) = \left [ \lfloor \frac x 3 \rfloor - \lceil \frac {y+2x+1} 6 \rceil - \lceil \frac {y+1} 6 \rceil \right ] \mod 5$

답변

5 GarethMcCaughan Oct 19 2020 at 20:26

첫 번째 패턴은 (왼쪽 상단에 (0,0) 포함)

$$\Biggl\{\left\lfloor\frac{2x+3y-2}8\right\rfloor+\left\lfloor\frac{-3x-2y+3}8\right\rfloor \Biggr\} \mathop{\textrm{mod}}5.$$

그리고 마지막은 (왼쪽 상단에 (0,0)이 있음)

$$\Biggl\{x+y+m(x-y)-\left\lfloor\frac x4\right\rfloor\Biggl\}\mathop{\textrm{mod}}5$$

어디

$m(x)$ 간다 $0, +1, 0, -1$ 에 따라 $x$ mod 4. 정의 할 수있는 조회 테이블없는 방법이 많이 있습니다. $m$; 예를 들어$m(x)=(x \mathop{\textrm{mod}}2)\cdot(-1)^{\lfloor x/2\rfloor}$.

질문은 "답변 설명"요청을 포함하도록 업데이트되었습니다.

첫 번째 패턴에 대해 제공 할 설명이별로 없습니다. 난 그냥

형태의 것을 시도해야한다고 생각 $\lfloor\textrm{linear}(x,y)\rfloor+\lfloor\textrm{linear}(x,y)\rfloor\pmod5$, 두 선형 사물의 계수가 일치하여 패턴에 올바른 종류의 대칭을 제공합니다. 패턴의 주기성은 내가 아마도 분모에 8 개 또는 16 개를 원한다는 것을 시사했으며, 약간의 실험을 통해 (처음부터 분명 했어야했듯이)$x$$y$계수는 남서쪽에서 북동쪽으로 몇 개의 "밴드"가 있는지 표시되며 올바른 패턴을 제공하는지 확인하려는 경우는 몇 가지 밖에 없습니다. 올바른 패턴이지만 오프셋이있는 것을 찾은 후$x$$y$, 나는 대체 $x,y$$x-\delta,y-\epsilon$ 어디 $\delta,\epsilon$생산에 필요한 오프셋이었고 단순화되었습니다. 끝난.

네 번째에 대해 조금 더 말할 수 있습니다.

우선, 매우 명백한 밴딩 패턴은 "... mod 5"내부에서 $\lfloor x/4\rfloor$. 나머지는 멋지고 단순한주기적인 "뱀"패턴을 생성하는 데 필요했습니다. 뱀은 남서쪽에서 북동쪽으로 오른쪽, 오른쪽, 위쪽, 위쪽, 오른쪽, 오른쪽, 위쪽, 위쪽, 오른쪽, 오른쪽 등으로 달리고 있습니다.$x+y$그러면 우리는 평범한 대각선을 갖게 될 것입니다. 이것은 실제로 그 뱀들과 다소 유사합니다. 신중하게 선택한 장소 세트에서 1을 더하고 빼서 대각선을 뱀으로 바꿀 수 있습니다. 북서쪽에서 남동쪽 대각선 아래로 모두 1을 더하면 모든 윤곽선을 대각선으로 안쪽으로 한 단위 효과적으로 밀어 넣을 수 있습니다. 1을 빼면 효과적으로 대각선으로 바깥쪽으로 한 단위 밀어냅니다. 패턴을 조금 살펴보면 필요한 것은 NW-SE 대각선의 절반이 그대로 유지되고 나머지 절반은 밀어 넣는 것과 밀어내는 것 사이를 번갈아 사용하는 것입니다. 즉, 해당 기능을 추가해야합니다.$m(x,y)$ mod 5를 줄이기 전에

4 LukasRotter Oct 19 2020 at 17:34

(4 개 중 2 개)


$(0,0)$ 왼쪽 상단이 아니라 왼쪽 하단입니다.

두 번째 패턴 :

$f(x,y) = \left [ \left\lceil \frac {3x} 8 \right\rceil - \left\lfloor \frac {5x} 8 - \frac {y} 4 \right\rfloor \mod 5 - \left\lfloor -\frac {y} 8 \right\rfloor \mod 5 \right] \mod 5$

세 번째 패턴 :

$f(x,y) = \left [ \left\lceil \frac {3x+3} 7 \right\rceil - \left\lfloor \frac {6x-y} 7 \right\rfloor - 7 \right] \mod 5$