Fondo
Cuando era más joven, me enseñaron un método para dibujar una extraña forma de "S", que (junto con mis compañeros de clase) me pareció fascinante. Hoy, lo redescubrí y, debido a su enfoque formulado para dibujarlo, pensé que podría conducir a un desafío interesante: P
Dibujando la "S"
La S se puede dibujar siguiendo estos simples pasos:
Primero, dibuja 2 filas de tres líneas verticales como esta
| | |
| | |
Luego, conecte la línea superior izquierda con la línea media inferior y la parte superior central con la línea inferior derecha para producir
| | |
\ \
| | |
Finalmente, dibuje una parte superior e inferior en la imagen dibujada actualmente para que parezca
^
/ \
| | |
\ \
| | |
\ /
v
Como puede ver, esto da como resultado una forma de "S". Sin embargo, cuando se extiende (dibujándolo con más de 2 filas), produce un patrón muy interesante. Su tarea es reproducir este patrón interesante.
Tarea
Dado un número entero donde n >= 2
, la salida de la S con n
filas para hacer de ella. La salida puede ser devuelta desde una función, y la entrada puede ser tomada en métodos estándar. El espacio en blanco final / inicial para la imagen general, así como para cada línea, está bien. Sin embargo, los espacios de línea iniciales deben ser consistentes para que el "no esté roto. Puede generar una lista de líneas.
Casos de prueba
input
output
---
2
^
/ \
| | |
\ \
| | |
\ /
v
---
8
^
/ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ /
v
---
10
^
/ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ /
v
Este es un código de golf, ¡el código más corto gana! Buena suerte,
S
del frío S , y llama a una versión infinita de la unaS Chain
Respuestas:
Python 2 , 47 bytes
Pruébalo en línea!
fuente
C # (.NET Core) ,
7369666462 bytesDos bytes menos y apariencia perl gracias a Barodus. No pensé en usar int? para nulos.
Pruébalo en línea!
fuente
new string[n+1]
hace? No lo había visto antes.new string[n+1]
era una especie de constructor de cadenas complicado y no una declaración de matriz -.-)Python 3 , 48
56 59 61bytesPruébalo en línea!
fuente
\ \
.05AB1E ,
2726 bytesPruébalo en línea!
Versión alternativa de 27 bytes
Pruébalo en línea!
Explicación
fuente
'^…/ \©IF„| ûû„\ û}\®R'v).C
sin mirar.Japt ,
342523 bytes¡Pruébalo en línea! Salidas como un conjunto de líneas;
-R
bandera agregada para unirse en nuevas líneas. (Gracias @Shaggy)Primersegundo intento, podría ser mejorable ...Cómo funciona
fuente
SOGL V0.12 ,
262518 bytesPruébalo aquí!
Utiliza la misma estrategia que la respuesta Japt de ETHproductions
Explicación:
fuente
push "|" and " "
qué diablos es eso incorporadoJavaScript (ES6), 60 bytes
Fragmento de prueba
Mostrar fragmento de código
fuente
n=>' ^\n /${' \\ \\\n| | |\n'.repeat(n).slice(2)} \\ /\n v'
(utilizando backticks y nuevas líneas literales)Carbón ,
272625 bytes-1 byte gracias a Carlos Alejo. -1 byte gracias a ASCII-only.
Pruébalo en línea! El enlace es a la versión detallada. # carbón-verbose-obfucation
fuente
\r
: `^ ⸿ / × \ ⸿ | El | | ⸿ \ Iθ / ⸿ v`. Versión detallada .\r
como la forma de obtener nuevas líneas de la manera más sensata. ¡Gracias!Perl 5 ,
3937 bytesPruébalo en línea!
Afeitó dos bytes con la sugerencia de @DomHastings
fuente
En realidad , 49 bytes
Pruébalo en línea!
Explicación:
fuente
05AB1E , 38 bytes
Pruébalo en línea!
fuente
C (gcc) , 82 bytes
Pruébalo en línea!
fuente
C # (.NET Core) ,
1017773 bytes¡Ahorré 24 bytes gracias a i cri everytim !
¡Guardado 4 bytes gracias a Kevin Cruijssen !
Pruébalo en línea!
Como de costumbre, la cadena que se repite en C # es un dolor.
fuente
--n>=0
an-->0
ys+="/\n v";return s;
areturn s+"/\n v";
salvar algunos bytes.Retina , 38 bytes
Pruébalo en línea!
Imprime una columna de espacios iniciales y en espacios finales en cada línea.
Explicación
El principal ahorro de bytes proviene de omitir los espacios en todas las partes literales e insertarlos al final. La figura está estructurada de tal manera que nunca hay dos no espacios uno al lado del otro, por lo que si solo los eliminamos, casi podemos arreglar la forma insertando un espacio en cada posición al final:
se convierte en:
Eso es casi correcto, excepto por la sangría. los
^
yv
faltan dos espacios. En realidad, eso es más fácil de solucionar, porque si solo insertamos un espacio explícito frente a cada uno de ellos, se obtendrán dos espacios adicionales al final. Las líneas con las barras son más complicadas porque requieren solo un espacio adicional. Para solucionar esto, insertamos un carácter de marcador de posición allí (x
). Cuando insertamos los espacios al final, no solo los insertamos para cada coincidencia vacía, sino que opcionalmente lo hacemosx
. Eso significa que, en lugar de insertar un espacio en frente, agrega exactamente un espacio sin cambiar nada más. Entonces, lo que queremos configurar es esto:x
, elx
mismo se reemplaza. Y luego todavía habrá una coincidencia vacía justo después delx
. Eso significa que cadax
lo que nos dará el resultado deseado. Así que aquí está el código:
Convierta la entrada a unario.
Convierta cada uno
1
en dos líneas con|||
yx\\
(y un salto de línea inicial).Inserte las dos primeras líneas con
^
yx/\
.Arregle el final
x\\
convirtiendo el último\
en/
y agregando una línea con elv
.Reemplace cada
x
partido o vacío con un espacio.fuente
Pyth, 46 bytes
Banco de pruebas.
fuente
%" ^\n / %s/\n v"*Q"\\\n| | |\n \
Pyth, 40 bytes
Bastante similar al de Steven Hewitt, pero desarrollado independientemente.
Pruébalo en línea
Explicación
fuente
Pyth,
333231 bytesGracias Sr. Xcoder por un byte.
Pruébelo en línea: Demostración o conjunto de pruebas
fuente
Retina , 45 bytes
Esta es una solución bastante simple.
Pruébalo en línea
Si el arte pudiera ser indexado en su lugar, sería un poco más corto (44 bytes):
fuente
Pip ,
454233 bytesPruébalo en línea!
Explicación
El código es realmente simple, aunque las nuevas líneas hacen que sea más difícil de leer. Aquí hay una mejor manera de ver la estructura:
El elemento repetido en la cadena S es
Tome esto como una cadena literal y repítalo
a
veces (dondea
está el primer argumento de la línea de comandos). Luego anteponga el prefijo:y agregue el sufijo:
e imprimir.
(Me gusta cómo terminó pareciéndose a un programa> <>).
fuente
MATL ,
474443 bytes-3 bytes gracias a Giuseppe
Pruébalo en línea!
fuente
' ^' ' / \ 'XK'| | |'XJ`' \ \'JGq@-]KP' v'
es de 44 bytes.Haskell, 53 bytes
Pruébalo en línea!
fuente
Excel, 60 bytes
fuente
PowerShell ,
83, 57 bytesPruébalo en línea!
Según las sugerencias de @ AdmBorkBork,
for
mediante el uso de un rango de números.;
y cadenas combinadas.fuente
for
mucho al golf usando1..--$args[0]|%{ }
.";"
y es más barato deshacerse de ellas por$s
completo. 57 bytes1..$args
oportunidad. No estoy seguro de cuál es la etiqueta correcta en este sitio. ¿Realizo cambios en mi respuesta y le doy crédito, o publico su solución como una respuesta separada?AsciiDots , 88 bytes
Pruébalo en línea!
fuente
Jalea , 32 bytes
Puerto aburrido de la solución Python de Lynn .
Pruébalo en línea!
Explicación:
fuente
Actualmente , 30 bytes
Esto funciona según el mismo principio que la respuesta Japt de ETHproductions , donde se agregan espacios adicionales más adelante, y toda la cadena se divide en filas de 5 para la impresión implícita. Pruébalo en línea!
No golfista
fuente
Gelatina ,
2523 bytesEsto funciona según el mismo principio que la respuesta Japt de ETHproductions , donde se agregan espacios adicionales más adelante, y toda la cadena se divide en cadenas de longitud 5 antes de imprimir. Pruébalo en línea!
Editar: Sabía que había una manera de unir la parte superior e inferior de la cadena S de una manera más golfista. Gracias a Erik the Outgolfer por -2 bytes.
No golfista
fuente
“\|||\”ẋ“ ^ /“/ v”jKs5Y
Carbón de leña , 25 bytes
Pruébalo en línea! El enlace es a la versión detallada del código.
fuente
↘^\|¶/|\|¶|F⊖N↘\|\|¶|↘\|/¶|\v
bash, 67 bytes
Pruébalo en línea
fuente
Java 8,
9376 bytesPuerto de @IanH. La respuesta de C # .NET después de jugar un poco más.
Pruébalo aquí
fuente
string
vs.var
n->
vsn=>
;)