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