Ok, mi primera pregunta de golf. Por favor, sé gentil :) Sé que hay demasiados acertijos ascii: P, pero aquí vamos.
La tarea es simple, use su lenguaje de programación favorito para imprimir una onda triangular. La entrada debe ser del tamaño de la onda.
Cada triángulo está espaciado uniformemente. Básicamente, sigues agregando los triángulos hasta que no haya suficiente espacio para el triángulo más pequeño.
Se le permiten espacios en blanco en cualquier lugar que desee siempre que las ondas sean las mismas que en el ejemplo con el tamaño correcto.
Ejemplo
q)g 1
__
\/
q)g 2
____
\ /
\/
q)g 3
______
\ /
\ /
\/
q)g 4
________
\ __ /
\ \/ /
\ /
\/
q)g 5
__________
\ ____ /
\ \ / /
\ \/ /
\ /
\/
q)g 6
____________
\ ______ /
\ \ / /
\ \ / /
\ \/ /
\ /
\/
q)g 7
______________
\ ________ /
\ \ __ / /
\ \ \/ / /
\ \ / /
\ \/ /
\ /
\/
q)g 8
________________
\ __________ /
\ \ ____ / /
\ \ \ / / /
\ \ \/ / /
\ \ / /
\ \/ /
\ /
\/
Como de costumbre, el código más corto gana :)
Respuestas:
Pyth, 31 bytes
Demostración.
Explicación:
fuente
GNU sed -nr, 210
Un inicio:
La entrada es un entero unario positivo a través de STDIN, según esta metapregunta .
Salida:
fuente
C, 165 bytes
Antes de los pasos de golf que destruyen la legibilidad:
Esto recorre todos los caracteres del rectángulo que contiene la figura y evalúa las ecuaciones de línea que separan el interior del triángulo del exterior, así como las que separan las diferentes partes del triángulo.
fuente
n,x,y,b,c;main(c,v)char**v;{for(n=atoi(v[1]);y<=n;++y)for(x=-n;x<=n;putchar(x++-n?b>6*y?95:b<6*y-4&c>0&c%4==1?"/\\"[x<1]:32:10))c=(b=2*n-abs(2*x+1))-2*y+2;}
Retina , 182 bytes
Toma la entrada como unario.
Cada línea debe ir a su propio archivo y
#
debe cambiarse a nueva línea en los archivos. Esto no es práctico, pero puede ejecutar el código tal como está en un archivo con la-s
bandera, manteniendo los#
marcadores. Puede cambiar los#
's a nuevas líneas en la salida para facilitar la lectura si lo desea. P.ej:El código no está muy bien desarrollado (todavía).
fuente
C - 206 bytes
i,j,m,k,a,b;main(i,v)char**v;{m=atoi(v[1])*2;while(k<m*(m/2+1)){i=k/m;j=k%m;a=i*3,b=(i+j)%2;putchar("_\\/ "[j>=a&&j<m-a?0:j>i-2&&b&&j<i*3-1&&j<m/2?1:j<=m-i&&!b&&j>m-a&&j>=m/2?2:3]);if(j==m-1)puts("");k++;};}
Salida de ejemplo
fuente
int
. Además, si los declara en el ámbito global, se inicializan automáticamente a 0. En lugar de tener un montón deputchar()
llamadas en diferentes ramas, puede usar una sola llamada y reemplazar lasif
declaraciones con operadores ternarios. Por supuesto, se vuelve difícil de leer de esa manera, pero está completamente en el espíritu de este sitio escribir código feo si es más corto. :)JavaScript ( ES6 ) 165
180 204Ejecute el fragmento en Firefox para probar. Si devolver la cadena no es suficiente, usar la alerta para la salida es 2 caracteres más.
fuente