Gracias a FryAmTheEggman por la idea de esta segunda versión.
Versión 1 aquí .
Desafío no tan simple: dada una cantidad de cartas, construye la mayor casa de cartas que puedas con esa cantidad de cartas, de acuerdo con el siguiente orden de construcción:
/\ /\ /\ /\/\
-- -- -- ---- ----
/\ → /\/\ → /\/\ → /\/\ → /\/\/\ → /\/\/\ → /\/\/\ →
/\ /\
-- -- --
/\/\ /\/\ /\/\
---- ---- ----
→ /\/\/\ → /\/\/\ → /\/\/\/\ → ...
Entonces comienza con una casa de una sola planta, luego construye el grupo adyacente, luego coloca la tarjeta de puente, luego construye el grupo en el segundo piso, luego comienza a construir grupos y puentes desde el primer piso en diagonal para llegar al tercer piso, y así en.
Una sola tarjeta se representará con a /
, a \
o a --
. Si después de usar tantas cartas como sea posible, le queda una, simplemente envíe lo que ha logrado hasta ahora (vea el ejemplo para 3 cartas, el resultado es el mismo que para 2 cartas). La única excepción es el caso de 1 tarjeta, que debe generar una tarjeta plana.
Ejemplos:
Input: 1
Output:
-- <a card lying on the floor>
Input: 2
Output:
/\
Input: 3
Output:
/\
Input: 5
Output:
--
/\/\
Input: 10
Output:
/\
----
/\/\/\
Input: 20
Output:
/\
--
/\/\/\
------
/\/\/\/\
Input: 39
Output:
--
/\/\
----
/\/\/\
------
/\/\/\/\
--------
/\/\/\/\/\
Input: 40
Output:
/\
--
/\/\
----
/\/\/\
------
/\/\/\/\
--------
/\/\/\/\/\
La entrada puede ser numérica o una cadena, y siempre será un número entero positivo. La salida debe ser exactamente como se muestra, con espacios iniciales y finales y líneas nuevas permitidas.
Este es el código de golf , ¡así que puede ganar el programa / función más corto para cada idioma!
Respuestas:
Carbón , 67 bytes
Pruébalo en línea! Nota: La última versión de Charcoal no necesita el
»«
de -2 bytes. Explicación:Lea la entrada como un entero en
θ
.Caso especial: si la entrada es 1, imprima a
-
.η
representa el número de tarjetas necesarias para construir la siguiente capa, inicialmente 2. Un bucle while se repite siempre que haya suficientes tarjetas para la capa.Imprime la mitad izquierda de la siguiente capa. (Quería imprimir la mitad derecha, pero no pude hacer que se refleje correctamente por alguna razón). El número de
-
s es un tercio del número de tarjetas en la capa, redondeado hacia abajo. (Véase también mi respuesta a la parte 1.)Reste el número de tarjetas del número de entrada y agregue tres tarjetas al número requerido para la siguiente capa.
Refleja la casa hasta ahora. (Esto también lo convierte
-
en--
el caso de 1 carta).Mueve el cursor a la derecha de la casa.
Repita para cada tarjeta restante (si la hay).
Si la tarjeta módulo 3 es:
1, luego imprime un par de cartas;
2, luego imprima una tarjeta horizontal;
De lo contrario, omita la tarjeta (porque se necesita un par en este punto).
fuente
--
(una tarjeta plana), pero si inició su programa antes de que cambie ese requisito, lo omitiré ...Python 2 , 167
182bytes167 bytes
182 bytes
Explicación (versión de 167 bytes)
Pruébalo en línea!
fuente
<pre><code>...
</code></pre>
etiquetas alrededor de los bloques individuales de su código en lugar de sangrar 4 espacios<pre><code>
etiquetas, está capturando<3))+"\n"+" "*v+"/\\"*(h+(r>
como otra etiqueta y no muestra esa región de la solución. Quizás alguien en la comunidad que entienda esto un poco mejor podría informarnos cómo evitar eso ... pero aparte de eso, su formato actual es perfectamente legible y, por lo tanto, niega la necesidad de este tipo de formato todos juntos<
por<
y>
para>
Perl 5 , 129 bytes
Pruébalo en línea!
fuente