Introducción
En pocas palabras: hace unos días, accidentalmente comencé a tejer un calcetín y la estructura bastante lógica de los puntos simples me llevó a la idea: ¿por qué no tejemos un calcetín ASCII?
Entrada
La entrada es un entero par N en el rango [2,30]
.
Salida
La salida es un calcetín, obviamente.
Estructura
Debido a que solo usaremos puntadas simples, solo lo usará v
para una puntada hacia abajo y >
para una puntada a la derecha. Permítanme explicar la estructura completa con un ejemplo para N=8
:
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
- El primer bloque es la parte superior. Tiene el ancho
N
y la alturaN*1.5
- Luego comienza el talón. Resta uno
v
por fila del lado derecho hasta que tenga elN/2
ancho. Luego agregaN/2
filas con el anchoN/2
debajo para terminar los tejidos hacia abajo. Tenga en cuenta que da un total deN/2 + 1
filas con el anchoN/2
primera parte:
vvvvvvvv //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv // N*1.5 times
vvvvvvv // reduce
vvvvvv
vvvvv
vvvv // till here
vvvv // repeat N/2 times
vvvv
vvvv
vvvv
- Ahora comienzan los tejidos de las guardas laterales. Empiezas con la primera fila reducida, rellena
>
hasta que tengas el anchoN
y agrega dos más. Continúe ese proceso, incluida la primera fila conN/2
ancho - Rellene las filas debajo de ese nivel y agregue
N*1.5
tiempos>
a ese nivel - Deje las partes externas como están y agregue en la fila debajo de la primera y sobre las dos dos más
>'s
hasta que esté terminado
segunda parte:
vvvvvvvv
vvvvvvv>>> //fill to N and add two >
vvvvvv>>>>>> //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>> //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>> //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
Reglas
Las nuevas líneas finales están bien.
Puede elegir entre mayúsculas o minúsculas, V
pero tiene que ser coherente.
Este es el código de golf, por lo que gana el código más corto en bytes.
Casos de prueba
N=2
vv
vv
vv
v>>>
v>>>>>>
N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>
N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
v
oV
intercambiablemente? Voy a suponer por el momento quev
es el único permitido, pero permitirV
afectará el conteo de bytesRespuestas:
Pyth: 93 bytes
Explicación:
¡Puedes probarlo aquí!
fuente
Mathematica, 104 bytes
Función sin nombre que toma un número entero positivo como entrada y devuelve una cadena (con una nueva línea final). Tenga en cuenta que la nueva línea entre las dos líneas de código anteriores es parte del código. El trabajo principal lo realiza la función
c
, cuya definición sin golfcrea una tabla de listas, cada una de las cuales consta de varias
"v"
s seguidas de varias">"
s seguidas de una nueva línea. Afortunadamente, el rango#3
para el exteriorTable
puede tener un nombre de variable, al que se puede hacer referencia en las expresiones#1
y#2
; Esto permite que la funciónc
se llame con argumentos constantes y variables. El resto es solo cálculo, y el operador de unión de cadenas""<>
aplana las listas anidadas que surgen de forma gratuita.fuente
Python,
3.5183177 bytesExplicación entrante.
Pruébalo en línea!
fuente
n,v=int(input()),'v'
:? Entonces no ahorra nada.Groovy, 168 bytes
Este es un cierre sin nombre. El enfoque es completamente similar a mi Python 3.5 respuesta de .
Pruébalo en línea!
fuente
Lote, 279 bytes
Nota: la segunda línea termina en un espacio. Batch tiene problemas con la repetición de
>
s en las variables, así que tengo que a) usar un sustituto b) llamar a una subrutina para repetir la cadena corregida. De hecho, tengo tres subrutinas:a
Se utiliza para el talón. Unov
se elimina cada vez y>
se agregan tres s. Se agregan dos>
s adicionales para que la subrutina pueda caer en lab
subrutina.b
se usa para la planta del pie. Se>
eliminan dos s cada vez. La subrutina luego cae en lac
subrutina.c
imprime la fila actual del calcetín, reemplazando el carácter de marcador de posición para que se>
imprima correctamente.La cuarta línea maneja el ancho de la pierna mientras que la quinta línea maneja su longitud. La séptima línea maneja la longitud del pie mientras que la octava línea maneja la mitad superior de la altura del pie agregando dos
>>
a cada línea después de imprimirla. Esto funciona para tamaños de calcetines que son múltiplos de 4, y se realiza un ajuste para otros tamaños de calcetines para que la línea más larga no se repita.fuente
PHP, 229 bytes
un enfoque bastante vago
imprime una nueva línea principal. Corre con
-nr
.Descompostura
fuente
cc , 269 bytes
Muy bien, bueno ... esto es masivo . No fue fácil, te diré eso, con todas las referencias de registro, comparaciones, macros, falta de habilidades de manipulación de cadenas, etc. Sin embargo, me divertí armando esto, y eso es todo lo que realmente importa, ¿verdad? ? ;)
¡Pruébelo en línea!
fuente