Pac-man P29646


Statement
 

Graphic problem

pdf   zip

Ajudeu en Pac-man a saber com de lluny està de cada punt del seu món n×mn \times m. Suposeu que es mou així: Si es troba a (x,y)(x, y), en general pot anar a (x1,y)(x - 1, y), a (x+1,y)(x + 1, y), a (x,y1)(x, y - 1) i a (x,y+1)(x, y + 1). Però si es troba per exemple a (0,y)(0, y) (és a dir, a la primera columna) i es mou a l’esquerra, apareix a (n1,y)(n - 1, y). I passa un fenomen similar si es mou des de l’última columna cap a la dreta, o des de la primera fila cap amunt, o des de l’última fila cap avall. Amb aquestes condicions, definim d(P)d(P), la distància Pac-man de cada punt PP, com el mínim nombre de moviments que hauria de fer en Pac-man per arribar a PP des de (x,y)(x, y).

Entrada

L’entrada consisteix en sis enters nn, mm, xx, yy, cc i pp. Podeu suposar n2n \ge 2, m2m \ge 2, 0x<n0 \le x < n, 0y<m0 \le y < m, c1c \ge 1, i p1p \ge 1.

Sortida

Genereu una imatge (n,m)(n, m). Cal pintar cada punt PP amb color Rainbow(1529cd(P))\text{Rainbow}(1529 - c \cdot d(P)), on

Rainbow(z)={(255,z,0) si 0z<255,(510z,255,0) si 255z<510,(0,255,z510) si 510z<765,(0,1020z,255) si 765z<1020,(z1020,0,255) si 1020z<1275,(255,0,1530z) si 1275z<1530.\text{Rainbow}(z) = \left\{ \begin{array}{lcl} (255, z, 0) & \text{ si } & 0 \le z < 255, \\ (510 - z, 255, 0) & \text{ si } & 255 \le z < 510, \\ (0, 255, z - 510) & \text{ si } & 510 \le z < 765, \\ (0, 1020 - z, 255) & \text{ si } & 765 \le z < 1020, \\ (z - 1020, 0, 255) & \text{ si } & 1020 \le z < 1275, \\ (255, 0, 1530 - z) & \text{ si } & 1275 \le z < 1530. \end{array} \right .

Finalment, la línia de codi

dib.pieslice([x - p, y - p, x + p, y + p], 45, 315, 'Yellow')

dibuixa el Pac-man. Assumiu que aquest dibuix del Pac-man queda completament dintre de la imatge, i que cd(P)c \cdot d(P) sempre és més petit que 1530.

Observació

Podeu obtenir 55 punts resolent casos on nn i mm són senars, i en Pac-man es troba exactament al centre del dibuix, com l’Exemple d’entrada 1.

Information
Author
Víctor Martín
Language
Catalan
Official solutions
Python
User solutions
Python