ASCII sanatında özellikle iyi diller var mı?


20

Özellikle metin çıktısını ve ASCII sanatını hedefleyen ezoterik veya golf dilleri olup olmadığını merak ediyordum?

Örneğin, 05AB1E en azından temel dönüşümleri hedefleyerek başlar. Metin çıktısı ve metin çıktısı sanatını hedefleyen golf dilleri var mı?

Öyleyse, burada ipucu sayfaları var mı ve ortak kullanımda mı?

Not: ASCII sanatını üretebilen dilleri aramıyorum , aksine zorluklarını nispeten kısa ve özlü bir şekilde tamamlamak için kasıtlı olarak tasarlanmış diller arıyorum .


1
Bahsettiğinizden beri, 05AB1E deneyimim ascii sanat mücadelelerinde çok iyi.
DJMcMayhem

1
"ASC ve II alacağım" adında bir ASCII-art dili görmek istiyorum. (Cidden, eğer biri henüz çıkmazsa, orada biraz potansiyel var.)
Hactar

Özellikle ASCII sanatı yaratmak için yapılmış Crayon adında bir dil tasarladım , ancak maalesef bunu uygulamak için henüz zamanım olmadı.
ETHproductions

@ Sadece ASCII ve ben bir ASCII-art dili üzerinde çalışıyorum. Hala tasarım aşamasında, ancak (ya da herhangi birinin) girdinizi çok seviyoruz. Eğer ilgileniyorsanız bize sohbette katılın .
DLosc

Burada fikrimin benzersiz olduğunu düşünüyordum ... Bu soruyu sordum çünkü CharMatrix tabanlı bir dil yazmak istedim. Kimse istediğim özelliklerden birinden bahsetmedi, bu yüzden devam edip yine de yapabilirim. Bu arada tüm cevaplar ve yorumlar harikaydı, herkese teşekkürler
Socratic Phoenix

Yanıtlar:


15

Aslında, var! Böyle bir dil, V adlı bir süredir üzerinde çalıştığım dil .

Kaputun altında V sadece vim'dir , ancak tüm tuş vuruşları otomatik olarak çalıştırılır ve vim arabelleğinin içeriği program bittiğinde STDOUT'a yazdırılır. Bu sadece çalıştırmayı daha kolay hale getirir.

Dilde biraz tarih. Kod golf için vim metin editörünü kullanmaya başladığımda, aslında oldukça iyi olduğunu keşfettim, ancak rekabet etmeyi zorlaştıran bazı can sıkıcı özelliklere sahip. Örneğin, bir çeşit "while döngüsü" oluşturarak

qq<foobar>@qq@q

bu <foobar>bir hata oluşana kadar tekrarlanır . Bu 7 bayt kaynatma plakası koduna sahiptir. V'de bu kısaltılır ò<foobar>ò.

V'yi ASCII-art için harika yapan şeylerden bazıları:

  • Doğası gereği 2d'dir. Bir özellik, komutların çoğunun imlecin metinde nerede bulunduğuna bağlı olarak bir şey yaptığı bir "imleç" konumuna sahip olmasıdır. Diğer komutlar imlecin yerini taşır. Örneğin, x tek bir karakteri siler, ancak Wx bir sözcüğü ileriye taşır ve sonra bir karakteri siler. Diğer dillerin çoğu kasıtlı olarak 2 boyutlu olmadığından, meydan okuma metni 2B uzayda konumlandırmak olduğunda güzel bir avantaj sunar

  • Bu edilir tamamen dize bazlı. Sen edebilirsiniz bazı Mathy işlemlerini kullanabilirsiniz ancak bu genellikle şeyleri başarmak için daha uzun bir yoldur.

  • Metni hızla değiştirmek için normal ifade sıkıştırma kullanır .

  • Sadece 2d karakter dizisi olan tüm dahili belleği, program sona erdiğinde örtük olarak yazdırılır. Ek olarak, tüm girdiler dahili belleğine örtülü olarak eklenir , bu da zorluğun çoğu girişi belirli bir şekilde değiştirmekle ilgili olduğunda güzeldir.

Bu dili kullanmaktan gerçekten zevk alıyorum ve özellikle dili arıyorsanız , kesinlikle tavsiye ederim. Ancak , aynı zamanda birkaç sorumluluk reddi beyan ederim.

  • Öğrenmek çok kafa karıştırıcı. Aynı zamanda çok güçlü, ancak 30 yaşında çok popüler bir metin editörüne dayandığı için, yeni kullanıcıları kolayca karıştırabilecek çok sayıda gizli özellik var.

  • Rakamların işlenmesinde vim'den daha iyi olmasına rağmen, sayı desteği hala mükemmel değildir. Şahsen, bunun çalışmayı daha eğlenceli hale getirdiğini düşünüyorum (regex'in asla amaçlanmadığı görevler için retinayı kullanmak gibi). : D

  • Hala bir Devam Eden Çalışma. Bazı hatalar var ve henüz eklemem gereken bazı şeyler var.

  • Çok fazla kullanıcısı yok. (Mevcut kullanıcı sayısı: 1).

Daha fazla bilgi edinmek istiyorsanız, bazı iyi kaynaklar şunlardır:

  • Sorularınızı yanıtlamaktan ve size nasıl çalıştığını açıklamaktan memnuniyet duyacağım bir sohbet odası .

  • Vim golf oynamak için bir ipucu iplik , ancak ipuçlarının çoğu taşır.

  • V'yi biraz daha ayrıntılı olarak tanımlayan bir meta yayın .


8

Kısa bir süre önce , bir kaplumbağa ile ızgara üzerinde hareket eden, ızgaraya yazan ve ızgara ile kontrol akışına sahip bir karakter ızgarası üzerinde çalışan Turtlèd adlı yeni bir programlama dili yaptım . Izgara sonunda örtülü olarak yazdırılır. Bu, boşluk yazmak zorunda olmadığı ve metni soldan sağa değil, yukarıdan aşağıya doğru uzamsal olarak yazabileceği gerçeğiyle, muhtemelen ascii sanatında iyi olan verilen tanımla buluşmasını sağlar.

Şu anda herhangi bir doküman yok, bu yüzden muhtemelen yapmak istediğiniz bir şey olmayan tercümanımı okumak istemiyorsanız, muhtemelen kullanamayacaksınız. Tercümanda da hatalar olabileceğini düşünüyorum, ancak spec bir hata olup olmadığını söyleyecek kadar gelişmemiş. Turtlèd, yakında dokümanlar ve diğerleriyle bitecek


3

05AB1E için ASCII-Golf'e Giriş (Temel Dönüşüm [Basit])

05AB1E doğrudan ASCII-Art için tasarlanmamış olsa da, onunla 2 zorluk kazandım. 05AB1E ile ilgili en iyi şey, basit taban dönüşümü ile bile, bayt sayınızı genişletmek ve hatta yarıya indirmek için kullanabileceğiniz numaralar olmasıdır. Genellikle ASCII zorluklarında kalıbın sadece yarısını çizip çevirip birleştirmek için kullanabileceğiniz tekrarlama hileleri vardır. Dört yönlü bir desense, desenin sadece bir köşesini çizmek için zip ve bifürkate gibi şeyler yapabilirsiniz. Bu basit taban sıkıştırma fikri ile birlikte kullanılacak birçok veri yapısı manipülasyon tekniği vardır.


Temel dönüşüm taktiği hakkında hızlı bir kurs:

05AB1E'de ASCII sanatında kullanılan tüm karakterleri numaralandırıyorum, örneğin:

--===___===--

Şunlarla sonuçlanır:

-
=
_

Sonra onlara 1'den sonra 0'dan sonra 2'den numaralar atarım:

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

Orijinal dizedeki karakterleri sayılarla değiştiriyorum:

1122200022211

Mümkün olan en düşük tabanı (3) kullanarak ondalığa dönüştürüyorum:

879412

( 05AB1E kullanarak nasıl yapılır )

Sonra temel 214 dönüştürmek:

Jh]

( 05AB1E kullanarak nasıl yapılır )

Daha sonra aşağıdaki kodda sarın:

05AB1E , 16 bayt

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

Çevrimiçi deneyin!

Veya görüntülenen ara adımlarla deneyin.

Final açıkladı:

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

Şimdi, bu özel meydan okuma ile dize o kadar kısa ki yapmak mantıklı değil. Muhtemelen ipin yarısını itip 10 bayt için Palindromize "--===__"ûveya faktöriyel, akıllı adamı kullanarak yorumlarda Adnan'ın yaptığı gibi golf yapardım •Jh]•3B5!…-=_‡. O da var (biri?) Yaratıcısı (ler?) 05AB1E ait.


Daha karmaşık bir örnek:

/codegolf//a/106621/59376


Ayrıca, Dennis'in kolmogorov-karmaşıklık dilini de deneyebilirsiniz: Bubblegum ; bunu nasıl kullanacağımı bilmiyorum.


2
Bubblegum ASCII-art için gerçekten iyi bir lang değildir, çünkü çoğu ASCII-art mücadelesi için gerekli olan girdi (iki örnek hariç) alamaz . Tarçın Sakızı daha iyi bir seçenek olabilir, ancak bu konuda çok fazla bilgim yok ve
bilgime göre

1
Gerçekten önemli değil, ama bunu golf için olabilir:•Jh]•3B5!…-=_‡
Adnan

1
@ "--===__"û10 için adnan ;).
Sihirli Ahtapot Urn

2

boya fırçası

Paintbrush, ASCII-Art'ta iyi olmak için Hyper Neutrino tarafından yaratılan bir eğlence programlama dilidir. Birçok durumda Charcoal ile iyi rekabet etmez, ancak girdi alabilir ve çeşitli başka şeyler yapabilir. 2D karakterlik bir ızgara üzerinde çalışır ve arka plan karakterini, o sırada arka plan karakteri olarak kabul edilenleri, satırları ve sütunları değiştirebilir, satırları ve sütunları taşıyabilir, satırları, sütunları veya tüm ızgarayı değiştirebilir.

Bazı örnekler GitHub deposunda bulunabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.