Esse desafio é um desafio simples da arte ASCII inspirado no eclipse solar que ocorreu em 21 de agosto de 2017. Dada a entrada 0 <= n <= 4
, faça a saída do estágio correspondente do eclipse descrito abaixo:
n=0:
*****
** **
* *
* *
** **
*******
n=1:
*****
** *****
* *******
* *******
** ******
*******
n=2:
*****
*********
***********
***********
***********
*******
n=3:
*****
***** **
******* *
******* *
****** **
*******
n=4:
*****
** **
* *
* *
** **
*******
Regras
- Você pode 0 ou 1 índice, indicar o que você escolheu.
- Os caracteres usados são espaço e
*
, você pode usar qualquer caractere imprimível para*
(que não seja espaço). - Os espaços à direita são opcionais (você pode ou não tê-los).
- Este é o código-golfe , o menor número de bytes é o vencedor.
*
" ... incluindo espaço? ;)Respostas:
Python 2 ,
161149142135 bytesExperimente online!
-7 Obrigado ao Sr. Xcoder .
fonte
Carvão ,
82815543 bytes-38 bytes graças a Neil!
Experimente online! Link é a versão detalhada.
Eu fiz para o diabo. : P
Provavelmente ficarei fora do golfe por 40 bytes.2638 bytes ... Perto o suficiente?fonte
PolygonHollow
. : P 2) Ohh, legal. Obrigado!Goma de canela , 70 bytes
Hexdump:
Experimente online!
Estou esperando há tanto tempo para descobrir como usar esse idioma. : P
Portanto, o chiclete de canela é chiclete, mas é mais uma linguagem "real" que o chiclete.
O primeiro byte (
l
) define o modo para o modo de dicionário. O restante dos bytes é a seguinte sequência compactada.Isso cria essencialmente uma tabela de pesquisa com cada texto atribuído a um número. O programa, em seguida, recebe e envia o respectivo texto.
fonte
argument%4
ouargument&3
salva bytes?JavaScript (ES6),
103102 bytesEditar: salvou 1 byte graças a @darrylyeo.
fonte
*666777333*\n
em uma variável.SOGL V0.12 ,
4039 bytesExperimente aqui!
fonte
VI, 108 bytes
<CR>
é oEnter
acidente vascular cerebral,<C-?>
corresponde aControl + ?
, e<Esc>
paraEscape
, obviamente. Cada um deles conta com 1 byte (consulte meta ). A quebra de linha na solução é para facilitar a leitura.<CR>
Representa apenasEnter
traços reais .Entrada
O arquivo de entrada deve conter apenas 1 caractere, representando
n
.Lançamento
VI deve ser iniciado como:
Explicações
Existem 3 partes na solução. Descreverei a 2ª parte primeiro (2ª linha), pois é a mais fácil de explicar.
Desenhando o sol
O comando para desenhar o sol é:
O sol deve ser desenhado com
,
*
,0
,1
e3
, como este:Uma simetria teria ajudado a reduzir o tamanho dos bytes desta parte, mas não é tão importante. Não explicarei a linha completa, mas o padrão
*****
é usado para gerar facilmente a última linha, e o padrão**1110333**
foi tomado como referência para gerar as outras 3 linhas que contêm0
,1
e3
.É importante usar
0
,1
e3
para peças de sol que podem ser preenchidos (veja a próxima explicações). Desenhar este sol leva 55 bytes e provavelmente pode ser jogado com alguns truques.Enchendo o sol de acordo com
n
Para preencher corretamente o sol, as instruções a seguir são:
n = 0
, então0
,1
e3
(todos os dígitos) devem ser substituídos porn = 1
, então1
, for substituído por, os outros dígitos com
*
n = 2
, então0
,1
e3
(todos os dígitos) devem ser substituídos por*
n = 3
, então3
, for substituído por, os outros dígitos com
*
n = 4
, então0
,1
e3
(todos os dígitos) devem ser substituídos por(como
n = 0
)A partir disso, podemos inferir que as substituições necessárias são:
( primeira substituição )
*
( segunda substituição )Observe que "alguns dígitos" pode significar "sem dígitos" (
n = 2
por exemplo). E "todos os outros dígitos" também podem representar "sem dígitos", se todos os dígitos já tiverem sido substituídos pela primeira substituição (n = 0
por exemplo).A segunda substituição pode ser escrita facilmente em 11 bytes :
A primeira substituição depende
n
, então primeiro temos que calcular quais dígitos serão substituídos. Se os caracteres substituídos estiverem armazenados no registroa
, o comando de substituição também será gravado em 11 bytes :<C-r>a
é substituído pelo conteúdo do registroa
quando o comando é digitado.Para calcular o valor de
a
, seguindo as instruções anteriores, o algoritmo é (em pseudo-código):"X"
string é usada porque quandon = 2
, nenhum dígito é substituído por espaços. Qualquer string que não seja o sol pode ser usada aqui, desde que a primeira substituição não faça nada.Isso pode ser escrito em 31 bytes :
Solução
Coloque todas essas peças na ordem certa e você terá a solução:
fonte
PHP, 114 + 1 bytes
+1 byte para
-R
. Obrigado @ Neil pela dica de mudança.usa sublinhado para
*
, indexado a 0. Execute como pipe-nR
ou experimente online .Requer PHP 5.5 ou posterior: o
PHP antigo não entende a indexação literal de strings (erro de análise);
O PHP 7.1 reclama de valores não numéricos (substitua
+$c
por$c>0
para corrigir).fonte
" _"[$c*2>>$argn&1]
evita parâmetros de mudança negativos, se você precisar.Python 2 ,
170169 bytesExperimente online!
fonte
Python 2 , 181 bytes
Experimente online!
Abordagem muito ingênua,
trabalhando no golfe.fonte
Java 8,
225213211 bytesExperimente aqui.
fonte
05AB1E , 46 bytes
Experimente online!
fonte