Hipercub

Donades les coordenades de 2^(n) punts p₀, …, p_(2^(n) − 1), on
p_(i) = (x_(i), y_(i)), uniu amb una recta tots els parells de punts
p_(j) i p_(k) tals que j < k, i tals que j i k difereixen en exactament
un bit.

Per exemple, j = 10 i k = 14 s’haurien de connectar, perquè 10 en binari
és 1010₂, i 14 en binari és 1110₂.

Entrada

L’entrada comença amb dos noms de colors f i c, seguits de les
dimensions a i b de la imatge, seguits d’n ≥ 1, seguida dels 2^(n)
parells x₀, y₀, x₁, y₁, …, x_(2^(n) − 1), y_(2^(n) − 1).

Sortida

Genereu una imatge a × b amb color de fons f. Dibuixeu-hi cada punt amb
un cercle de color c de diàmetre 5. També, uniu els punts requerits amb
una recta de color c.

Per dibuixar les rectes, feu servir la instrucció

        dib.line([(xj, yj), (xk, yk)], c)

on dib és el dibuix que esteu pintant, (xj, yj) i (xk, yk) són les
coordenades dels punts p_(j) = (x_(j), y_(j)) i p_(k) = (x_(k), y_(k))
entre els quals es dibuixa la recta, i c és el color donat c. Tingueu en
compte que si dibuixeu les línies entre p_(k) i p_(j) (invertint
l’ordre), probablement algun píxel serà diferent i no obtindreu un AC.

Informació del problema

Autoria: Víctor Martín

Generació: 2026-01-25T10:07:49.430Z

© Jutge.org, 2006–2026.
https://jutge.org
