Agradecemos a FryAmTheEggman pela ideia para esta segunda versão.
Versão 1 aqui .
Desafio não tão simples: dado um número de cartas, construa o maior castelo de cartas possível com esse número, de acordo com a seguinte ordem de construção:
/\ /\ /\ /\/\
-- -- -- ---- ----
/\ → /\/\ → /\/\ → /\/\ → /\/\/\ → /\/\/\ → /\/\/\ →
/\ /\
-- -- --
/\/\ /\/\ /\/\
---- ---- ----
→ /\/\/\ → /\/\/\ → /\/\/\/\ → ...
Então, você começa com uma casa de um andar, constrói o grupo adjacente, coloca a placa da ponte, constrói o grupo no segundo andar, começa a construir grupos e pontes do primeiro andar na diagonal para alcançar o terceiro andar, e assim em.
Um único cartão será representado com a /
, a \
ou a --
. Se, depois de usar o maior número possível de cartões, você tiver apenas um, basta imprimir o que você realizou até o momento (veja o exemplo de 3 cartões, o resultado é o mesmo que para 2 cartões). A única exceção é o caso de 1 cartão, que deve gerar um cartão plano.
Exemplos:
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:
/\
--
/\/\
----
/\/\/\
------
/\/\/\/\
--------
/\/\/\/\/\
A entrada pode ser numérica ou uma sequência e sempre será um número inteiro positivo. A saída deve ser exatamente como mostrada, com espaços à esquerda e à direita e novas linhas permitidas.
Isso é código-golfe , portanto, pode ganhar o programa / função mais curto para cada idioma!
Respostas:
Carvão , 67 bytes
Experimente online! Nota: A versão mais recente do Charcoal não precisa
»«
de -2 bytes. Explicação:Leia a entrada como um número inteiro em
θ
.Caso especial: se a entrada for 1, imprima a
-
.η
representa o número de cartões necessários para construir a próxima camada, inicialmente 2. Um loop while se repete enquanto houver cartões suficientes para a camada.Imprima a metade esquerda da próxima camada. (Eu queria imprimir a metade certa, mas não consegui que ela refletisse corretamente por algum motivo.) O número de
-
s é um terço do número de cartões na camada, arredondados para baixo. (Veja também minha resposta à parte 1.)Subtraia o número de cartões do número de entrada e adicione três cartões ao número necessário para a próxima camada.
Espelhe a casa até agora. (Isso também transforma o
-
em--
para o caso de um cartão.)Mova o cursor para a direita da casa.
Repita para cada cartão restante (se houver).
Se o módulo de cartão 3 for:
1 e depois imprima um par de cartões;
2 e, em seguida, imprima um cartão horizontal;
Caso contrário, pule a carta (porque um par é necessário neste momento).
fonte
--
(a placa plana), mas se você começou seu programa antes de eu mudei essa exigência eu vou pular essa ...Python 2 , 167
182bytes167 bytes
182 bytes
Explicação (versão de 167 bytes)
Experimente online!
fonte
<pre><code>...
</code></pre>
marcas em torno de seu código de blocos individuais em vez recuando 4 vagas<pre><code>
tags, elas estão capturando<3))+"\n"+" "*v+"/\\"*(h+(r>
como outra tag e não exibindo a região da solução. Talvez alguém da comunidade que entenda isso um pouco melhor possa nos informar como evitar isso ... mas, além disso, sua formatação atual é perfeitamente legível e, portanto, nega a necessidade desse tipo de formatação todos juntos<
para<
e>
para>
Perl 5 , 129 bytes
Experimente online!
fonte