Distància Manhattan P56486


Statement
 

Graphic problem

pdf   zip

Sigui abs(z)\mbox{abs}(z) el valor absolut de zz. Per exemple, abs(7)=abs(7)=7\mbox{abs}(7) = \mbox{abs}(-7) = 7.

Donats dos punts en el pla (x1,y1)(x_1, y_1) i (x2,y2)(x_2, y_2), la seva distància Manhattan es defineix com abs(x1x2)+abs(y1y2)\mbox{abs}(x_1 - x_2) + \mbox{abs}(y_1 - y_2).

Feu un programa que lleigeixi vuit naturals nn, mm, xrx_r, yry_r, xgx_g, ygy_g, xbx_b i yby_b, i que dibuixi una imatge amb n×mn \times m punts. El component red del color de cada punt (x,y)(x, y) ha de ser el residu de la divisió entre 256 de la distància Manhattan entre (x,y)(x, y) i (xr,yr)(x_r, y_r), i similarment amb els components green i blue respecte de (xg,yg)(x_g, y_g) i (xb,yb)(x_b, y_b), respectivament.

Entrada

L’entrada consisteix en els vuit naturals mencionats anteriorment. Podeu suposar que les tres xx estan entre 0 i n1n - 1, i que les tres yy estan entre 0 i m1m - 1. Però pot ser que algun component del color no s’hagi d’usar (és a dir, que hagi de ser 0 a tot arreu). Això s’indica amb un parell de -1 per a aquell component.

Sortida

Cal generar una imatge (n,m)(n, m) segons s’ha explicat.

Observació

En Python 3, la funció valor absolut es diu abs()\mbox{abs}(), i el residu es calcula amb l’operador %.

Public test cases
  • Input

    511
    511
    -1
    -1
    256
    256
    -1
    -1
    

    Output

    sample-1.png

     (511×511)

  • Input

    800
    300
    0
    0
    -1
    -1
    0
    100
    

    Output

    sample-2.png

     (800×300)

  • Input

    500
    400
    25
    40
    75
    125
    80
    15
    

    Output

    sample-3.png

     (500×400)

  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Official solutions
    Python
    User solutions
    Python