Por isso, famílias de todo o mundo estão construindo árvores de Natal.
Mas essa árvore normal pode ficar entediada depois de um tempo, então vamos criar uma árvore ASCII!
As folhas são representadas #
e devem ser organizadas conforme mostrado na saída de exemplo. Temos 5 bolas ( O
) e 5 bastões de doces ( J
), que colocamos aleatoriamente ao redor da árvore. Também temos uma vela em cima.
Entrada: nenhuma
Resultado:
^
|
###
##O##
#######
#####
####J##
#########
####O######
#############
###J###
#########
####O###J##
#######O#####
###J########O##
###########J#####
###
###
Regras (se não estiver nas regras, suponha que você possa)
Bolas e bastões de doces devem ser colocados aleatoriamente na árvore e devem ter pelo menos uma folha entre elas, sem contar as diagonais.
Cada folha deve ter uma chance diferente de zero de obter uma bola ou um bastão de doces.
Pode haver espaços iniciais ou finais em cada linha, desde que a árvore tenha a forma adequada.
Isso é código-golfe , então o código mais curto em caracteres vence.
fonte
Respostas:
JavaScript (ES6), 148 bytes
Felizmente, isso deve estar em conformidade com a condição 'aleatória o suficiente'.
Demo
Mostrar snippet de código
fonte
j=new Date
comj=0
aj=12
.)Script CS - 306 bytes
Mais uma vez com formatação e comentários:
É basicamente C #, mas o uso do CS-Script me permite pular toda a placa da caldeira.
Experimente aqui!
Notas:
Atualmente, isso gera outra linha de espaços em branco abaixo da árvore para garantir que a 'verificação de ornamentos existentes abaixo' não gere uma IndexOutOfBoundsException. Outras soluções seriam:
Vou deixar para o OP, se isso mudar.
Por fim, este é o meu primeiro golfe, então qualquer feedback é apreciado. ;)
fonte
using System;
Porém, ele pode ser necessário incluir na sua contagem de bytes, pois você não pode usá-laRandom
ouConsole
sem ela. meta.codegolf.stackexchange.com/questions/10081/… Lamentamos adicionar 13 bytes :(using System;
não é necessário (importa automaticamente os namespaces comuns). Mas talvez eu esteja rachando os cabelos. ¯_ (ツ) _ / ¯_=>{var c=... return c;}
TSQL,
556532494476 bytesEsse script precisa ser executado no banco de dados mestre
Golfe:
Ungolfed:
Experimente
fonte
Python 3 -
450427 bytesEu sei que
450
é demais para python. Mas, mas.....Se o
for i in'O'*...
for transformado em uma função recursiva melhor , muitos bytes poderão ser reduzidos.Experimente aqui
Editar :
Economizou 2 bytes usando
;
como delimitador e vários bytes, considerando a contagem de bytes de nova linha como 1 byte.fonte
JavaScript, 204 bytes
fonte
\n
como 1 byte?PHP, 200 bytes
pode ser mais curto com uma abordagem mais sofisticada; mas estou com pressa.
requer PHP 5.6 ou 7.0. Corra com
-nr
ou experimente online .fonte
Scala, 329 bytes
fonte