El triángulo de Penrose , también conocido como el tribar de Penrose, o el tribar imposible, es un objeto imposible.
El objetivo en este desafío es mostrar un triángulo de Penrose en la menor cantidad de bytes posible.
Fuente: Wikipedia
Reglas:
- Debe mostrar el triángulo de Penrose digitalmente después de generarlo.
- Deben tener el mismo aspecto que la imagen de arriba de la página wiki (fuente arriba) sin mostrar directamente la imagen.
- La misma imagen con el mismo esquema de color debe mostrarse en un tamaño de al menos 400x400.
- Debe ser lo más preciso posible.
¡Buena suerte y diviertete!
code-golf
kolmogorov-complexity
graphical-output
arodebaugh
fuente
fuente
Respuestas:
logotipo,
129120 bytesDibuja solo los primeros 4 lados de cada forma de L, luego levanta el lápiz, se mueve al punto correspondiente en la siguiente forma de L, baja el lápiz y dibuja 4 lados de eso. Cada forma de L toma 2 lados de la anterior.
Últimas ediciones: muévase del área de relleno negro al área de relleno gris usando en
fd
lugar desetx
, y cambie todos los movimientos defd
abk
para guardar un byte en una rotación de 180 grados:rt 210
->rt 30
, acortarsetpencolor
asetpc
(no documentado en el intérprete que estoy usando, pero funciona .)logotipo, 140 bytes
Dibuja los 6 lados de cada forma de L, sobrepasa el último borde, luego gira 180 grados para comenzar el siguiente.
ejecutar en http://www.calormen.com/jslogo/#
Se recomienda hacerlo
cs pd setpencolor 0
antes de correr para asegurarse de que la pantalla esté despejada, la tortuga esté centrada y apuntando hacia arriba, el lápiz está hacia abajo y configurado en negro (configuración predeterminada, no se requiere para una nueva sesión) y tambiénht
para ocultar la tortuga (st
se muéstralo de nuevo.)fuente
SVG (HTML5), 191 bytes
fuente
Python 2,
211201195188175173 bytesDesafortunadamente,
exec
no se implementa en Trinket, por lo que no se puede probar en línea tal como está. Al menos, no en la versión gratuita. Yo imprimí la cadena y pegado como un código para probarlo. Si es inteligente con los scripts, puede cambiar el tamaño del html / css según sea necesario para obtener un lienzo más grande. Deja me saber si lo haces.Pruébelo en línea : utiliza un tamaño más pequeño ya que el lienzo del sitio es demasiado pequeño para 400 px, pero puede ver la salida completa.
Sin golf:
fuente
255*n/2
puede reducirse a128*n
, creo, que los valores RGB flotantes se redondearán de todos modos, ¿habría algún cambio en los colores de los píxeles?PHP, 153 bytes
Esto solo funcionará si la
short_open_tag
configuración está habilitada. El código fuente contiene caracteres no imprimibles, por lo tanto, tenga un volcado hexadecimal:Los datos descomprimidos se ven así (con saltos de línea agregados para legibilidad):
Aunque los datos SVG no son completamente válidos, PHP los sirve de manera
text/html
predeterminada. Sin una declaración doctype, el documento se maneja en modo peculiar, lo cual es muy indulgente.Para mejorar la compresión, dividí la imagen en tres partes en forma de "7" que se pueden dibujar utilizando
<path>
elementos casi idénticos . La imagen resultante se expandirá para llenar la ventana gráfica. Aquí hay una captura de pantalla de una ventana de 500 × 500 píxeles:fuente
HTML + JS (ES6), 34 + 306 = 340 bytes
Hace uso de una inclinación horizontal de 30 grados: en el tercer argumento de la transformación de matriz, la tangente de 30 ° se representa como
pow(3,-.5)
.Hay bastantes números mágicos feos, y no coincide con las proporciones de la imagen de Wikipedia. Estoy seguro de que hay una forma más "matemática" de hacerlo; Cualquier ayuda sería apreciada.
Vea la versión sin golf en CodePen.
fuente
HTML + CSS, 9 +
315309308 = 317 bytesFronteras y sesgos en abundancia! Probado en Chrome. Vea la versión sin golf en CodePen .
fuente
>
, ¿verdad?Mathematica 171 Bytes
Dibuja 3 polígonos usando AnglePath, múltiplos de giros de 60 grados y aprovechando que el punto de partida para cada polígono es el quinto punto del polígono anterior.
fuente
AnglePath
.Tcl / Tk, 205
fuente