Desafio com tema do Dia da Independência Especial (EUA) para você hoje. Você deve escrever um programa que imprima essa representação artística da bandeira americana.
0
|---------------------------------------------------------
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
| * * * * * #################################|
| * * * * * * |
| * * * * * |
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
|---------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Espaços à direita em cada linha, bem como uma nova linha à direita, são permitidos.
Observe que essa não é a aparência da bandeira, mas é a mais próxima que eu poderia chegar com o ASCII.
Como de costume, este é um código de golfe, pelo que as brechas padrão se aplicam e a resposta mais curta em bytes ganha!
code-golf
ascii-art
kolmogorov-complexity
DJMcMayhem
fonte
fonte
Respostas:
CJam,
18412010910176746967646258 bytesExperimente on-line no intérprete CJam .
Idéia
A parte mais interessante da bandeira é o padrão de estrelas e listras.
Se repetirmos dois espaços e um sinal numérico 56 vezes e anexarmos uma barra vertical a cada um, obteremos
Repetindo esse padrão 7 vezes e descartando as duas primeiras linhas, obtemos as faixas:
Agora, se repetirmos a sequência
" * "
50 vezes e dividirmos o resultado em pedaços de comprimento 22, obteremos as estrelas:O espaço em branco está um pouco fora, mas podemos consertar isso eliminando o último pedaço e anexando um espaço aos restantes.
Agora, se sobrepormos listras e estrelas, obtemos
Tudo o que resta a fazer é adicionar duas linhas de 57 traços, adicionar uma coluna de 37 barras verticais e colocar a cereja no topo.
Código
fonte
Python 2, 113 bytes
Corte de cordas e módulo verifica em abundância.
fonte
i=0
está sendo impresso.Brainf ** k,
3355311315981178782 bytesQual é esse idioma?
Aqui está a versão otimizada para mãos, com 28 loops. Acho que levei isso o mais longe que puder.
Aqui está a corrida em ideone.com :
Como é que isso funciona?
Este programa usa 10 locais de memória:
Linha 1
+++[>++++<-]
. O resultado final é que o registro 0 é 0 e o registro 1 é 12."0"
no topo da bandeira!Linha 2
"|"
(ASCII 124) e o gera."0"
(ASCII 48) para"-"
(ASCII 45) e o produz.Linha 3
" * "
5 vezes." * "
está escrito"#"
totalizando 32."#"
,"|"
e"\n"
são escritos.Linhas 4 - 11
Linha 12
Linha 13
"#"
8 vezes cada vez no loop.Linha 14
Linha 15
" "
8 vezes cada vez no loop.Linha 16
Linha 17
Linha 18
Linha 19
Linha 20
"|"
e nova linha duas vezes ao longo do loop.fonte
/// : 225 caracteres
fonte
JavaScript ( ES6 ), 153
156Usando a sequência de modelos, há 1 nova linha significativa e contada
Teste a execução do snippet abaixo (sendo EcmaScript 6, apenas Firefox)
Para ser ainda mais patriótico, aqui está a versão do EcmaScript 5
fonte
Ruby,
104102 bytesUsando idéias do Ruby do ManAtWork, responda com permissão.
Ruby,
127122121bytesAs cotações foram alteradas para a
?
matriz usada em vez de condicional para a cor da faixa. usado condicional em vez de fórmula para o comprimento da faixa.O truque aqui é desenhar as listras (vermelhas /
#
brancas /space
) no comprimento correto e justificá-las à direita, preenchendo com estrelas. Rubyrjust
nos permite especificar a string de preenchimento, que alterna entre" * "
e" *"
.Versão original, 127 bytes
fonte
map
no meio doputs
mas não posso usá-lo por conta própria, mesmo que eu coloque-a entre parênteses:puts((0.18).map{})
. Se vir outras melhorias, avise-me ou cancele a exclusão de sua própria resposta e publique-a lá.rjust
possa pegar uma corda e não apenas um caractere. Pena que o Python não pode fazer isso ... #SWI-Prolog, 275 bytes
Em um idioma de origem francesa, que é meio adequado
Veja o resultado aqui
fonte
C,
235211208205203198197186 bytesedit: adicionou algumas sugestões de Cool Guy e fez uso de?: para substituir algumas declarações if.
edit: prevenção de estouro removido \ 0 e, em vez disso, usou o limitador de comprimento de string no printf.
editar: reformulou os dois condicionais do memset.
edit: move puts ("0") dentro do cabeçalho for para remover seu ponto e vírgula.
edit: leve refatoração para obter mais 11 bytes.
fonte
|
no início de cada linha ...i;c(){puts("0");for(;i<37;i++){char b[58]="|";if(i<21){memset(b,!((i-1)%3)?35:32,56);if(i<10)memcpy(b," * * * * * * "+((i%2)?0:2),23);b[56]='|';}if(!i||i==20){memset(b,45,57);}puts(b);}}
45
, em vez de'-'
e35
em vez de'#'
e32
em vez de' '