ASCIIアートが特に得意な言語はありますか?


20

テキスト出力とASCIIアートを特に対象とする難解な言語やゴルフ言語があるかどうか疑問に思っていましたか?

たとえば、05AB1Eは、少なくともベースコンバージョンをターゲットとして開始されました。テキスト出力およびテキスト出力アートを対象とするゴルフ言語はありますか?

もしそうなら、彼らはここにヒントページを持っていますか、それらは一般的に使用されていますか?

注:ASCIIアートを出力できる言語を探しているのではなく、比較的短く簡潔な方法で課題を完了することができるように意図的に設計された言語を探しています。


1
あなたがそれを言ったので、私の経験では05AB1Eはアスキーアートの課題に非常に優れています。
DJMcMayhem

1
「ASCとIIが受信する」と呼ばれるASCIIアート言語が見たいです。(しかし、まだ終了していない場合は、かなりの可能性があります。)
Hactar

ASCIIアートを作成するために特別に作成されたCrayonという言語を設計しましたが、残念ながらまだ実装する時間がありませんでした。
ETHproductions

@ASCIIのみで、ASCIIアート言語に取り組んでいます。まだ設計段階にありますが、私たちはあなた(または誰でも)のインプットが大好きです。興味があればチャットに参加してください
DLosc

さて、ここで私の考えはユニークだと思っていました... CharMatrixベースの言語を書きたいので、この質問をしました。誰も私が欲しかった機能のどれにも言及していなかったので、とにかく先に進んでそれをするかもしれません。回答とコメントはすべて素晴らしい方法でした。皆さん、ありがとう
ソクラティックフェニックス

回答:


15

まあ、実際のところ、あります!そのような言語の1つは、Vと呼ばれる私がしばらく取り組んでいる言語です。

ボンネットの下では、Vは単なるvimですが、すべてのキーストロークが自動的に実行され、プログラムが終了すると、vimバッファーの内容がSTDOUTに出力されます。これにより、実行がより便利になります。

言語に関するいくつかの歴史。コードゴルフにvimテキストエディタを使い始めたとき、実際にはかなり良いのですが、競争するのをより難しくするいくつかの迷惑な機能があることを発見しました。たとえば、次のようにしてソートの「whileループ」を設定できます。

qq<foobar>@qq@q

<foobar>エラーが発生するまで繰り返されます。これには、7バイトの定型コードがあります。Vでは、これはに短縮されò<foobar>òます。

VをASCIIアートに最適にするいくつかのこと:

  • 本来は2Dです。1つの機能は、「カーソル」位置を持ち、ほとんどのコマンドがテキスト内のカーソルの位置に基づいて何かを行うことです。他のコマンドは、カーソルの位置を移動します。例えば、X削除単一の文字が、Wxのは前方の単語を移動し、その後、文字を削除します。他のほとんどの言語は意図的に2次元ではないため、2D空間にテキストを配置することが課題である場合、これは素晴らしいエッジを提供します。

  • それは完全に基づいて、文字列。あなたは、することができ、いくつかのMathyさんの操作を使用しますが、これらは通常、物事を達成するために長い方法です。

  • 正規表現圧縮を使用して、テキストをすばやく変更します。

  • すべての内部メモリは単なる2D文字配列であり、プログラムが終了すると暗黙的に印刷されます。さらに、すべての入力は暗黙的に内部メモリに追加されます。これは、ほとんどの課題が特定の方法で入力を変更することである場合に便利です。

ですから、私はこの言語の使用を本当に楽しんでおり、特に言語を探しているのなら、それを強くお勧めします。ただし、免責事項もいくつか記載します。

  • 学ぶのは非常に複雑です。また、非常に強力ですが、30年前の非常に人気のあるテキストエディターに基づいているため、新しいユーザーを非常に簡単に混乱させる可能性のあるあいまいな機能がたくさんあります。

  • vimよりも数字の処理のほうが優れていますが、数字のサポートはまだ優れていません。個人的には、これにより作業がより楽しくなると思います(regexが意図していないタスクにRetinaを使用するようなものです)。:D

  • まだ仕掛品です。いくつかのバグがあり、まだ追加していないものがいくつかあります。

  • あまり多くのユーザーはいません。(現在のユーザー数:1)。

さらに学習することに興味がある場合は、次のリソースをご覧ください。

  • あなたが持っている質問に答えて、それがあなたにどのように機能するかを説明するのを喜んでするチャットルーム

  • ヒントは、スレッドのvimでのゴルフのために、しかし、ヒントのほとんどは持ち越さ。

  • Vを詳細に説明するメタ投稿


8

最近、Turtlèdと呼ばれる新しいプログラミング言語を作成しました。これは、カメと一緒にキャラクターのグリッド上で動作し、グリッド上を移動し、グリッドに書き込み、グリッドで制御フローを持ちます。グリッドは最後に暗黙的に印刷されます。スペースを書く必要がなく、テキストを左から右ではなく空間的に書き込むことができるという事実によって、おそらく、指定された定義を満たし、アスキーアートが得意です。

現在、ドキュメントはないので、おそらくあなたがやりたいことではない私のインタープリターを読みたくない限り、おそらくそれを使用することはできないでしょう。インタプリタにもバグがあると思いますが、仕様はバグかどうかを判断するのに十分に開発されていません。Turtlèdはおそらくドキュメントとすべてで、すぐに終了するでしょう


3

05AB1EのASCII-Golfingの紹介(基本変換[単純])

05AB1EはASCIIアートを直接対象とするものではありませんが、私は2つの課題に勝ちました。05AB1Eの最大の利点は、単純なベース変換でも、バイトカウントを拡張したり、半分にしたりするために使用できるトリックがしばしばあることです。多くの場合、ASCIIチャレンジでは、パターンの半分だけを描画し、反転して連結するために利用できる反復のトリックがあります。4方向のパターンの場合、ジップや分岐などの処理を行って、パターンの角のみを描画できます。この単純な基本圧縮のアイデアと組み合わせて使用​​するデータ構造操作技術はたくさんあります。


基本的な変換戦術に関する簡単なクラッシュコースを次に示します。

05AB1Eでは、たとえば、ASCIIアートで使用されるすべての文字を列挙します。

--===___===--

結果として:

-
=
_

次に、1から始まり0、2の順に番号を割り当てます。

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

元の文字列の文字を数字に置き換えます。

1122200022211

可能な限り最小のベース(3)を使用して10進数に変換します。

879412

05AB1Eを使用してこれを行う方法

次に、それをベース214に変換します。

Jh]

05AB1Eを使用してこれを行う方法

その後、次のコードでラップします。

05AB1E、16バイト

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

オンラインでお試しください!

または、表示される中間ステップで試してください。

最終的な説明:

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

さて、この特定の課題では、文字列は非常に短いため、実行する意味がありません。文字列の半分を押してPalindromizeを10バイト実行する"--===__"ûか、Adnanが階乗的で賢い男を使用してコメントで行ったようにゴルフをするでしょう•Jh]•3B5!…-=_‡。彼はまたです(の一つ?)クリエーター(S?) 05AB1Eの。


より複雑な例:

/codegolf//a/106621/59376


また、デニスのコルモゴロフ複雑言語:Bubblegumも試してみてください。これの使い方がわかりません。


2
Bubblegumは、ほとんどのASCIIアートチャレンジに必要な入力(2つのを除く)を取得できないため、ASCIIアートの実際の言語としては適切ではありません。シナモンガムは、私はそれについて多くを知らないけれども、より良い選択肢かもしれませんし、私の知識にドキュメントが存在しません
ETHproductions

1
本当に重要ではなく、することができますゴルフのこのダウン:•Jh]•3B5!…-=_‡
アドナン・

1
"--===__"û10の@Adnan ;)。
魔法のタコUr

2

絵筆

Paintbrushは、アスキーアートの得意な目的のために、私自身、Hyper Neutrinoによって作成されたレクリエーションプログラミング言語です。多くの場合、炭とはあまり競争しませんが、入力を受け取り、他のさまざまなことを行うことができます。文字の2Dグリッド上で動作し、背景文字の操作、その時点で背景文字と見なされるものの操作、行と列の移動、行と列の移動、行、列、またはグリッド全体のコピーなどが可能です。

GitHubリポジトリにいくつかの例があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.