Es probable que cualquiera que haya usado Twitter hace un par de meses conozca el '¡Hola! Soy el sheriff de X "meme. Donde una simple imagen de un sheriff se dibuja con emoji y cambia para adaptarse a un tema. Así que pensé que era hora del Sheriff de Code Golf. Aquí está:
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
Este en particular tiene 'píxeles' que tienen un carácter de ancho y un carácter de alto. Para generarlo, los argumentos serán 1 y 1.
¿Qué pasa si va a ser más ancho que alto?
######
##########
######
######
######
##
##########
## ## ##
## ## ##
## ## ##
##
######
## ##
## ##
## ##
## ##
Tiene una altura de 1, pero un ancho de 2.
Reglas:
- El desafío es escribir código para dibujar su propio Sheriff de Code Golf, en la menor cantidad de caracteres posible.
- Use cualquier lenguaje de programación que su corazón desee.
- Su código debe tomar dos argumentos, los cuales son enteros, para la altura y el ancho del Sheriff.
- La salida debe estar compuesta de espacios en blanco individuales para el fondo y cualquier otro personaje (s) que elija para el Sheriff. (He usado hashes para los casos de prueba, pero no importa lo que uses).
- Debería ser posible que la altura sea un número entero negativo, invirtiendo la imagen.
- El ancho puede ser un número entero negativo, pero como la imagen es simétrica, será idéntica a su valor positivo.
- Los espacios en blanco finales son irrelevantes.
- Si cualquiera de los argumentos es 0, esa dimensión se 'aplana' a una sola fila o columna. La longitud de esta línea es el otro argumento multiplicado por la altura o el ancho del Sheriff, respectivamente.
- Si ambos argumentos son 0, ambas líneas se 'aplanan', dejando un solo carácter positivo.
- No es esencial, pero incluya un enlace a un intérprete en línea como tio.run
- La salida debe ser una cadena, a través de varias líneas, o salida a la consola.
Casos de prueba
1 alto, 1 ancho
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
2 de alto, 1 de ancho
###
###
#####
#####
###
###
###
###
###
###
#
#
#####
#####
# # #
# # #
# # #
# # #
# # #
# # #
#
#
###
###
# #
# #
# #
# #
# #
# #
# #
# #
1 alto, 2 ancho
######
##########
######
######
######
##
##########
## ## ##
## ## ##
## ## ##
##
######
## ##
## ##
## ##
## ##
2 de alto, 2 de ancho
######
######
##########
##########
######
######
######
######
######
######
##
##
##########
##########
## ## ##
## ## ##
## ## ##
## ## ##
## ## ##
## ## ##
##
##
######
######
## ##
## ##
## ##
## ##
## ##
## ##
## ##
## ##
-1 alto, 1 ancho
# #
# #
# #
# #
###
#
# # #
# # #
# # #
#####
#
###
###
###
#####
###
1 alto, -1 ancho
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
0 alto, 0 ancho
#
1 alto, 0 ancho
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
0 alto, 2 ancho
##################
Que se diviertan!
Respuestas:
JavaScript (ES6), 171 bytes
Toma entrada en la sintaxis de curry
(width)(height)
. Devuelve una matriz de cadenas.Pruébalo en línea!
¿Cómo?
Solo la mitad izquierda del sheriff está codificada como máscaras de bits binarias, incluida la columna central:
fuente
Python 2 ,
228218202189173 bytesPruébalo en línea!
Alternativas:
Python 2 , 173 bytes
fuente
Perl 5 ,
169166157 bytesPruébalo en línea!
Tal vez se podría ganar más jugando un poco.
fuente
split
, lo estoy usando ahora y ahorré dos bytes. También afeitó uno al perder la'
s alrededor de los índices. Sinsay
embargo, no pude llegar al trabajo.-a
, perdió 9 bytes más con eso.say
con-M5.010
, pero no a todos les gusta, puede usar-l
en su lugar y mantenerprint
, pero si no, puede usar una nueva línea literal o$_.$/
para -1. ¡Qué bueno ver a otro golfista de Perl!say
no funcionaba porque la nueva línea se adjuntaba en el,map
por lo que para usarla se necesita una llamada ligeramente diferente. También me di cuenta de que cuando su código termina en una variable y está usando-p
algo que puede usar,@;
ya que incluye eso: ¡ Pruébelo en línea! Espero que no te molesten mis comentarios!Carbón , 61 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Ingrese las dimensiones.
Si la altura no es cero, pase sobre la mitad derecha del sheriff ...
... repitiendo la altura absoluta el número de veces ...
... si el ancho no es cero, repite cada carácter el número absoluto de veces, de lo contrario a
#
.Pero si la altura es cero, repita
#
5 veces el ancho absoluto, pero al menos 1#
.Reflexiona para producir la mitad izquierda del sheriff.
Si la altura es negativa, voltea al sheriff.
fuente
Python 2 ,
217216 bytesPruébalo en línea!
Un riff pitón sobre el enfoque de Arnauld .
Ugh! Ahora funciona para todas las condiciones de borde ...
fuente
Limpiar ,
299275272 bytesPruébalo en línea!
fuente
Potencia Shell,
174170 bytesInspirado por Arnauld's Javascript
Ungolfed, explicado y probado con guión:
fuente