O triângulo de Penrose , também conhecido como tribar de Penrose, ou tribar impossível, é um objeto impossível.
O objetivo deste desafio é exibir um triângulo de Penrose no menor número possível de bytes.
Fonte: Wikipedia
Regras:
- Você deve exibir o triângulo Penrose digitalmente depois de gerá-lo.
- Eles devem ter a mesma aparência da imagem acima da página wiki (fonte acima) sem mostrar diretamente a imagem.
- A mesma imagem com o mesmo esquema de cores deve ser mostrada em pelo menos 400x400.
- Deve ser o mais preciso possível.
Boa sorte e divirta-se!
code-golf
kolmogorov-complexity
graphical-output
arodebaugh
fonte
fonte
Respostas:
logotipo,
129120 bytesDesenha apenas os 4 primeiros lados de cada forma de L, depois levanta a caneta, move-se para o ponto correspondente na próxima forma de L, abaixa a caneta e desenha 4 lados dela. Cada forma de L empresta 2 lados da anterior.
Edições mais recentes: mova da área de preenchimento preto para a área de preenchimento cinza usando em
fd
vez desetx
e altere todos os movimentos defd
parabk
salvar um byte em uma rotação de 180 graus:rt 210
->rt 30
, abreviesetpencolor
parasetpc
(não documentado no intérprete que estou usando, mas funciona .)logotipo, 140 bytes
Desenha os 6 lados de cada forma de L, ultrapassa a última borda e gira 180 graus para iniciar a próxima.
execute em http://www.calormen.com/jslogo/#
É recomendável fazer isso
cs pd setpencolor 0
antes da execução para garantir que a tela fique limpa, a tartaruga esteja centralizada e apontando para cima, a caneta abaixada e definida como preta (configurações padrão, não necessárias para uma nova sessão) e tambémht
para ocultar a tartaruga (st
será mostre novamente.)fonte
SVG (HTML5), 191 bytes
fonte
Python 2,
211201195188 188175173 bytesInfelizmente,
exec
não está implementado no Trinket, portanto, isso não pode ser testado online como está. Pelo menos, não na versão gratuita. Eu impresso a corda e coladas como código para testá-lo. Se você for inteligente com scripts, poderá redimensionar o html / css conforme necessário para obter uma tela maior. Deixe-me saber se você faz.Experimente online - usa um tamanho menor, pois a tela do site é muito pequena para 400px, mas você pode ver toda a saída.
Ungolfed:
fonte
255*n/2
pode ser diminuído para128*n
eu acho que os valores RGB flutuantes serão arredondados de qualquer maneira, então haveria uma alteração nas cores dos pixels?PHP, 153 bytes
Isso funcionará apenas se a
short_open_tag
configuração estiver ativada. O código fonte contém caracteres não imprimíveis; portanto, faça um dump hexadecimal:Os dados descompactados têm esta aparência (com quebras de linha adicionadas para legibilidade):
Embora os dados SVG não sejam totalmente válidos, o PHP os serve como
text/html
padrão. Sem uma declaração de tipo de documento, o documento é tratado no modo peculiar, o que é muito indulgente.Para melhorar a compactação, quebrei a imagem em três partes em forma de "7" que podem ser desenhadas usando
<path>
elementos quase idênticos . A imagem resultante será expandida para preencher a janela de visualização. Aqui está uma captura de tela de uma janela de 500 × 500 pixels:fonte
HTML + JS (ES6), 34 + 306 = 340 bytes
Utiliza uma inclinação horizontal de 30 graus - no terceiro argumento da transformação de matriz, a tangente de 30 ° é representada como
pow(3,-.5)
.Existem alguns números mágicos feios e não correspondem exatamente às proporções da imagem da Wikipedia. Estou certo de que existe uma maneira mais "matemática" de fazer isso; Qualquer ajuda seria apreciada.
Veja a versão não destruída no CodePen.
fonte
HTML + CSS, 9 +
315309308 = 317 bytesFronteiras e inclinações em abundância! Testado no Chrome. Veja a versão não destruída no CodePen .
fonte
>
, certo?Mathematica 171 Bytes
Desenha 3 polígonos usando AnglePath, múltiplos de giros de 60 graus e aproveitando que o ponto inicial de cada polígono seja o 5º ponto do polígono anterior.
fonte
AnglePath
.Tcl / Tk, 205
fonte