Wielu użytkowników PPCG pomogło w stworzeniu tego wyzwania, zarówno na czacie, jak i w piaskownicy, w szczególności Martin Ender , AdmBorkBork , Emigna i user202729
Nasza społeczność uznała za konieczne stworzenie zestawu języków zaprojektowanych specjalnie do gry w golfa, „języków golfowych”, jak je nazywamy. Takie języki ewoluowały od niegdyś genialnego, teraz niezgrabnego GolfScript do eleganckich, zwięzłych języków, takich jak Jelly i Husk . Jak widzimy, języki te stają się coraz krótsze dla zestawu zadań. Tak więc, jako oczywisti eksperci wokół języków golfowych, powinniśmy wspólnie opracować język, aby pokonać każdy inny język, który odważy się konkurować. Przedstawiamy Bugle!
Bugle: Z akronimu BuGoL: Bu ilt Go lfing L anguage.
Jak będzie działać to wyzwanie
Jeśli nie dostałeś tego, o czym wspomniałem we wstępie, to wyzwanie jest łańcuchem odpowiedzi, w którym każdy z nas wnosi coś do tłumacza nowego języka golfa, poprawiając jego zdolność do konkurowania na PPCG z każdą odpowiedzią.
Zamieszczę pierwszą odpowiedź składającą się z podstawy specyfikacji języka / tłumacza, a wszystkie pozostałe odpowiedzi będą od tego kontynuowane. Nowe zgłoszenia zapewnią następujące rzeczy:
- Zmiana specyfikacji języka
- Aktualny tłumacz, spełniający dokładnie to , co zostało określone w zmianach
- Zaktualizowany wynik języka (więcej szczegółów za chwilę)
Możesz zmienić specyfikację na jeden z trzech sposobów:
- Możesz dodać jedno polecenie
- Możesz dodać dwa nowe polecenia
- Możesz edytować zachowanie jednego istniejącego polecenia
Jeśli chodzi o nowego interpretera, musisz użyć najnowszej wersji napisanej w języku Python. Nie musi być golfa. Każde wcześniej dodane polecenie musi być możliwe do przetestowania przy użyciu najnowszego interpretera, a także najnowszych poleceń (tego, które dodajesz). Nie wolno również używać obraźliwego języka w żadnym momencie podczas aktualizacji interpretera, na przykład w komentarzach lub literałach łańcuchowych itp.
Dodane polecenia mogą zrobić cokolwiek zechcesz . Jedyne wymagania to:
- Nie wytwarza obraźliwych wyników
- To nie to samo, co inne polecenie
- Nie uniemożliwia to ukończenia jednego z przykładowych wyzwań
Poza tym może być tak szczegółowe lub tak ogólne, jak chcesz. Może to być także dowolna postać . Jeśli nie masz pewności, czy Twój dodatek stanowi „nowe polecenie”, możesz zapytać w komentarzach.
Ocena języka
Być może zauważyłeś, że musisz dołączać ocenę języka do wszystkich nowych zgłoszeń. Jego wynik uniemożliwia wieczne wyzwanie i jest określony następująco:
Obecny wynik to suma liczby bajtów potrzebnych do tego, aby język wykonał poniżej 20 zadań
Do każdego zadania mają zastosowanie standardowe reguły we / wy , podobnie jak standardowe luki .
20 zadań:
- "Witaj świecie!" - Wyjście łańcucha
Hello, World!
- 1, 2, Fizz, 4, Buzz - wypisuje każdą liczbę całkowitą od 1 do 100 (włącznie) w osobnej linii, z wielokrotnościami 3 zastępowanymi przez
Fizz
, wielokrotnościami 5 zastępowanymiBuzz
i wielokrotnościami obu przezFizzBuzz
- Utwórz liczbę 2014 bez żadnych liczb w kodzie źródłowym - Wypisz liczbę 2014 bez użycia żadnego ze znaków
0123456789
w kodzie źródłowym, bez dostępu do zmiennych zewnętrznych lub losowych nasion - Zamaskowany Hello World - Wyjście ciąg
Hello, World!
, bez użycia jakichkolwiek znaków w co najmniej dwóch z następujących zestawów:hlwd
,eor01
oraz27
(bez uwzględniania wielkości liter) Zaśpiewaj Happy Birthday w swoim ulubionym języku programowania - w wybranym języku wypisz następujące informacje:
Happy Birthday to You Happy Birthday to You Happy Birthday Dear [the name of your favourite programming language] Happy Birthday to You
Nie jesteśmy obcy kodować golfa, znacie zasady, ja też - ja wypisuję pełny tekst piosenki „Never Gonna Give You Up”
- Wyjście znaku - Biorąc pod uwagę liczbę, wypisz -1, jeśli jest ujemna, 0, jeśli jest 0 lub 1, jeśli jest dodatnia
- Hipoteza Collatza (OEIS A006577) - Zaczynając od liczby całkowitej, podziel ją przez 2, jeśli jest parzysta, lub pomnóż ją przez 3 i dodaj 1, jeśli jest nieparzysta, i powtarzaj proces, aż osiągniesz 1. Wynik powinien być liczbą iteracji zabierze Cię do osiągnięcia 1.
- Tablica wyzwań nr 1: Tablice naprzemienne - Biorąc pod uwagę tablicę liczb całkowitych, sprawdź, czy wszystkie elementy o indeksie parzystym są równe, a wszystkie elementy o indeksie nieparzystym są równe, i odpowiednio wypisz wartość prawdy lub fałszu
- Czy jestem nieistotną tablicą? - Biorąc pod uwagę tablicę liczb całkowitych, sprawdź, czy bezwzględne różnice między kolejnymi elementami są mniejsze lub równe 1, i odpowiednio wypisz wartość prawdy lub fałszu
- Czy ta liczba jest liczbą pierwszą? - Biorąc pod uwagę dodatnią liczbę całkowitą, napisz pełny program, aby sprawdzić, czy jest liczbą pierwszą, i odpowiednio wypisz wartość prawdy lub fałszu
- Jestem palindromem. Jesteś? - Biorąc pod uwagę ciąg znaków, sprawdź, czy jest to palindrom, podczas gdy twój program / funkcja również jest palindromem, i wypisz odpowiednio dwie odrębne i spójne wartości
- Sumuj liczby na standardowym wejściu - weź ciąg liczb z STDIN i wyślij ich sumę.
- Znajdź czynnik - biorąc pod uwagę liczbę całkowitą
n
, wypisz iloczyn wszystkich liczb całkowitych między1
in
włącznie. - Najkrótszy kod do generowania nieskończonego wyjścia - Bez żadnego wejścia, generuj nieskończone wyjście, które teoretycznie nigdy nie przestanie generować.
- Upiecz kawałek Pi - wypisz ten dokładny tekst:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
\::\433832|
\::\79502|
\::\8841|
\::\971|
\::\69|
\::\3|
\__\|
- Znajdź najmniejszą liczbę, która nie dzieli N - Biorąc pod uwagę dodatnią liczbę całkowitą N, wyprowadzaj najmniejszą dodatnią liczbę całkowitą, która nie dzieli N.
- Czy to jest parzyste czy dziwne? - Biorąc pod uwagę liczbę całkowitą N, wyprowadzaj jej parzystość jako wartości prawda / fałsz.
- Dane wyjściowe o tej samej długości co kod - Napisz najkrótszy kod, którego wynik ma taką samą długość jak kod, gdzie wynik nie jest taki sam jak kod.
- Zagraj w golfa na dobre! - Napisz najkrótszą quinę w swoim języku.
Aby zgłoszenie było ważne, nowe zgłoszenie musi zawierać zgłoszenia do gry w golfa dotyczące co najmniej 2 problemów, o co najmniej 1 bajt dla każdego. Możesz zwiększyć długość innych zgłoszeń, ale całkowity wynik musi spaść o co najmniej 2 na odpowiedź. Rozważ także dołączenie linku do zaktualizowanych programów. Zaktualizowane rozwiązania nie mogą działać po uruchomieniu z poprzednią wersją interpretera.
Jak zdobyć ciasteczka
Mam listę 5 wyzwań, które nie są obowiązkowe i nie mają wpływu na twój wynik, ale są po prostu dodatkowymi wyzwaniami, aby sprawdzić, czy Bugle jest wystarczająco zdolny. W odpowiedzi umieść rozwiązanie dowolnego z nich:
- Utwórz tłumacza
- Utwórz quine zdolne do załadunku
- Potwierdź ciąg
- Hiperprogramowanie: N + N, N × N, N ^ N wszystko w jednym
- „KNOT” czy „NOT”?
Opisy nie zostały uwzględnione, ponieważ nie są wymagane, aby każdy mógł wziąć udział w wyzwaniu.
Jak wygrać
Po osiągnięciu minimalnego wyniku ( uważamy, że jest to 16, choć wszelkie próby obniżenia golfa są mile widziane), łańcuch oczywiście zakończył się, ponieważ rozwiązania nie mogą uzyskać lepszego wyniku. Po osiągnięciu 16, wyzwanie pozostaje przy życiu przez 1 miesiąc , aby dać każdemu szansę na grę w golfa. Po upływie tego miesiąca wyzwanie się skończyło.
Po zakończeniu wyzwania przeprowadzę migrację interpretera do repozytorium GitHub i przeprowadzę zwykłe machinacje związane z wydaniem stabilnego języka. Możesz również zacząć publikować rozwiązania problemów w PPCG w tym momencie, używając wspomnianego języka, ale staraj się nie zalewać strony tytułowej odpowiedziami. Zamiast tego rozłóż je na pewien okres czasu.
Formatowanie
Aby ułatwić znalezienie informacji w odpowiedzi, sformatuj ją w następujący sposób:
# [N]. [Score]
[New command + description]
[Interpreter/link to interpreter]
[Link to programs]
Gdzie [N]
jest twój numer odpowiedzi (1 dla pierwszego, 2 dla drugiego itd.)
Zasady
- Musisz odczekać 3 godziny między opublikowaniem odpowiedzi
- Nie możesz publikować postów dwa razy z rzędu, chyba że nie otrzymałeś żadnej odpowiedzi przez 10 dni (dokładnie 240 godzin)
- Nie możesz usunąć poprzednich poleceń.
- Twój tłumacz nie musi być golfa, a jego liczba bajtów nie ma tutaj znaczenia.
- Jeśli ktoś sugeruje programom grę w golfa, dopóki twoja odpowiedź jest najnowsza, musisz dokonać edycji w golfie i zaktualizować swój wynik.
- Możesz to również zrobić, gdy Twoja odpowiedź znajduje się w środku łańcucha, pod warunkiem, że twój wynik nie spadnie poniżej żadnej z późniejszych odpowiedzi.
- Proszę powstrzymać się od odpowiadania na jakiekolwiek istniejące wyzwania PPCG w tym języku, przynajmniej do czasu zakończenia wyzwania
- Tłumacz jest napisany w Pythonie 3 i powinien być kontynuowany w całym łańcuchu. Zmiana języka jest zabroniona.
- Ponownie, aby być poprawnym, nowe zgłoszenie musi zawierać zgłoszenia do gry w golfa dla co najmniej 2 problemów, o co najmniej 1 bajt dla każdego.
Zacznijmy!
Hello, World!
, to ma 19 bajtów. Ale jeśli zachowanie pustego programu ulegnie zmianie, w zależności od danych wejściowych, można go zmniejszyć
for
pętle) są dozwolone i zachęcane do dodawania