El triángulo Reuleaux es la forma formada por la intersección de tres círculos, con cada círculo pasando por los centros de los demás. Independientemente de la rotación, el ancho de un triángulo Reuleaux siempre será igual al radio de los círculos:
Imagen: Wolfram MathWorld
Escriba un programa que tome un ancho rcomo entrada y muestre un triángulo Reuleaux de ese ancho (en píxeles).
Debe mostrar la forma de forma aislada, es decir, con relleno sólido, sin trazo y sobre un fondo con relleno sólido.
code-golf - El programa más corto en bytes gana.
                    
                        code-golf
                                graphical-output
                                geometry
                                
                    
                    
                        Darrylyeo
fuente
                
                fuente


rser en píxeles o solo algún factor de escala?Respuestas:
JavaScript + HTML,
164158+ 13 = 171 bytesNo sé por qué disfruto respondiendo a estos desafíos de dibujo matemático con
<canvas>tanto ...fuente
Love2D, 320 bytes.
Probablemente no sea la solución óptima, utiliza las plantillas de Love2D, configurando los 3 círculos y completando donde se cruzan.
Llame a través de la línea de comando, como
love tri.love 256Salida de ejemplo
fuente
Python 2 , 111 bytes
fuente
Mathematica
10110098 BytesTomando un enfoque diferente que @MichaelSeifert, y probablemente interpretando esto un poco más literalmente con respecto a la cláusula de píxeles:
Ejemplo de uso:
10 píxeles
50 píxeles
100 píxeles
Se guardó un byte gracias a @MartinEnder (notación infija) y otros 2 bytes definiendo d.
fuente
PHP + SVG, 165 bytes
Ejemplo de salida para la entrada 128
fuente
PostScript,
968685757372 bytesToma la entrada como un valor en la pila.
^^y^@representan caracteres de control literal.(^@^^Z<^@Z<)es la cadena de caracteres con los puntos de código 0, 30, 90, 60, 0, 90 y 60, respectivamente. Esos se interpretan entonces como ángulos en grados, porque obviamente para eso están los puntos de código.Se guardaron 10 bytes porque
closepathno es necesario (ambosclipefillimplícitamente cierran la ruta).Se guardó 1 byte usando en
repeatlugar de definir una función.Ahorró 10 bytes al cambiar a un enfoque completamente diferente.
Ahorró 2 bytes haciendo trucos con la pila.
Se guardó 1 byte usando en
0 1 2{}forlugar de3{}repeat.fuente
Mathematica,
134131 bytesNota: esta solución ya no es válida, ya que la pregunta se editó posteriormente para exigir que r se midiera en píxeles. Gracias a Martin Ender por ayudarme a reducir algunos bytes en los comentarios.
El valor de entrada debe escalarse entre 0 y 1 para que este código funcione. Tenga en cuenta que se requiere casi una cuarta parte de este código para mostrar la forma "aisladamente", ya que este no es el valor predeterminado de Mathematica.
fuente
r Exp[2 I Pi n/3]puede serExp[2I n/3Pi]rpara ahorrar algunos espacios. Y generalmente es más corto escribir una función sin nombre, es decir, soltarr=Input[];, reemplazarrcon#y agregar a&.BBC BASIC, 58 bytes
Descargue el intérprete en http://www.bbcbasic.co.uk/bbcwin/download.html
Sin golf
fuente
TeX / TikZ,
128121112 bytesEl código se basa en esta respuesta al TeX.se .
TeX está basado en vectores, por lo que no tiene píxeles. El radio es flotante con un máximo de aproximadamente 15 antes de llegar al borde de la página. Tampoco está realmente construido para la entrada de línea de comandos, por lo que debe ejecutarse como
donde el código anterior se guarda en
rt.texfuente
.tex;\footline{}es tan bueno como\nopagenumbers; usar~como un nombre de variable en lugar de\i. Para satisfacer el requisito de "píxel", puede usar\r sp; 1sp es el equivalente a un píxel para TeX ya que es la mejor ubicación que TeX puede administrar (aunque no sé si se aplica a tikz).sppero creo queptes una buena idea. Todas sus otras ideas funcionaron (algunas no parecían funcionar en mis pruebas). Gracias~para guardar un byte más.\input tikz\footline{}\tikz\draw[draw=none,fill=red](0,1)\foreach~in{1,2,3}{[rotate=~*120]arc(0:60:\r sp)};\byefunciona para mi. Intentepdftex "\def\r{2000000} \input rt.tex": a 2sp, encontrar la forma visualmente sería difícil dado lo pequeño que es.GLSL,
298229 caracteresPruébalo aquí
Prima
rvariablefuente
JavaScript (ES6) + HTML, 196 + 13 = 209 bytes
Utiliza un enfoque basado en rutas en lugar de un enfoque de relleno de píxeles.
Mostrar fragmento de código
fuente
Logo, 53 bytes
usa el
filledcomando para rellenar la forma en color 0 (negro). El código en los corchetes exteriores se ejecuta sin dibujar ninguna línea, pero Logo realiza un seguimiento de los movimientos de la tortuga y rellena la forma una vez que se sale del corchete.Logotipo,
6461 bytesPluma hacia abajo, dibuje un arco de 60 grados con la tortuga en el centro, pluma hacia arriba, mueva la pluma al inicio del arco, gire 120 grados.
Repita 3 veces, luego muévase dentro de la forma y llénela.
Pruebe en http://turtleacademy.com/playground/en
Llamar como
cs ht t 100(pantalla clara, ocultar tortuga,tcon r = 100).fuente
MATL , 35 bytes
Esto produce un archivo llamado
image.png. Para la entradar, el tamaño de la imagen es2*r+1y el ancho del triángulo es elrrequerido.¡Pruébalo en MATL Online! El intérprete en línea abre automáticamente el archivo creado y muestra la imagen con escala arbitraria; haga clic en él para obtener la versión en tamaño real.
Alternativamente, aquí hay dos resultados de ejemplo del compilador fuera de línea que se ejecuta en Matlab, con entradas
50y100. La última parte del código0YGha sido reemplazada porIYGpara que la figura se muestre directamente (con el tamaño correcto) en lugar de escribirse en un archivo.Explicación
fuente
JavaScript (ES6) + SVG (HTML5), 28 + 102 = 130 bytes
El recuento de bytes excluye el código necesario para la entrada conveniente del usuario del tamaño deseado.
fuente
n=>s.style.width=nfuncionaría tambiénMetaPost (
242226 bytes)Es posible reducir esto un poco, soy nuevo en metapost.
fuente
len * diry el punto al final?k,
14110098 bytesLa entrada se toma de
stdin, la salida estástderr(ostdindepende del intérprete) enpgmformato. Por ejemplo:Explicación:
fuente
05AB1E , 66 bytes
No se puede usar TIO, ya que abre una ventana y dibuja el triángulo Reuleaux allí.
Pide entrada, y luego abre una ventana de tortuga Python dibujando el triángulo.
La respuesta de Jonathan Allan me dio la inspiración para hacer esto, aunque modifiqué un poco su código.
Esencialmente, esta es una combinación de las capacidades de compresión de 05AB1E y la facilidad de gráficos de tortuga de Python.
fuente
OpenSCAD , 91 bytes
No estoy seguro de cuán kosher es esto, ya que los píxeles no son realmente una unidad bien definida en ningún formato de cuadrícula de malla que yo sepa. En cambio, el módulo
tdibuja un triángulo reuleaux de radio dadoren cualquier unidad nativa que esté en uso.Ejemplo de salida de vista previa para
t(100):fuente
SmileBASIC,
8786858382817978777675 bytesSin golf:
fuente