O serii
Po pierwsze, możesz potraktować to jak każde inne wyzwanie związane z golfem i odpowiedzieć na nie, nie martwiąc się serią. Istnieje jednak tabela wyników dla wszystkich wyzwań. Możesz znaleźć tabelę liderów wraz z kilkoma więcej informacji o serii w pierwszym poście .
Chociaż mam szereg pomysłów w szeregu, przyszłe wyzwania nie są jeszcze ustalone. Jeśli masz jakieś sugestie, daj mi znać w odpowiednim poście z piaskownicą .
Hole 4: The Bertrand Paradox
Bertrand paradoksem jest ciekawy problem, który pokazuje, jak różne metody zbierania losowe akordy w kółko może dawać różne dystrybucje akordów, ich środkowych i ich długości.
W tym wyzwaniu należy wygenerować losowe akordy koła jednostkowego, stosując metodę „właściwą”, tj. Taką, która wytwarza rozkład akordów niezmienny przy skalowaniu i translacji. W powiązanym artykule w Wikipedii „Metoda 2” jest taką metodą.
Oto dokładne zasady:
- Powinieneś wziąć jedną dodatnią liczbę całkowitą,
Nktóra określa liczbę akordów, które powinny zostać zwrócone. Wyjściem powinna być listaNakordów, każdy określony jako dwa punkty na okręgu jednostki, podany przez ich kąt biegunowy w radianach. - Twój kod powinien mieć możliwość zwrócenia co najmniej 2 20 różnych wartości dla każdego z dwóch kątów . Jeśli dostępne RNG ma mniejszy zasięg, musisz najpierw zbudować RNG o wystarczająco dużym zasięgu na górze wbudowanego lub musisz wdrożyć własny odpowiedni RNG . Ta strona może być do tego pomocna.
- Dystrybucja akordów musi być nie do odróżnienia od tej wyprodukowanej przez „Method 2” w powiązanym artykule Wikipedii. Jeśli wdrażasz inny algorytm do wybierania akordów, dołącz dowód poprawności. Niezależnie od tego, jaki algorytm wybierzesz do wdrożenia, teoretycznie musi on być w stanie wygenerować dowolny prawidłowy akord w okręgu jednostki (z wyjątkiem ograniczeń bazowego PRNG lub typów danych o ograniczonej precyzji).
- Wdrożenie powinno wykorzystywać i zwracać albo liczby zmiennoprzecinkowe (o szerokości co najmniej 32 bity), albo liczby o stałym punkcie (o szerokości co najmniej 24 bity), a wszystkie operacje arytmetyczne powinny być dokładne z dokładnością do co najmniej 16 ul .
Możesz napisać pełny program lub funkcję i pobrać dane wejściowe za pomocą STDIN (lub najbliższej alternatywy), argumentu wiersza poleceń lub argumentu funkcji i wygenerować wynik za pomocą STDOUT (lub najbliższej alternatywy), wartości zwracanej funkcji lub parametru funkcji (wyjściowej).
Dane wyjściowe mogą być w dowolnym dogodnym formacie listy lub ciągu, o ile poszczególne liczby są wyraźnie rozróżnialne, a ich całkowita liczba jest zawsze równa.
To jest kod golfowy, więc wygrywa najkrótsze przesłanie (w bajtach). I oczywiście najkrótsze zgłoszenie na użytkownika wejdzie również do ogólnej tabeli liderów serii.
Wyobrażanie sobie
Możesz użyć poniższego fragmentu, aby wyrenderować wygenerowane linie i sprawdzić ich rozkład. Wystarczy wkleić listę par kątów w polu tekstowym. Fragment powinien być w stanie obsłużyć prawie każdy format listy, o ile liczby są prostymi liczbami dziesiętnymi (bez notacji naukowej). Zalecam użycie co najmniej 1000 linii, aby uzyskać dobry pomysł na dystrybucję. Podałem również kilka przykładowych danych dla różnych metod przedstawionych w poniższym artykule.
Przykładowe dane wygenerowane za pomocą metody 1.
Przykładowe dane wygenerowane za pomocą metody 2.
Przykładowe dane wygenerowane za pomocą metody 3.
Tabela liderów
Pierwszy post z serii generuje tabelę wyników.
Aby upewnić się, że Twoje odpowiedzi się pojawią, zacznij każdą odpowiedź od nagłówka, używając następującego szablonu Markdown:
# Language Name, N bytes
gdzie Njest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Język nie jest obecnie wyświetlany, ale fragment go wymaga i analizuje, a w przyszłości mogę dodać tabelę wyników według języków).



