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 wygenerować grafikę ASCII, ale raczej tych, które celowo zaprojektowano tak, aby były w stanie wykonać wyzwania ascii-art w stosunkowo krótki i zwięzły sposób.
Odpowiedzi:
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”
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 ascii-art , 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.
źródło
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
źródło
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:
Zastępuję znaki w oryginalnym ciągu cyframi:
Przeliczam na dziesiętny, używając najniższej możliwej podstawy (3):
( Jak to zrobić za pomocą 05AB1E )
Następnie przekonwertowałem go na bazę 214:
( Jak to zrobić za pomocą 05AB1E )
Następnie zawijam go w następujący kod:
05AB1E , 16 bajtów
Wypróbuj online!
Lub spróbuj z wyświetlonymi krokami pośrednimi.
Ostateczne wyjaśnienie:
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ć.źródło
•Jh]•3B5!…-=_‡
"--===__"û
za 10;).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.
źródło