Existe-t-il des langues particulièrement bonnes pour l'art ASCII?

20

Je me demandais s'il existe des langues ésotériques ou golfiques qui ciblent spécifiquement la sortie de texte et l'art ASCII?

Par exemple, 05AB1E a au moins commencé en ciblant les conversions de base. Existe-t-il des langues de golf ciblant la sortie de texte et l'art de sortie de texte?

Si oui, ont-ils des pages de conseils ici et sont-ils couramment utilisés?

Remarque: je ne recherche pas des langages capables de produire de l'art ASCII, mais plutôt des langages conçus intentionnellement pour être en mesure de relever défis d' d'une manière relativement courte et concise.

Phénix socratique
la source
1
Depuis que vous l'avez mentionné, selon mon expérience, 05AB1E est très bon pour relever les défis de l'art ascii.
DJMcMayhem
1
J'aimerais voir un langage ASCII appelé "ASC et II doivent recevoir". (Sérieusement cependant, si l'on ne sort pas déjà, il y a pas mal de potentiel là-bas.)
Hactar
J'ai conçu un langage appelé Crayon spécialement conçu pour créer de l'art ASCII, mais malheureusement je n'ai pas encore eu le temps de le mettre en œuvre.
ETHproductions
@ ASCII uniquement et je travaille sur un langage ASCII. Il est encore en phase de conception, mais nous aimerions votre contribution (ou celle de quiconque). Rejoignez-nous dans le chat si vous êtes intéressé.
DLosc
Eh bien ici, je pensais que mon idée était unique ... J'ai posé cette question parce que je voulais écrire un langage basé sur CharMatrix. Personne n'a mentionné l'une des fonctionnalités que je voulais, alors je pourrais continuer et le faire quand même. Soit dit en passant, toutes les réponses et commentaires ont été formidables, merci à tous
Socratic Phoenix

Réponses:

15

Eh bien, en fait, il y en a! Un tel langage est celui que je travaille pendant un certain temps appelé V .

Sous le capot, V est juste vim , mais toutes les frappes sont exécutées automatiquement et le contenu du tampon vim est imprimé sur STDOUT lorsque le programme est terminé. Cela rend simplement son exécution plus pratique.

Un peu d'histoire sur la langue. Quand j'ai commencé à utiliser l'éditeur de texte vim pour le code-golf, j'ai découvert qu'il était en fait assez bon, mais qu'il avait des fonctionnalités ennuyeuses qui rendaient plus difficile la compétition. Par exemple, vous pouvez configurer une sorte de "boucle while" en faisant

qq<foobar>@qq@q

qui se répétera <foobar>jusqu'à ce qu'une erreur se produise. Cela a 7 octets de code passe-partout. En V, cela est raccourci ò<foobar>ò.

Certaines des choses qui rendent V parfait pour l'art ASCII:

  • C'est 2d par nature. Une caractéristique est qu'il a une position "curseur", où la plupart des commandes font quelque chose en fonction de la position du curseur dans le texte. Les autres commandes déplacent l'emplacement du curseur. Par exemple, x supprime un seul caractère, mais Wx avance d'un mot, puis supprime un caractère. Étant donné que la plupart des autres langues ne sont pas intentionnellement bidimensionnelles, cela offre un avantage intéressant lorsque le défi consiste à positionner le texte dans l'espace 2D

  • Il est entièrement basé sur des chaînes. Vous pouvez utiliser certaines opérations mathématiques, mais ce sont généralement les moyens les plus longs de réaliser les choses.

  • Il utilise la compression regex pour changer rapidement le texte.

  • Toute sa mémoire interne, qui n'est qu'un tableau 2D de caractères, est implicitement imprimée à la fin du programme. De plus, toutes les entrées sont implicitement ajoutées dans sa mémoire interne , ce qui est bien lorsque la plupart du défi consiste à modifier l'entrée d'une certaine manière.

Donc j'aime vraiment utiliser cette langue, et si vous cherchez une langue spécifiquement , je la recommande fortement. Cependant , je voudrais également donner quelques avertissements.

  • C'est très déroutant d'apprendre. Il est également très puissant, mais comme il est basé sur un éditeur de texte très populaire qui a 30 ans, il existe de nombreuses fonctionnalités obscures qui pourraient très facilement confondre les nouveaux utilisateurs.

  • Même s'il gère mieux les nombres que vim, sa prise en charge des nombres n'est toujours pas excellente. Personnellement, je pense que cela rend plus amusant de travailler (un peu comme utiliser la rétine pour des tâches regex n'a jamais été prévu). :RÉ

  • C'est toujours un WIP. Il y a quelques bugs et certaines choses que je n'ai pas encore réussi à ajouter.

  • Il n'a pas beaucoup d'utilisateurs. (Nombre actuel d'utilisateurs: 1).

Si vous souhaitez en savoir plus, voici quelques bonnes ressources:

  • Un salon de discussion où je serais heureux de répondre à toutes vos questions et de vous expliquer comment cela fonctionne pour vous.

  • Un fil de conseils pour jouer au golf à Vim, mais la plupart des conseils sont reportés.

  • Un meta post décrivant V plus en détail.

DJMcMayhem
la source
8

J'ai récemment créé un nouveau langage de programmation, appelé Turtlèd , qui fonctionne sur une grille de caractères avec une tortue, qui se déplace sur la grille, écrit sur la grille et contrôle le flux avec la grille. La grille est implicitement imprimée à la fin. Par ce fait qu'il n'a pas à écrire d'espaces, et qu'il peut écrire le texte spatialement, plutôt que de gauche à droite, de haut en bas, il le fait probablement correspondre à la définition donnée, étant bon en art ascii.

Actuellement, il n'y a pas de documentation, vous ne pourrez donc probablement pas l'utiliser, sauf si vous voulez lire mon interprète, ce qui n'est probablement pas quelque chose que vous voulez faire. Je pense qu'il peut également y avoir des bogues dans l'interpréteur, mais la spécification n'est pas suffisamment développée pour dire s'il s'agit d'un bogue. Turtlèd sera probablement terminé bientôt, avec des documents et tout, bien que

Citron destructible
la source
3

Introduction à l'ASCII-Golf pour 05AB1E (conversion de base [simple])

Bien que 05AB1E ne soit pas destiné directement à ASCII-Art, j'ai remporté 2 défis avec. La meilleure chose à propos de 05AB1E est que, même avec la simple conversion de base, il existe souvent des astuces que vous pouvez utiliser pour étendre et même réduire de moitié votre nombre d'octets. Souvent, dans les défis ASCII, il existe des astuces de répétition que vous pouvez utiliser pour dessiner uniquement la moitié du motif, puis inverser et concaténer. Si c'est un motif à quatre directions, vous pouvez faire des choses comme zip et bifurquer pour dessiner seulement un coin du motif. Il existe de nombreuses techniques de manipulation de la structure des données à utiliser conjointement avec cette idée de compression de base simple.


Voici un cours accéléré rapide sur une tactique de conversion de base:

Dans 05AB1E, j'énumère tous les caractères utilisés dans l'art ASCII, par exemple:

--===___===--

Se traduirait par:

-
=
_

Je leur attribue ensuite des numéros commençant par 1 puis 0 puis 2:

- is 1.
= is 0.
_ is 2.

Je remplace les caractères de la chaîne d'origine par les chiffres:

1122200022211

Je convertis en décimal en utilisant la base la plus basse possible (3):

879412

( Comment faire cela en utilisant 05AB1E )

Je le convertis ensuite en base 214:

Jh]

( Comment faire cela en utilisant 05AB1E )

Je l'enveloppe ensuite dans le code suivant:

05AB1E , 16 octets

•Jh]•3B…102…-_=‡

Essayez-le en ligne!

Ou essayez-le avec les étapes intermédiaires affichées.

Final expliqué:

•Jh]•            # Push the compressed ASCII integer.
     3B          # Convert it to base 3.
       …102      # Push the keys to the conversion.
           …-_=  # Push the values to the conversion.
               ‡ # Transliterate, replace 0, 1 and 2 with the symbols.

Maintenant, avec ce défi spécifique, la chaîne est si courte qu'elle n'a pas de sens. Je pousserais probablement la moitié de la chaîne et palindromiserais pour 10 octets "--===__"ûou le jouerais comme Adnan dans les commentaires en utilisant factorial, smart man •Jh]•3B5!…-=_‡. Il est également (l'un des?) Créateur (s?) De 05AB1E.


Exemple plus complexe:

/codegolf//a/106621/59376


Essayez aussi le langage de complexité kolmogorov de Dennis: Bubblegum ; aucune idée de comment l'utiliser.

Urne de poulpe magique
la source
2
Bubblegum n'est pas vraiment une bonne langue pour l'art ASCII, car il ne peut pas accepter d'entrée (sauf pour les deux exemples ), ce qui est requis pour la plupart des défis de l'art ASCII. La gomme de cannelle pourrait être une meilleure option, bien que je ne sache pas grand-chose à ce sujet et à ma connaissance il n'y a pas de documentation
ETHproductions
1
Pas vraiment important, mais vous pouvez jouer au golf jusqu'à:•Jh]•3B5!…-=_‡
Adnan
1
@Adnan "--===__"ûpour 10;).
Urne de poulpe magique
2

Pinceau

Paintbrush est un langage de programmation récréatif créé par moi-même, Hyper Neutrino, dans le but d'être bon en ASCII-Art. Il ne rivalise pas bien avec le charbon de bois dans de nombreux cas, mais il peut prendre des commentaires et faire une variété d'autres choses. Il fonctionne sur une grille 2D de caractères et est capable de manipuler le caractère d'arrière-plan, de manipuler ce qui est considéré comme un caractère d'arrière-plan à l'époque, de déplacer des lignes et des colonnes, de déplacer des lignes et des colonnes, de copier des lignes, des colonnes ou la totalité de la grille, etc.

Certains exemples peuvent être trouvés dans le référentiel GitHub.

HyperNeutrino
la source