A primavera chegou recentemente e é quase o momento em que as flores começam a brotar. Então, eu quero que você os ajude a crescer.
Sua tarefa:
Dados dois números,, m
e n
, produzem m
flores colocadas aleatoriamente em uma n*n
grade.
Uma única flor fica assim:
&
|
A posição de uma flor é definida por onde ela &
está. Ao colocar duas flores aleatoriamente, duas não podem estar no mesmo lugar. Se uma flor se &
sobrepõe a outra |
, exiba &
. A linha inferior das flores não pode conter nenhuma &
.
A entrada pode ser como um número ou uma sequência, através de qualquer um dos métodos padrão.
A saída pode ser uma lista de cadeias, cada uma representando uma linha da grade ou uma cadeia delimitada, seguindo as mesmas diretrizes da lista. Métodos padrão de saída. Rastrear o que for permitido é permitido, e você pode usar as guias para separar suas flores. Observe que toda grade deve ser completamente preenchida, com espaços ou algo assim.
Note-se que a entrada será sempre válido, você sempre será capaz de ajustar legalmente as m
flores no n
por n
grade.
Casos de teste:
Como apenas casos de teste muito restritos podem ser garantidos, devido a todo o bit de "posicionamento aleatório", esse será o único tipo de caso de teste com uma resposta fornecida. Mas tentarei todos os envios on-line para garantir que eles também sejam válidos usando alguns casos de teste.
Entrada para os casos de teste é dado em forma m, n
.
Input: 2, 2
Output:
&&
||
--------------
Input: 6, 3
Output:
&&&
&&&
|||
Observe que a nova linha após a palavra Output:
nos casos de teste é opcional.
Outros casos de teste:
- 1, 10
- 0, 100
- 5, 8
- 6, 3
Código de golfe para ganhar o menor código!
Obrigado a ComradeSparklePony por fazer esse desafio e publicá-lo na caixa de presente do Papai Noel Secreto !. Postagem em sandbox
Respostas:
Gelatina , 33 bytes
Experimente online!
Quão?
fonte
m
en
ou por que vocêsquare m
? com um nilad ?rotate
. Bom trabalho; excelente avaria!PHP (> = 7.1),
135 131 128 116 110109 bytesrecebe entrada de argumentos de linha de comando; executar
-nr
ou testá-lo online .demolir
fonte
-r
é gratuito ; Ele diz ao PHP para executar o código a partir do argumento da linha de comando.-n
redefine o PHP para as configurações padrão.Python 2 , 150 bytes
Experimente online!
Quão?
Retira
input()
de STDIN e descompacta a tupla fornecida (uma sequência separada por vírgula de números inteiros decimais como3,6
) emn
em
.Cria um
n*(n-1)
"canteiro de flores" comprido e unidimensionalb
, concatenando:- uma lista contendo uma "flor"
[1]
repetidasm
vezes; e- uma lista contendo um "espaço"
[0]
repetidon*~-n-m
vezes *.* O operador girino
~
(~x=-1-x
) economiza 2 bytesn*~-n-m
no lugar da aparência mais normaln*(n-1)-m
.Embaralha (usando
random
ashuffle
função) este canteiro para colocar as flores e os espaços aleatoriamente entre asn*(n-1)
posições.Passa pelas linhas indexadas em 0
r
e,prints
cada uma por sua vez, para criar um canteiro de flores bidimensional a partir da única ...O
n*n
canteiro final bidimensional ( ) possui hastes,,s
uma linha abaixo das cabeças de floresf
, se e somente se não houver uma cabeça de flor para mostrar. Isto é conseguido por XORing (^
)f
com-s
ondef
es
são os1
s e0
s desde antes e utilizando o resultado de índice para a cadeia de comprimento 3' &|'
:Para obter
f
es
azip
função é usada com duas cópias do canteiro unidimensional, uma comn
espaços à direita (as cabeças das flores) e outra comn
espaços à frente (as hastes). A coisa toda é criada para cada linha (para salvar bytes), e a linha necessária é cortada usando[r*n:r*n+n]
.fonte
Python 2 ,
184179 bytesExperimente online!
fonte
Python 2 , 129 bytes
Experimente online!
Gera a string de saída, um caractere por vez. Escolhe aleatoriamente se a célula atual é uma flor com probabilidade igual ao número
m
de flores restantes dividido pelo número de espaços restantes. Adiciona uma nova linha a todos osn
caracteres. Uma célula em branco é preenchida com uma haste|
se o símbolon
do final for a&
.fonte
PHP, 111 bytes
Versão Online
-1 Byte para uma nova linha física
uma solução de 115 bytes usando max
Dessa maneira, com 137 bytes, embaralha a primeira parte da string
fonte
JavaScript (ES6), 157 bytes
Explicação: Cria uma matriz que representa a grade de flores mais novas linhas. Recursivamente procura aleatoriamente quadrados vazios para colocar flores até que o número desejado de flores seja atingido. Finalmente, as hastes das flores são geradas onde há espaço para elas.
fonte
Carvão , 27 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Entrada
n
.Altere a direção de impressão padrão para baixo.
Entrada
m
e loop que muitas vezes.Ir para um local aleatório na grade.
Se já houver uma flor, continue pulando para locais aleatórios até encontrar um local adequado.
Imprima a cabeça da flor.
Imprima o talo se ainda não houver uma cabeça de flor abaixo.
fonte