Czy są jakieś języki szczególnie dobre w sztuce ASCII?

20

Zastanawiałem się, czy są jakieś języki ezoteryczne lub golfowe, które są specjalnie ukierunkowane na tekst i grafikę ASCII?

Na przykład 05AB1E przynajmniej zaczął od kierowania konwersji podstawowych. Czy są jakieś języki gry w golfa ukierunkowane na tekst i grafikę?

Jeśli tak, to czy mają tutaj strony ze wskazówkami i czy są w powszechnym użyciu?

Uwaga: nie szukam języków, które są w stanie grafikę ASCII, ale raczej tych, które celowo zaprojektowano tak, aby były w stanie wykonać wyzwania w stosunkowo krótki i zwięzły sposób.

Socratic Phoenix
źródło
1
Jak już wspomniałeś, z mojego doświadczenia wynika, że ​​05AB1E bardzo dobrze radzi sobie w wyzwaniach artystycznych w ascii.
DJMcMayhem
1
Chciałbym zobaczyć język ASCII o nazwie „ASC i II otrzymają”. (Poważnie, jeśli się jeszcze nie wyjdzie, jest tam całkiem spory potencjał.)
Hactar,
Zaprojektowałem język o nazwie Crayon, który został stworzony specjalnie do tworzenia grafiki ASCII, ale niestety nie miałem jeszcze czasu na jego wdrożenie.
ETHproductions
@ Tylko ASCII i pracuję nad językiem ASCII-art. Nadal jest w fazie projektowania, ale chcielibyśmy, aby Twój (lub kogokolwiek) wkład. Dołącz do nas na czacie, jeśli jesteś zainteresowany.
DLosc
Cóż, tutaj myślałem, że mój pomysł jest wyjątkowy ... Zadałem to pytanie, ponieważ chciałem napisać język oparty na CharMatrix. Nikt jednak nie wspomniał o jednej z funkcji, które chciałem, więc i tak mogę to zrobić. Nawiasem mówiąc, wszystkie odpowiedzi i komentarze były świetne, dziękuję wszystkim
Socratic Phoenix,

Odpowiedzi:

15

Cóż, tak naprawdę jest! Jeden taki język jest jednym pracuję na chwilę o nazwie V .

Pod maską V to tylko vim , ale wszystkie naciśnięcia klawiszy są uruchamiane automatycznie, a zawartość bufora vim jest drukowana do STDOUT po zakończeniu programu. To sprawia, że ​​uruchamianie go jest wygodniejsze.

Trochę historii o języku. Kiedy zacząłem używać edytora tekstu vim do gry w golfa kodowego, odkryłem, że jest w tym całkiem niezły, ale ma pewne irytujące funkcje, które utrudniają rywalizację. Na przykład możesz skonfigurować „pętlę while”

qq<foobar>@qq@q

które będą powtarzane <foobar>aż do wystąpienia błędu. Zawiera 7 bajtów kodu typu „kocioł”. W V jest to skrócone do ò<foobar>ò.

Niektóre rzeczy, które sprawiają, że V jest świetny dla ASCII-art:

  • Jest z natury 2d. Jedną z cech jest to, że ma pozycję „kursora”, w której większość poleceń robi coś w oparciu o położenie kursora w tekście. Pozostałe polecenia zmieniają położenie kursora. Na przykład x usuwa pojedynczy znak, ale Wx przesuwa słowo do przodu, a następnie usuwa znak. Ponieważ większość innych języków nie jest celowo dwuwymiarowa, daje to dobrą przewagę, gdy wyzwanie polega na ustawieniu tekstu w przestrzeni 2D

  • Jest całkowicie oparty na ciągach znaków. Państwo może korzystać z niektórych operacji Mathy, ale są to zazwyczaj już droga do osiągnięcia rzeczy.

  • Wykorzystuje kompresję wyrażeń regularnych, aby szybko zmieniać tekst.

  • Cała pamięć wewnętrzna, która jest tylko 2d tablicą znaków, jest domyślnie drukowana po zakończeniu programu. Ponadto wszystkie dane wejściowe są domyślnie dodawane do jego pamięci wewnętrznej , co jest przyjemne, gdy większość wyzwań polega na zmianie danych wejściowych w określony sposób.

Naprawdę lubię używać tego języka, a jeśli szukasz specyficznego języka , bardzo go polecam. Jednak , ja też dać kilka zastrzeżenia.

  • Uczenie się jest bardzo mylące. Jest również bardzo potężny, ale ponieważ opiera się na bardzo popularnym edytorze tekstu, który ma 30 lat, istnieje wiele niejasnych funkcji, które mogą bardzo łatwo zmylić nowych użytkowników.

  • Mimo że lepiej radzi sobie z liczbami niż vim, obsługa liczb wciąż nie jest świetna. Osobiście uważam, że dzięki temu praca jest przyjemniejsza (coś w rodzaju używania siatkówki do zadań, których regex nigdy nie był przeznaczony). :RE

  • To wciąż jest PWT. Jest kilka błędów i kilka rzeczy, których jeszcze nie udało mi się dodać.

  • Nie ma zbyt wielu użytkowników. (Aktualna liczba użytkowników: 1).

Jeśli chcesz dowiedzieć się więcej, oto kilka dobrych zasobów:

  • Chat room , gdzie byłbym chętnie odpowie na wszelkie pytania i pomaga wyjaśnić, jak to działa dla Ciebie.

  • A wskazówki gwint do golfa w vim, ale większość z porad przeniesienie.

  • Meta po opisując V w jakiś sposób bardziej szczegółowy.

DJMcMayhem
źródło
8

Niedawno stworzyłem nowy język programowania, zwany Turtlèd , który działa na siatce znaków z żółwiem, który porusza się po siatce, pisze do siatki i ma kontrolę nad nią. Siatka jest domyślnie drukowana na końcu. Dzięki temu, że nie musi pisać spacji i że może pisać tekst przestrzennie, a nie od lewej do prawej, od góry do dołu, prawdopodobnie sprawia, że ​​spełnia podaną definicję, będąc dobrym w sztuce ascii.

Obecnie nie ma żadnych dokumentów, więc prawdopodobnie nie będziesz mógł z niego korzystać, chyba że chcesz przeczytać mojego tłumacza, co prawdopodobnie nie jest czymś, co chcesz zrobić. Myślę, że mogą być również błędy w tłumaczu, ale specyfikacja nie jest wystarczająco rozwinięta, aby stwierdzić, czy jest to błąd. Turtlèd prawdopodobnie niedługo skończy, z dokumentami i wszystkim

Zniszczalna cytryna
źródło
3

Wprowadzenie do ASCII-Golfing dla 05AB1E (konwersja podstawowa [Prosty])

Chociaż 05AB1E nie jest przeznaczony bezpośrednio do ASCII-Art, wygrałem z nim 2 wyzwania. Najlepszą rzeczą w 05AB1E jest to, że nawet przy prostej konwersji bazy często istnieją sztuczki, których można użyć do wydłużenia, a nawet zmniejszenia o połowę liczby bajtów. Często w wyzwaniach ASCII są sztuczki powtórkowe, których można użyć, aby narysować tylko połowę wzoru, a następnie odwrócić i połączyć. Jeśli jest to wzór czterokierunkowy, możesz robić rzeczy takie jak zip i bifurcate, aby narysować tylko róg wzoru. Istnieje wiele technik manipulacji strukturą danych, które można zastosować w połączeniu z tym prostym pomysłem kompresji bazy.


Oto krótki kurs awaryjny dotyczący podstawowej taktyki konwersji:

W 05AB1E wyliczam wszystkie znaki użyte w sztuce ASCII, na przykład:

--===___===--

Spowodowałoby to:

-
=
_

Następnie przypisuję im liczby zaczynające się od 1, a następnie 0, a następnie 2:

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

Zastępuję znaki w oryginalnym ciągu cyframi:

1122200022211

Przeliczam na dziesiętny, używając najniższej możliwej podstawy (3):

879412

( Jak to zrobić za pomocą 05AB1E )

Następnie przekonwertowałem go na bazę 214:

Jh]

( Jak to zrobić za pomocą 05AB1E )

Następnie zawijam go w następujący kod:

05AB1E , 16 bajtów

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

Wypróbuj online!

Lub spróbuj z wyświetlonymi krokami pośrednimi.

Ostateczne wyjaśnienie:

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

Teraz przy tym konkretnym wyzwaniu ciąg jest tak krótki, że nie ma sensu tego robić. Prawdopodobnie popchnęłbym połowę sznurka i palindromizowałem dla 10 bajtów "--===__"ûlub grałem w golfa, jak Adnan w komentarzach, używając silnego, inteligentnego człowieka •Jh]•3B5!…-=_‡. Jest także (jednym z?) Twórcą (-ami) 05AB1E.


Bardziej złożony przykład:

/codegolf//a/106621/59376


Spróbuj też języka złożoności złożonej z Dennisa: Bubblegum ; nie mam pojęcia, jak tego użyć.

Urna Magicznej Ośmiornicy
źródło
2
Bubblegum nie jest tak naprawdę dobrym językiem dla sztuki ASCII, ponieważ nie może ewentualnie brać udziału (z wyjątkiem dwóch przykładów ), co jest wymagane w przypadku większości wyzwań związanych z sztuką ASCII. Guma cynamonowa może być lepszym rozwiązaniem, choć niewiele o tym wiem i o ile wiem, nie ma żadnych dokumentów
ETHproductions
1
Nie bardzo ważne, ale możesz zagrać w golfa do:•Jh]•3B5!…-=_‡
Adnan
1
@Adnan "--===__"ûza 10;).
Magic Octopus Urn
2

Pędzel

Paintbrush to rekreacyjny język programowania, stworzony przeze mnie, Hyper Neutrino, w celu bycia dobrym w ASCII-Art. W wielu przypadkach nie konkuruje dobrze z węglem drzewnym, ale może brać wkład i robić wiele innych rzeczy. Działa na siatce znaków 2D i jest w stanie manipulować znakiem tła, manipulować czymś, co w danym momencie jest uważane za znak tła, przesuwać rzędy i kolumny, przenosić rzędy i kolumny, kopiować wiersze, kolumny lub całą siatkę itp.

Niektóre przykłady można znaleźć w repozytorium GitHub.

HyperNeutrino
źródło