Muitas pessoas estão familiarizadas com a questão de contar ovelhas para adormecer. Há um rebanho de ovelhas, algumas delas pulando uma cerca, e você conta as ovelhas quando elas pulam. Supostamente, isso ajuda a acalmar sua mente e coloca você em um estado de sono para que você adormeça.
Aqui está uma ovelha ASCII voltada para a direita, esperando para ser contada:
'00^>
||
Aqui está uma ovelha ASCII pulando uma cerca:
'00^>
/\
++
Aqui está um voltado para a esquerda, já tendo sido contado:
<^00'
||
O desafio
Dadas duas entradas inteiras, n
e m
, n > 2
descrevendo quantas ovelhas totalizam e m > 0
dizendo quantas ovelhas já foram contadas, produz uma representação de arte ASCII da contagem de ovelhas para adormecer.
Agora, para a reviravolta:
- Devido ao tamanho das canetas nas quais as ovelhas estão, a linha superior pode conter apenas um máximo de
10
ovelhas, sem contar as ovelhas que estão pulando no momento, que também devem estar sempre na linha superior. - As linhas subsequentes não podem ter as ovelhas fora de suas respectivas canetas (você não pode ter mais ovelhas à esquerda na segunda linha do que na primeira linha e o mesmo para a direita).
- Se houver
11
ou mais ovelhas totais, a linha superior deve ter10
mais as ovelhas saltadoras. - Os espaços em branco à esquerda / à esquerda e os espaços entre as ovelhas não importam, desde que:
- Há no mínimo um caractere de espaço em branco entre ovelhas
- Todos os caracteres estão alinhados adequadamente.
Desde que essas regras sejam cumpridas, o arranjo real das ovelhas depende da sua implementação.
Exemplos
Por exemplo, aqui está n=3
e m=1
, o caso mais simples.
'00^>
'00^> /\ <^00'
|| ++ ||
Aqui está n=11
e m=6
, o máximo de ovelhas que podem caber em uma linha horizontal.
'00^>
'00^> '00^> '00^> '00^> /\ <^00' <^00' <^00' <^00' <^00' <^00'
|| || || || ++ || || || || || ||
Aqui está um exemplo diferente disso, com n=11
em=1
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00'
|| || || || || || || || || ++ ||
Um exemplo maior com n=30
em=12
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> <^00' <^00'
|| || || || || || || || || ||
'00^> <^00' <^00'
|| || ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
Aqui está um exemplo com n=17
em=2
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || ||
Aqui está um exemplo com n=19
em=3
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00' <^00'
|| || || || || || || ++ || || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || || ||
'00^>
||
Observe que todos esses são exemplos . No último, você pode acabar criando uma matriz vertical de ovelhas no lado direito, o que permitirá que o lado esquerdo se encaixe em duas linhas. Ou talvez um quadrado 2x2 de ovelhas no lado direito, que também encaixaria a ovelha do lado esquerdo em duas fileiras. Etc.
E / S e regras
- A entrada pode ser obtida em qualquer formato razoável e por qualquer método conveniente .
- Novas linhas à esquerda / à direita ou outro espaço em branco são opcionais, desde que os caracteres sejam alinhados adequadamente.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- A saída pode ser no console, retornada como uma lista de cadeias, retornada como uma única cadeia, etc.
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
n=11
em=9
n=11
tal 0<m<=10
. Isso força você a ter todas as ovelhas na linha superior e um número dinâmico de ovelhas à esquerda ( n-1-m
) e à direita ( m
) da cerca e não pode usar tamanhos de caneta fixos.