É provável que alguém que usou o Twitter alguns meses atrás saiba sobre o 'Howdy! Eu sou o xerife do meme X ". Onde uma imagem simples de um xerife é desenhada com emoji e muda para se ajustar a um tema. Então, pensei que estava na hora do xerife do Code Golf. Aqui está ele:
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
Este em particular possui 'pixels' com um caractere de largura e um caractere de altura. Para gerá-lo, os argumentos serão 1 e 1.
E se ele for mais largo do que alto?
######
##########
######
######
######
##
##########
## ## ##
## ## ##
## ## ##
##
######
## ##
## ##
## ##
## ##
Ele tem uma altura de 1, mas uma largura de 2.
Regras:
- O desafio é escrever um código para desenhar o seu próprio xerife do Code Golf, com o menor número possível de caracteres.
- Use qualquer linguagem de programação que seu coração desejar.
- Seu código deve receber dois argumentos, sendo ambos inteiros, para a altura e largura do xerife.
- A saída deve ser composta de espaços em branco únicos para o plano de fundo e quaisquer outros caracteres que você escolher para o xerife. (Eu usei hashes para os casos de teste, mas não importa o que você usa).
- Deve ser possível que a altura seja um número inteiro negativo, invertendo a imagem.
- A largura pode ser um número inteiro negativo, mas como a imagem é simétrica, será idêntica ao seu valor positivo.
- Espaços em branco à direita são irrelevantes.
- Se um dos argumentos for 0, essa dimensão será 'achatada' em uma única linha ou coluna. O comprimento dessa linha é o outro argumento multiplicado pela altura ou largura do xerife, respectivamente.
- Se ambos os argumentos forem 0, ambas as linhas serão 'achatadas', deixando um único caractere positivo.
- Não é essencial, mas inclua um link para um intérprete on-line, como tio.run
- A saída deve ser uma sequência, em várias linhas, ou saída para o console.
Casos de teste
1 alto, 1 largo
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
2 de altura, 1 de largura
###
###
#####
#####
###
###
###
###
###
###
#
#
#####
#####
# # #
# # #
# # #
# # #
# # #
# # #
#
#
###
###
# #
# #
# #
# #
# #
# #
# #
# #
1 alto, 2 largo
######
##########
######
######
######
##
##########
## ## ##
## ## ##
## ## ##
##
######
## ##
## ##
## ##
## ##
2 altos, 2 largos
######
######
##########
##########
######
######
######
######
######
######
##
##
##########
##########
## ## ##
## ## ##
## ## ##
## ## ##
## ## ##
## ## ##
##
##
######
######
## ##
## ##
## ##
## ##
## ##
## ##
## ##
## ##
-1 de altura, 1 de largura
# #
# #
# #
# #
###
#
# # #
# # #
# # #
#####
#
###
###
###
#####
###
1 alto, -1 de largura
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
0 alto, 0 amplo
#
1 alta, 0 ampla
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
0 alto, 2 largo
##################
Divirtam-se!
Respostas:
JavaScript (ES6), 171 bytes
Recebe entrada na sintaxe de currying
(width)(height)
. Retorna uma matriz de seqüências de caracteres.Experimente online!
Quão?
Somente a metade esquerda do xerife é codificada como máscaras de bits binárias, incluindo a coluna do meio:
fonte
Python 2 ,
228218202189173 bytesExperimente online!
Alternativas:
Python 2 , 173 bytes
fonte
Perl 5 ,
169166157 bytesExperimente online!
Talvez mais pudesse ser ganho com um pouco de brincadeira.
fonte
split
, estou usando isso agora e salvei dois bytes. Também raspe um ao soltar os'
s ao redor dos índices. Não foi possível começarsay
a trabalhar.-a
, perdeu mais 9 bytes com isso.say
com-M5.010
, mas nem todo mundo gosta, você pode usar-l
e manterprint
, mas, se não, você pode usar uma nova linha literal ou$_.$/
para -1. É bom ver outro jogador de golfe Perl!say
não estava funcionando porque a nova linha foi anexada aomap
modo de uso que requer uma ligação um pouco diferente. Também percebi que quando seu código termina em uma variável e você está usando-p
ou algo que pode ser usado@;
, inclui: Experimente online! Espero que você não se importe com os meus comentários!Carvão , 61 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Insira as dimensões.
Se a altura for diferente de zero, passe pela metade direita do xerife ...
... repetindo o número absoluto de altura várias vezes ...
... se a largura for diferente de zero, repita cada caractere o número absoluto de vezes, caso contrário a
#
.Mas se a altura for zero, repita
#
5 vezes a largura absoluta, mas pelo menos 1#
.Reflita para produzir a metade esquerda do xerife.
Se a altura for negativa, vire o xerife.
fonte
Python 2 ,
217216 bytesExperimente online!
Um riff Pythonic na abordagem de Arnauld .
Ugh! Agora funciona para todas as condições de borda ...
fonte
Limpo ,
299275272 bytesExperimente online!
fonte
Powershell,
174170 bytesInspirado pelo Javascript de Arnauld
Ungolfed, explicado e teste com script:
fonte