Este desafío es un desafío de arte ASCII simple inspirado en el eclipse solar que ocurrió el 21 de agosto de 2017. Dada una entrada 0 <= n <= 4
, salida de la etapa correspondiente del eclipse que se describe a continuación:
n=0:
*****
** **
* *
* *
** **
*******
n=1:
*****
** *****
* *******
* *******
** ******
*******
n=2:
*****
*********
***********
***********
***********
*******
n=3:
*****
***** **
******* *
******* *
****** **
*******
n=4:
*****
** **
* *
* *
** **
*******
Reglas
- Puede 0 o 1 índice, indicar lo que eligió.
- Los caracteres utilizados son espacio y
*
puede utilizar cualquier carácter imprimible para*
(que no sea espacio). - Los espacios finales son opcionales (puede que los tenga o no).
- Este es el código de golf , el conteo de bytes más bajo es el ganador.
*
" ... ¿incluido el espacio? ;)Respuestas:
Python 2 ,
161149142135 bytesPruébalo en línea!
-7 gracias al Sr. Xcoder .
fuente
Carbón ,
82815543 bytes-38 bytes gracias a Neil!
Pruébalo en línea! El enlace es a la versión detallada.
Lo hice por el gusto de hacerlo. : P
Probablemente saldré de golf por 40 bytes.2638 bytes ... ¿Lo suficientemente cerca?fuente
PolygonHollow
. : P 2) Ohh, bien. ¡Gracias!Chicle de canela , 70 bytes
Hexdump:
Pruébalo en línea!
He esperado tanto tiempo para descubrir cómo usar este idioma. :PAGS
Entonces, Cinnamon Gum es Bubblegum, pero es más un lenguaje "real" que Bubblegum.
El primer byte (
l
) establece el modo en modo diccionario. El resto de los bytes es la siguiente cadena comprimida.Esto esencialmente hace una tabla de búsqueda con cada texto asignado a un número. El programa luego toma entrada y da salida al texto respectivo.
fuente
argument%4
oargument&3
guardar bytes?JavaScript (ES6),
103102 bytesEditar: guardado 1 byte gracias a @darrylyeo.
fuente
*666777333*\n
en una variable.SOGL V0.12 ,
4039 bytesPruébalo aquí!
fuente
VI, 108 bytes
<CR>
es elEnter
accidente cerebrovascular,<C-?>
corresponde aControl + ?
, y<Esc>
queEscape
obviamente. Cada uno de estos cuenta para 1 byte (ver meta ). Los saltos de línea en la solución son para facilitar la lectura. Solo<CR>
representaEnter
trazos reales .Entrada
El archivo de entrada debe contener solo 1 carácter, que representa
n
.Lanzamiento
VI debe comenzar como:
Explicaciones
Hay 3 partes en la solución. Primero describiré la segunda parte (segunda línea), ya que es la más fácil de explicar.
Dibujando el sol
El comando para dibujar el sol es:
El sol debe ser dibujado con
,
*
,0
,1
y3
, de esta manera:Una simetría habría ayudado a reducir el tamaño de bytes de esta parte, pero no es tan importante. No explicaré la línea completa, pero el patrón
*****
se usa para generar fácilmente la última línea, y el patrón**1110333**
se ha tomado como referencia para generar las otras 3 líneas que contienen0
,1
y3
.Es importante usarlo
0
,1
y3
para las partes solares que se pueden llenar (vea las siguientes explicaciones). Dibujar este sol toma 55 bytes , y probablemente se pueda jugar golf con algunos trucos.Llenando el sol de acuerdo a
n
Para llenar correctamente el sol, las instrucciones a seguir son:
n = 0
, entonces0
,1
y3
(todos los dígitos) deben reemplazarse conn = 1
, entonces1
debe ser reemplazado con, los otros dígitos con
*
n = 2
, entonces0
,1
y3
(todos los dígitos) deben reemplazarse con*
n = 3
, entonces3
debe ser reemplazado con, los otros dígitos con
*
n = 4
, entonces0
,1
y3
(todos los dígitos) deben reemplazarse con(like
n = 0
)A partir de eso, podemos inferir que las sustituciones requeridas son:
( primera sustitución )
*
( segunda sustitución )Tenga en cuenta que "algunos dígitos" pueden significar "sin dígitos" (
n = 2
por ejemplo). Y "todos los demás dígitos" también pueden representar "sin dígitos", si todos los dígitos ya han sido reemplazados por la primera sustitución (n = 0
por ejemplo).La segunda sustitución se puede escribir fácilmente en 11 bytes :
La primera sustitución depende
n
, por lo que primero tenemos que calcular qué dígitos se van a reemplazar. Si los caracteres reemplazados se almacenan en el registroa
, el comando de sustitución también se escribe en 11 bytes :<C-r>a
se reemplaza por el contenido del registroa
cuando se escribe el comando.Para calcular el valor de
a
, siguiendo las instrucciones anteriores, el algoritmo es (en pseudocódigo):"X"
La cadena se utiliza porque cuandon = 2
no se reemplazan los dígitos por espacios. Aquí se puede usar cualquier cadena que no sea el sol, siempre que la primera sustitución no haga nada.Esto podría escribirse en 31 bytes :
Solución
Ponga todas estas partes en el orden correcto y tendrá la solución:
fuente
PHP, 114 + 1 bytes
+1 byte para
-R
. Gracias @Neil por la indirecta cambiante.usa guión bajo para
*
, indexado a 0. Ejecutar como tubería-nR
o probarlo en línea .Requiere PHP 5.5 o posterior:
PHP anterior no comprende la indexación de cadenas literales (error de análisis);
PHP 7.1 se queja de valores no numéricos (reemplace
+$c
con$c>0
para arreglar).fuente
" _"[$c*2>>$argn&1]
evita los parámetros de cambio negativos si lo necesitas.Python 2 ,
170169 bytesPruébalo en línea!
fuente
Python 2 , 181 bytes
Pruébalo en línea!
Enfoque muy ingenuo,
trabajando en golfin 'nvm.fuente
Java 8,
225213211 bytesPruébalo aquí
fuente
05AB1E , 46 bytes
Pruébalo en línea!
fuente