Jednym z moich ulubionych rodzajów wyzwań na tej stronie są wyzwania o ograniczonym źródle . Wyzwania te nakładają na komputerowe ograniczenie, które muszą przejść źródła potencjalnych odpowiedzi. Tak bardzo lubię te wyzwania, od jakiegoś czasu pracuję nad językiem golfa, który ma na celu wygrać w tych wyzwaniach. Teraz chcę przekazać ci wyzwanie. Twoim zadaniem jest zaprojektowanie języka w celu rozwiązania szeregu ograniczonych zadań źródłowych. Będziesz miał czas zaprojektować i wdrożyć język, w którym to momencie zmiany i nowe dodatki będą niekonkurujące, a wszystkie zgłoszenia zmierzą się w pojedynku z wyzwaniami o ograniczonym źródle .
Punktacja
Przed opublikowaniem wyzwania przedstawię listę prostych wyzwań do rozwiązania oraz listę ograniczeń źródłowych, których należy przestrzegać. Za każde dopasowanie ograniczeń wyzwania i ograniczeń źródłowych Twój język może zarobić od 0 do 2 punktów. (będzie 10 wyzwań i 10 ograniczeń prowadzących do 100 wszystkich kombinacji) A wyniki językowe
- 1 punkt, jeśli może wykonać zadanie z ograniczeniem poniżej 150 bajtów
- 2 punkty, jeśli rozwiązanie jest najkrótszym rozwiązaniem dowolnego konkurencyjnego języka (oba języki zdobędą 2 punkty w przypadku remisu)
- 0 punktów, jeśli nie są w stanie utworzyć programu, który wykonuje zadanie w ramach ograniczenia w mniej niż 150 bajtach.
Twój wynik będzie sumą wszystkich punktów zdobytych w każdym możliwym pojedynku. Celem jest uzyskanie jak najwyższego wyniku. Inne osoby mogą pomóc Ci znaleźć rozwiązania dla każdego wyzwania i poprawić Twój wynik.
Ujawnię 4 pozycje z każdej listy w momencie publikacji i dodatkowe 8 w tydzień po drugiej odpowiedzi. Będziesz mógł zdobyć tylko 1 punkt (najkrótsze zgłoszenie się nie liczy) w żadnym meczu, w którym obie części zostały ujawnione przed pierwszym tygodniem. W ten sposób możesz zorientować się, jak dobrze Twój język kumuluje się podczas pracy nad nim, ale nie możesz zaprojektować swojego języka po prostu, aby sprostać wszystkim wyzwaniom i ograniczeniom.
Do pytania dołączę skrót zamierzonych kategorii, dzięki czemu będziesz mieć pewność, że nie zmienię ich w ciągu tygodnia, aby zyskać przewagę nad jakąkolwiek stroną. Ponadto nie zdradzę nikomu ukrytych parametrów, dopóki tydzień się nie skończy, ani nie wezmę udziału w wyzwaniu.
Wcześniej istniejące języki
To wyzwanie jest otwarte dla wszystkich wcześniej istniejących języków, ale jeśli nie jesteś autorem tego języka, prosimy o zamieszczenie swojej odpowiedzi w wiki społeczności, aby inni członkowie naszej społeczności mogli bezpośrednio przyczynić się do wyniku. Flagi wiersza poleceń nie muszą podlegać żadnym ograniczeniom, jednak każdy program powinien być uruchamiany z tymi samymi argumentami wiersza poleceń (tzn. Powinieneś wybrać jeden i trzymać się go). Nie zwiększają one liczby bajtów.
Wyzwania i ograniczenia
Ograniczenia są egzekwowane w kodowaniu plików binarnych ASCII niezależnie od używanej strony kodowej. Niektóre z nich prowadzą do istniejącego pytania w witrynie, z którego dziedziczą wymagania dotyczące wymagań i ograniczenia źródłowe ograniczeń. Możesz zignorować wszystko, co „blokuje wbudowane” lub zastępuje istniejące meta konsensu w sprawie dowolnego z powiązanych wyzwań.
Jako ostrzeżenie: nie próbuj rządzić prawnikiem; Wiem, że jest to konkurencja, ale ponieważ istnieje w zasadzie 100 różnych wyzwań podzwrotnych i po prostu nie mogę zagwarantować, że wszystkie będą całkowicie bezproblemowe. Po prostu spróbuj się dobrze bawić.
Wyzwania
Ograniczenia
Bajty są w porządku rosnącym (każdy bajt jest większy niż ostatni)
Kod źródłowy to palindrom
Pozostałe kryteria mają skrót sha512:
4de5eca33c6270798606cf1412820c4ce112d8b927ef02877f36795b2b15ffacca51ea598fa89b8d6bc9f4cde53810e0e7ade30e536e52e28f40a6a13841dfc5 -
źródło
Odpowiedzi:
Szerokość
Tłumacz jest wciąż w toku (wciąż mam kilka nieużywanych miejsc poleceń). Repozytorium z większą dokumentacją można znaleźć tutaj .
Dennis dodał do TIO Szerokość mniej niż minutę temu: Wypróbuj online!
Szerokość to ezoteryczny język oparty na stosach, który opracowałem niedawno na podstawie pomysłów, które po raz pierwszy rzuciłem w to pytanie . Opiera się on całkowicie na tym, jak szeroka, mniej więcej, litera ma „zwykłą” czcionkę. Jedynymi znakami, które cokolwiek robią, są litery, wielkie i małe litery. Wszystkie pozostałe znaki są ignorowane. Dzielę litery na 10 różnych kategorii szerokości, które tworzą 10 różnych akcji możliwych w Width:
2
,5
i6
zapewniają dostęp do poleceń, z których większość wchodzi w interakcję ze stosem. Więcej informacji można znaleźć nainfo.txt
stronie w repozytorium Github.To jest kod Pythona interpretera. Wciąż mam kilka poleceń do dodania i zastanawiam się, jak pracować z obsługą błędów, ale w przeciwnym razie powinno być kompletne. (W pewnym momencie dodam także flagę, aby umożliwić testowanie z bardziej abstrakcyjną składnią, ponieważ w przeciwnym razie ten język jest ogromnym problemem do pracy)
źródło