Fiquei me perguntando se existem idiomas esotéricos ou de golfe que visam especificamente a saída de texto e a arte ASCII?
Por exemplo, 05AB1E pelo menos começou segmentando conversões básicas. Existem idiomas de golfe direcionados à produção de texto e à arte de produção de texto?
Nesse caso, eles têm páginas de dicas aqui e são de uso comum?
Nota: não estou procurando idiomas capazes de produzir arte ASCII, mas sim intencionalmente projetados para serem capazes de concluir desafios de arte ascii de maneira relativamente curta e concisa.
Respostas:
Bem, de fato, existe! Uma tal linguagem é um Tenho vindo a trabalhar por um tempo chamado V .
Sob o capô, V é apenas o vim , mas todas as teclas são executadas automaticamente e o conteúdo do buffer do vim é impresso em STDOUT quando o programa termina. Isso apenas torna a execução mais conveniente.
Um pouco de história sobre o idioma. Quando comecei a usar o editor de texto vim para o code-golf, descobri que ele é realmente muito bom nisso, mas tem alguns recursos irritantes que tornam mais difícil competir com ele. Por exemplo, você pode configurar um tipo de "loop while" fazendo
que se repetirá
<foobar>
até que ocorra um erro. Isso possui 7 bytes de código padrão. Em V, isso é reduzido paraò<foobar>ò
.Algumas das coisas que tornam o V ótimo para a arte ASCII:
É 2D por natureza. Uma característica é a posição "cursor", onde a maioria dos comandos faz algo com base em onde o cursor está no texto. Os outros comandos movem a localização do cursor. Por exemplo, x exclui um único personagem, mas Wx avança uma palavra e , em seguida, exclui um personagem. Como a maioria dos outros idiomas não é intencionalmente bidimensional, isso oferece uma boa vantagem quando o desafio é posicionar o texto no espaço 2D
É inteiramente baseado em string. Você pode usar algumas operações matemáticas, mas essas geralmente são a maneira mais longa de conseguir as coisas.
Ele usa a compressão regex para alterar rapidamente o texto.
Toda a sua memória interna, que é apenas uma matriz de caracteres 2D, é implicitamente impressa quando o programa termina. Além disso, todas as entradas são adicionadas implicitamente à sua memória interna , o que é bom quando a maior parte do desafio é alterar as entradas de uma certa maneira.
Então, eu realmente gosto de usar essa linguagem e, se você estiver procurando por uma linguagem especificamente ascii-art , eu recomendo. No entanto , eu também daria algumas isenções de responsabilidade.
É muito confuso para aprender. Também é muito poderoso, mas como é baseado em um editor de texto muito popular, com 30 anos, existem muitos recursos obscuros que podem facilmente confundir novos usuários.
Embora seja melhor no manuseio de números do que no vim, o suporte a números ainda não é ótimo. Pessoalmente, acho que isso torna mais divertido trabalhar (como usar a retina para tarefas que o regex nunca foi planejado). : D
Ainda é um WIP. Existem alguns bugs e algumas coisas que ainda não adicionei.
Não possui muitos usuários. (Número atual de usuários: 1).
Se você estiver interessado em aprender mais, aqui estão alguns bons recursos:
Uma sala de bate-papo onde eu ficaria feliz em responder a quaisquer perguntas que você tiver e ajudar a explicar como isso funciona para você.
Um tópico de dicas para jogar golfe no vim, mas a maioria das dicas continua.
Um meta post descrevendo V com mais detalhes.
fonte
Recentemente, criei uma nova linguagem de programação, chamada Turtlèd , que opera em uma grade de caracteres com uma tartaruga, que se move pela grade, grava na grade e tem fluxo de controle com a grade. A grade é impressa implicitamente no final. Por não ter de escrever espaços e de poder escrever o texto espacialmente, em vez de da esquerda para a direita, de cima para baixo, provavelmente faz com que atenda à definição dada, sendo bom em arte asciática.
Atualmente, não existem documentos, portanto você provavelmente não poderá usá-lo, a menos que queira ler meu intérprete, o que provavelmente não é algo que você deseja fazer. Acho que também pode haver erros no intérprete, mas a especificação não foi desenvolvida o suficiente para dizer se é um erro. Provavelmente, Turtlèd será concluído em breve, com documentos e tudo, embora
fonte
Introdução ao ASCII-Golfing para 05AB1E (Conversão de Base [Simples])
Enquanto 05AB1E não se destina diretamente ao ASCII-Art, venci 2 desafios com ele. A melhor coisa do 05AB1E é que, mesmo com a simples conversão de base, geralmente existem truques que você pode usar para estender e até reduzir pela metade sua contagem de bytes. Freqüentemente, em desafios ASCII, existem truques de repetição que você pode utilizar para desenhar apenas metade do padrão e depois virar e concatenar. Se for um padrão de quatro vias, você pode fazer coisas como zip e bifurcar para desenhar apenas um canto do padrão. Existem várias técnicas de manipulação da estrutura de dados a serem usadas em conjunto com essa idéia simples de compactação de base.
Aqui está um curso rápido sobre uma tática de conversão básica:
Em 05AB1E, enumero todos os caracteres usados na arte ASCII, por exemplo:
--===___===--
Resultaria em:
Atribuo a eles números começando com 1 e 0 e 2:
Substituo os caracteres na string original pelos números:
Eu converto para decimal usando a base mais baixa possível (3):
( Como fazer isso usando 05AB1E )
Eu então o converto na base 214:
( Como fazer isso usando 05AB1E )
Em seguida, envolvo-o no seguinte código:
05AB1E , 16 bytes
Experimente online!
Ou tente com as etapas intermediárias exibidas.
Final explicado:
Agora, com esse desafio específico, a string é tão curta que não faz sentido. Eu provavelmente pressionaria metade da corda e Palindromize por 10 bytes
"--===__"û
ou jogaria como Adnan nos comentários usando fatorial, homem inteligente•Jh]•3B5!…-=_‡
. Ele também (uma das?) O criador (s?) De 05AB1E.Exemplo mais complexo:
/codegolf//a/106621/59376
Além disso, talvez tente a linguagem de complexidade kolmogorov de Dennis: Bubblegum ; não faço ideia de como usar isso.fonte
•Jh]•3B5!…-=_‡
"--===__"û
por 10;).pincel
O Paintbrush é uma linguagem de programação recreativa criada por mim, Hyper Neutrino, com o objetivo de ser bom no ASCII-Art. Em muitos casos, não compete bem com o carvão vegetal, mas pode receber informações e fazer uma variedade de outras coisas. Opera em uma grade 2D de caracteres e é capaz de manipular o caractere de segundo plano, manipular o que é considerado um caractere de segundo plano no momento, alternar linhas e colunas, mover linhas e colunas, copiar linhas, colunas ou a grade inteira, etc.
Alguns exemplos podem ser encontrados no repositório GitHub.
fonte