Courier Ception
O programa deve aceitar qualquer sequência como entrada e gerar uma imagem de pixel que mostra a sequência de entrada no Courier. Todas as letras que contêm um 'buraco' (como abdegopqABDPQR
etc) cercado por pixels pretos também devem ser preenchidas em preto.
Entrada
O Programa deve poder aceitar qualquer sequência ASCII como entrada. A entrada pode ser da maneira que você quiser, desde que o código do programa em si não precise ser alterado para aceitar uma entrada diferente. (Exceto, por exemplo, o nome do arquivo do arquivo que deve ser lido.) Nenhuma brecha padrão. Você pode assumir que cada entrada contém pelo menos uma letra imprimível.
Resultado
A saída deve ser um gráfico de pixels em preto e branco (sem cinza) que mostre a sequência escrita em Courier (em preto, branco com fundo), com os 'buracos' especificados preenchidos. O tamanho da fonte de toda a cadeia deve ser constante (o que significa que não há redimensionamento diferente para cada letra diferente), de modo que as letras de tamanho completo (por exemplo,ABCDEFGHIJKLMNOPRSTUVWXYZ
mas j e Q sejam maiores) devem ter pelo menos 10 px de altura. (Você não precisa gravá-lo em um arquivo, qualquer tipo de exibição é aceitável desde que seja gerado como pixelgraphics, como, por exemplo, tela em JavaScript.) Por favor, poste este gráfico com sua resposta.
O acesso às bibliotecas courier.ttf / font é permitido.
O programa também deve contar o número de pixels pretos e gravá-lo no console ou no método de saída que preferir no final.
Ponto
A pontuação é avaliada da seguinte forma: O código completo do programa deve ser usado como sequência de entrada para o seu programa. O número de pixels pretos será sua pontuação. O código do programa que contém letras imprimíveis ou não ASCII não é permitido. (Assim como as brechas padrão.) Quanto menor a pontuação, melhor.
Respostas:
Mathematica, 4864 pixels
Aqui está a foto:
No Mathematica, quando você escreve um "programa", basta escrever um trecho. Portanto, isso espera que a entrada armazenada
j
e a última coisa que retorne sejam a imagem e a contagem. Isso também gera muitos erros, porque eu não faço verificação de limitesl
, mas produz o resultado desejado de qualquer maneira.onde
%
se refere à última saída mencionada.Agradecemos a Geobits pela ideia do algoritmo. Estou preenchendo a imagem do canto superior esquerdo com uma intensidade inválida, substituindo todos os pixels brancos restantes por pixels pretos e os inválidos por brancos.
Observe que a
FreeQ
verificação não é realmente necessária para o programa funcionar corretamente, mas para concluir em um período de tempo razoável. Se eu deixasse de fora, na verdade eu marcaria cerca de 300 pixels a menos.fonte