Gibt es Sprachen, die besonders gut in ASCII-Kunst sind?

20

Ich habe mich gefragt, ob es irgendwelche esoterischen oder Golfsprachen gibt, die speziell auf die Textausgabe und ASCII-Kunst abzielen.

Zum Beispiel hat 05AB1E mindestens mit dem Targeting von Basis-Conversions begonnen. Gibt es Golfsprachen, die auf die Textausgabe und Textausgabekunst abzielen?

Wenn ja, haben sie hier Tippseiten und werden sie häufig verwendet?

Hinweis: Ich bin nicht auf der Suche nach Sprachen, die der Lage , die Ausgabe ASCII - Kunst, sondern diejenigen , absichtlich , um eine vollständige Lage sein , entworfen in relativ kurzer und prägnanter Form Herausforderungen.

Sokratischer Phönix
quelle
1
Seitdem Sie es erwähnt haben, ist 05AB1E meiner Erfahrung nach sehr gut in ASCII-Kunst-Herausforderungen.
DJMcMayhem
1
Ich würde gerne eine ASCII-Kunstsprache sehen, die "ASC und II sollen empfangen" heißt. (Im Ernst, wenn man nicht schon
abreist
Ich habe eine Sprache namens Crayon entworfen, die speziell für die Erstellung von ASCII-Grafiken entwickelt wurde, aber leider hatte ich noch keine Zeit, sie umzusetzen.
ETHproductions
@ Nur ASCII und ich habe an einer ASCII-Kunstsprache gearbeitet. Es befindet sich noch in der Entwurfsphase, aber wir würden uns über Ihre (oder die) Beiträge freuen. Besuchen Sie uns im Chat, wenn Sie interessiert sind.
DLosc
Hier dachte ich, meine Idee sei einzigartig ... Ich stellte diese Frage, weil ich eine auf CharMatrix basierende Sprache schreiben wollte. Niemand erwähnte eine der Funktionen, die ich wollte, also könnte ich es trotzdem tun. Alle Antworten und Kommentare waren übrigens großartig, danke an alle
Socratic Phoenix

Antworten:

15

Nun, in der Tat gibt es! Eine solche Sprache ist eine, an der ich eine Weile gearbeitet habe und die ich V nenne .

Unter der Haube ist V nur vim , aber alle Tastenanschläge werden automatisch ausgeführt, und der Inhalt des vim-Puffers wird an STDOUT ausgegeben, wenn das Programm beendet ist. Dies macht das Ausführen einfacher.

Etwas Geschichte über die Sprache. Als ich anfing, den VIM-Texteditor für Code-Golf zu verwenden, stellte ich fest, dass er eigentlich ziemlich gut ist, aber einige nervige Funktionen hat, die es schwieriger machen, daran teilzunehmen. Sie können beispielsweise eine Art "while-Schleife" einrichten

qq<foobar>@qq@q

Dies wird wiederholt, <foobar>bis ein Fehler auftritt. Dies hat 7 Bytes Boilerplate-Code. In V wird dies auf verkürzt ò<foobar>ò.

Einige der Dinge, die V großartig für ASCII-Kunst machen:

  • Es ist von Natur aus 2D. Ein Merkmal ist, dass es eine "Cursor" -Position hat, an der die meisten Befehle etwas basierend darauf tun, wo sich der Cursor im Text befindet. Die anderen Befehle verschieben die Position des Cursors. Beispielsweise löscht x ein einzelnes Zeichen, aber Wx rückt ein Wort vor und löscht dann ein Zeichen. Da die meisten anderen Sprachen nicht absichtlich zweidimensional sind, bietet dies einen schönen Vorteil, wenn es darum geht , Text im 2D-Raum zu positionieren

  • Es basiert vollständig auf Zeichenfolgen. Sie können einige mathematische Operationen verwenden, aber dies ist normalerweise der längere Weg, um Dinge zu erreichen.

  • Es verwendet die Regex-Komprimierung , um Text schnell zu ändern.

  • Der gesamte interne Speicher, bei dem es sich nur um ein 2D-Array von Zeichen handelt, wird implizit gedruckt, wenn das Programm endet. Darüber hinaus werden alle Eingaben implizit in den internen Speicher eingefügt. Dies ist hilfreich , wenn es bei den meisten Herausforderungen darum geht, die Eingabe auf eine bestimmte Weise zu ändern.

Ich verwende diese Sprache sehr gerne, und wenn Sie auf der Suche nach einer bestimmten Sprache für sind, kann ich sie wärmstens empfehlen. Allerdings würde ich auch ein paar Haftungsausschluss geben.

  • Es ist sehr verwirrend zu lernen. Es ist auch sehr leistungsfähig, aber da es auf einem sehr beliebten Texteditor basiert, der 30 Jahre alt ist, gibt es viele undurchsichtige Funktionen, die neue Benutzer sehr leicht verwirren können.

  • Obwohl der Umgang mit Zahlen besser ist als mit vim, ist die Nummernunterstützung immer noch nicht großartig. Persönlich denke ich, dass es mehr Spaß macht, darin zu arbeiten (so etwas wie die Verwendung von Retina für Aufgaben, für die Regex nie gedacht war). : D

  • Es ist immer noch ein WIP. Es gibt einige Fehler und einige Dinge, die ich noch nicht hinzugefügt habe.

  • Es hat nicht sehr viele Benutzer. (Aktuelle Anzahl der Benutzer: 1).

Wenn Sie mehr erfahren möchten, finden Sie hier einige gute Ressourcen:

  • Ein Chatroom, in dem ich gerne alle Ihre Fragen beantworte und Ihnen erkläre, wie es bei Ihnen funktioniert.

  • Ein Tipps-Thread zum Golfen in vim, aber die meisten Tipps übertragen sich.

  • Ein Meta-Post , der V ausführlicher beschreibt.

DJMcMayhem
quelle
8

Ich habe kürzlich eine neue Programmiersprache namens Turtlèd entwickelt , die ein Zeichenraster mit einer Schildkröte bearbeitet , die sich im Raster bewegt, in das Raster schreibt und den Ablauf mit dem Raster steuert. Das Raster wird implizit am Ende gedruckt. Durch diese Tatsache, dass es keine Leerzeichen schreiben muss und den Text eher räumlich als von links nach rechts von oben nach unten schreiben kann, wird es wahrscheinlich die angegebene Definition erfüllen, da es gut in ASCII-Kunst ist.

Derzeit sind keine Dokumente vorhanden, sodass Sie diese wahrscheinlich nicht verwenden können, es sei denn, Sie möchten meinen Dolmetscher lesen. Dies ist wahrscheinlich nicht das, was Sie tun möchten. Ich denke, dass es auch Fehler im Interpreter gibt, aber die Spezifikation ist nicht genug entwickelt, um zu sagen, ob es sich um einen Fehler handelt. Turtlèd wird wahrscheinlich bald fertig sein, mit Dokumenten und allem

Zerstörbare Zitrone
quelle
3

Einführung in ASCII-Golf für 05AB1E (Basiskonvertierung [Einfach])

Während 05AB1E nicht direkt für ASCII-Art gedacht ist, habe ich damit 2 Herausforderungen gewonnen. Das Beste an 05AB1E ist, dass Sie selbst mit der einfachen Basiskonvertierung häufig Tricks anwenden können, um Ihre Byteanzahl zu erweitern und sogar zu halbieren. Bei ASCII-Herausforderungen gibt es häufig Wiederholungstricks, mit denen Sie nur die Hälfte des Musters zeichnen und dann kippen und verketten können. Wenn es sich um ein Vier-Wege-Muster handelt, können Sie Dinge wie Reißverschluss und Gabelung ausführen, um nur eine Ecke des Musters zu zeichnen. In Verbindung mit dieser einfachen Idee der Basiskomprimierung können zahlreiche Techniken zur Manipulation von Datenstrukturen verwendet werden.


Hier ist ein kurzer Crash-Kurs zu einer grundlegenden Konvertierungstaktik:

In 05AB1E zähle ich alle in der ASCII-Kunst verwendeten Zeichen auf, zum Beispiel:

--===___===--

Würde ergeben:

-
=
_

Ich weise ihnen dann Nummern zu, die mit 1, dann 0 und dann 2 beginnen:

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

Ich ersetze die Zeichen in der ursprünglichen Zeichenfolge durch die Zahlen:

1122200022211

Ich konvertiere in Dezimalzahlen mit der niedrigstmöglichen Basis (3):

879412

( So geht's mit 05AB1E )

Ich konvertiere es dann zur Basis 214:

Jh]

( So geht's mit 05AB1E )

Ich wickle es dann in den folgenden Code ein:

05AB1E , 16 Bytes

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

Probieren Sie es online!

Oder versuchen Sie es mit angezeigten Zwischenschritten.

Finale erklärt:

•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.

Bei dieser speziellen Herausforderung ist die Saite so kurz, dass es keinen Sinn macht, sie zu spielen. Ich würde wahrscheinlich nur die Hälfte der Saite drücken und 10 Bytes Palindromize "--===__"ûoder Golf spielen, wie es Adnan in den Kommentaren mit faktoriellem, klugem Mann getan hat •Jh]•3B5!…-=_‡. Er ist auch (einer von?) Der Schöpfer (s?) Von 05AB1E.


Komplexeres Beispiel:

/codegolf//a/106621/59376


Versuchen Sie es auch mit Dennis 'Kolmogorov-Komplexität: Bubblegum ; Keine Ahnung, wie man das benutzt.

Magische Kraken-Urne
quelle
2
Bubblegum ist keine gute Sprache für ASCII-Kunst, da es (mit Ausnahme der beiden Beispiele ) keine Eingaben entgegennehmen kann , die für die meisten ASCII-Kunst-Herausforderungen erforderlich sind. Zimtgummi könnte eine bessere Option sein, obwohl ich nicht viel darüber weiß und meines Wissens gibt es keine Dokumente
ETHproductions
1
Nicht wirklich wichtig, aber Sie können Golf spielen bis:•Jh]•3B5!…-=_‡
Adnan
1
@Adnan "--===__"ûfür 10;).
Magic Octopus Urn
2

Pinsel

Paintbrush ist eine Freizeitprogrammiersprache, die von mir, Hyper Neutrino, entwickelt wurde, um gut in ASCII-Art zu sein. Es kann in vielen Fällen nicht gut mit Charcoal mithalten, kann aber Input und eine Vielzahl anderer Dinge leisten. Es bearbeitet ein 2D-Zeichenraster und kann das Hintergrundzeichen, das, was als Hintergrundzeichen angesehen wird, manipulieren, Zeilen und Spalten verschieben, Zeilen und Spalten verschieben, Zeilen, Spalten oder das gesamte Raster kopieren usw.

Einige Beispiele finden Sie im GitHub-Repository.

HyperNeutrino
quelle