Desafio
Desenhe o logotipo dos Jogos Olímpicos ...
... como personagem (por exemplo, ASCII) art!
Saída de amostra
* * * * * * * * *
* * * * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * *
* * * *
* * * * * *
Sua arte não precisa se parecer exatamente com a minha, mas precisa representar os anéis olímpicos o suficiente para ser reconhecível.
Regras
- O programa deve gravar a arte no console.
- O código mais curto (em bytes, qualquer idioma) vence.
- Uma solução que imprima anéis em suas respectivas cores (ou uma representação aproximada) receberá um bônus de menos vinte pontos.
O vencedor será escolhido em 23 de fevereiro rd no final dos Jogos Olímpicos de Inverno de 2014.
Vencedores
- Ouro : marinus - APL, 62 pontos
- Prata : Ayiko - Perl 6, 75 pontos
Bronze : evuez - Python, 107 pontos
Escolha popular : Danko Durbić - Commodore 64 BASIC
Respostas:
APL (82) (-20 = 62)
Editar: para variar, este programa é simples o suficiente para que o TryAPL o toque, para que você possa executá-lo (basta colar a linha).
Não tenho certeza se posso reivindicar o bit 'cor', mas estou representando todos de forma diferente.
O console do APL não suporta cores, então usei caracteres de bloco sombreado (atribuir qualquer tipo de outra arte ASCII seria tão simples quanto substituir os caracteres no início da string).
Eles devem parecer círculos ininterruptos (dependendo da fonte).
Ou:
fonte
Commodore 64 BASIC
Escrevendo diretamente na tela e na memória colorida.
Resultado:
Veja como você faz isso com sprites.
fonte
HTML Fiddle -
48,35, 33 caracteres (Obrigado @ Dom e @ cnst!)Resultado:
fonte
OOO<div style="margin:-10px 5px">OO
em vez disso ... (eu acho que ele precisa ser um bloco, porém, daí a<div/>
)div
, basta usarp
!BASH em cores - 271 - 20 = 251 - Com anéis emaranhados; P
Resultado:
E por diversão : 61 - 20 = 41.
Versão LZ77:
fonte
bash: !/\\e[3}": event not found
:(x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"
- (Eu sou um pouco mal com o 5 aqui.) Ou até isso pode ser melhor, com sobreposição em mente:x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"
- embora possa parecer mais confuso do que os outros.Sinclair BASIC no ZX Spectrum 48K (261 bytes)
Listagem BASIC:
Resultado final:
Execução do programa e medição de código:
Listagem BASIC em formato de texto:
Arquivo TAP com o programa, adequado para emuladores ou máquinas reais usando DivIDE ou DivMMC: http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap
fonte
Então, eu realmente não li direito, é arte ASCII, então acho que isso é inválido. Opa!
HTML 121 (141 - 20)
No Chrome:
PHP 103 (123 - 20)
fonte
#06f
#fa0
#193
Ruby: 198 caracteres - 20 = 178
(Observe que
^[
são caracteres únicos.)Exemplo de execução:
fonte
Mathematica - 185
Aqui está a saída
Outra versão, baseada na rasterização de gráficos vetoriais
fonte
PostScript, 203 (-20 = 183)
Eu mantenho que isso conta como "arte ASCII", embora não grave no console. Resultado:
Isso poderia ser jogado um pouco mais.
fonte
Script de comando do Windows - 112
% debytesE, claro, a versão obrigatória da fraude - 4 bytes
salvo como:
fonte
Outra tentativa em Perl,
130120Obrigado ao manatwork por ajudar com isso
Resultado:
fonte
for
vez deforeach
; 2 caracteres removendo os argumentos de(
…)
roundsprintf()
; 2 caracteres removendohex
o parâmetro; 1 caractere usando emy///
vez detr///
; 1 caractere removendo o final;
.y///
antes. Irá procurar agora.Python:
157140138133122 122107 caracteres107
(graças a manatwork )
saída de amostra:
157
122
(apenas comecei este, vou tentar melhorá-lo)
com melhor saída: 120 caracteres
saída de amostra:
fonte
print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()])
. Em relação à versão “melhor saída”, você pode pouparrjust()
o segundo parâmetro. (E inserir um “t” no título deste post.)bin()
. Mas por que você está usandostr()
isso?bin()
O valor de retorno já éstr
.010000010100000101000101000001010000010
? Os dois anéis inferiores parecem um pouco quebrados para mim.Perl,
177163Uma versão aprimorada graças a Dom Hastings:
Resultado:
fonte
"\n"
como$r
, você pode usar$/
quais padrões"\n"
, novas linhas literais podem até economizar mais em alguns lugares. Você também pode salvar mais 1 char usando em$s=$"x3
vez de$s=" "
. Espero que ajude!C, 257 bytes
Isso poderia ter sido um pouco mais jogado.
Isso deve ser executado no Tektronix 4010 (ou emulador como o xterm -t). Resultado:
Esta é realmente a arte ASCII, já que essas são todas '.' personagens. E produz para o console, conforme solicitado. Alguns emuladores Tektronix suportam cores. O meu não, então eu não poderia fazer isso.
fonte
Java,
181179161156 bytes(Não será compilado no jdk 1.7, requer 1.6 ou menos)
A saída:
Definitivamente não é um vencedor, mas vamos lá, é java .
fonte
replaceAll()
's expressão regular e colocar de volta toda a parte correspondida:replaceAll(".{29}","$0\n")
. (Pode haver uma quebra de linha extra no final do seu arquivo, como eu contar apenas 181 caracteres no código postado.)import
e coloque o nome do pacote diretamente na chamada do construtor. Isso reduz o tamanho para 161 caracteres.class M{static{...
paraenum M{M;{...
. O próximo grande passo é se livrar do BigInteger, isso é possível? Estou tentando fazer alguma mágica com String.format, mas ainda não tenho resultados.Haskell, 200
Resultado:
jogado fora de:
fonte
map.map
porque soa engraçado. : DRuby, 9
#sátira
As regras permitem arte que não se parece exatamente com o exemplo, mas deve "representar os anéis olímpicos o suficiente para ser reconhecível" .
Você pode reconhecer esta representação do logotipo dos Jogos Olímpicos.
fonte
Javascript - 170
185189CharsResultado:
Segundo Javascript - 25 caracteres
Resultado:
O segundo é preguiçoso
fonte
split()
parâmetro; 2 caracteres removendo os últimos 2;
s.'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))})
.Binário! (265 CHARS)
É muito grande para ganhar, mas pelo menos parece legal!
fonte
PHP - 99 (-20?)
Isso é definitivamente reconhecível. Eu digo que minhas "cores" contam; é uma representação próxima.
Se você não gosta disso, então aqui está
GolfScript - 101 (-20?)
fonte
header("Content-Type: text/plain")
, o padrão para servidores web é text / htmlBash + ImageMagick: 163 caracteres
Saída de amostra:
fonte
Perl 6:
1127756 caracteres, 75 bytes.comb
fornece uma lista dos caracteres separados em uma string (sem argumento de qualquer maneira).ord
fornece o número do código do caractere.base(2)
retorna uma string com codificação base-2 desse Int.trans
substitui os dígitos por espaço e @ para melhor visibilidadeflip
inverte os caracteres de uma string para que os 0s em falta não atrapalhem o desenho.edit2: solução mais recente usando palavras qwote e codificado na base 36
<ABC DEF GHI>
é uma sintaxe de aspas no perl6, para que você obtenha uma lista de Strings:36($_)
cria um Int a partir de uma string codificada na base 36 em$_
(for
variável padrão do loop)edit: a solução antiga possui um desenho melhor (copiado), mas é mais longa:
fonte
Mathematica
18517510 bytes salvos pelo mathe.
Os anéis abaixo são ASCII 'O's.
A letra "O", levemente translúcida, no século gótico, impressa 5 vezes no tamanho da fonte = 145 pontos da impressora.
Isso não é arte terminal. No entanto, satisfaz plenamente a definição de arte Ascii da Wikipedia: http://en.wikipedia.org/wiki/ASCII_art .
fonte
FontSize ->
pode ser removido.FontSize -> 145
por145
.JavaScript: 153 caracteres
Eu queria ver se conseguia fazer isso mais rápido usando álgebra para representar graficamente os círculos:
(
c
é uma matriz de cinco (x, y) pares, os centros dos círculos, achatados para salvar dez caracteres.)resultado:
159 caracteres é um pouco mais legível:
resultado:
Em 167 caracteres , temos "cores":
resultado:
E com 189 caracteres , também posso ajustar o raio
r
:http://jsfiddle.net/mblase75/5Q6BX/
fonte
APL, 8 caracteres / bytes *
Aqui está uma resposta que pressiona pela menor contagem de caracteres (afinal, isso é código de golfe)
Resultado:
O símbolo é ○, operador de círculo APL. Você pode colocar um 'O', caso deseje uma saída estritamente ASCII. Eu apenas pensei em usar um símbolo APL.
Apenas para brincadeiras, aqui está uma versão colorida (37 caracteres - 20 = 17 pontos)
Saída: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: O APL pode ser gravado em seu próprio conjunto de caracteres de byte (legado) que mapeia os símbolos do APL para os valores superiores de 128 bytes. Portanto, para fins de pontuação, um programa de N caracteres que usa apenas caracteres ASCII e símbolos APL pode ser considerado como N bytes.
fonte
CSS,
1176922855771 bytes, bônus de -20 cores = 751Somente CSS, sem necessidade de marcação. Veja violino sem marcação aqui: http://jsfiddle.net/XcBMV/12/
Em cores e com a sobreposição correta.
fonte
Perl - 12 caracteres
OK, então não é uma renderização especialmente artística. ;-)
Ligeiramente mais bonito:
fonte
Carregador OL de BIOS de 16 bits do conjunto GAS - 617 - 20 = 597
Enlouquecendo de comprimento aqui, tão mero para se divertir.
Não carrega muito, mas carrega o logotipo dos Jogos Olímpicos como ASCII com cores;)
Código:
(Linux) Construa e extraia imagem MBR
Executando no emulador
(Ainda não o testei no meu computador doméstico ...)
Resultado
fonte
TI-Básico (16 bytes)
Nota: O TI-Basic é tokenizado. Se bem me lembro,
ClrHome
eDisp
são tokens de um byte.fonte
fonte