W tym wyzwaniu musisz napisać program lub funkcję, która pobiera ciąg znaków jako dane wejściowe i wyprowadza jedną z dwóch możliwych wartości. Nazwiemy jedną z tych wartości prawdą, a jedną fałszem . Nie muszą być prawdą ani fałszem . Aby odpowiedź była ważna, musi spełniać cztery dodatkowe kryteria
Gdy przekazujesz swój program samemu sobie, wyświetla on prawdziwą wartość.
Jeśli przekażesz swój program jako dane wejściowe do jakiejkolwiek starszej odpowiedzi, powinien on wypisać prawdziwe dane wyjściowe (programu, który przekazujesz).
Jeśli podasz jakąkolwiek starszą odpowiedź jako odpowiedź, powinna ona wygenerować wynik fałszowania (twojego programu).
Musi istnieć nieskończona liczba ciągów, które oceniają prawdziwy wynik we wszystkich odpowiedziach na wyzwanie (w tym na twoją nową odpowiedź).
Powoduje to powolne tworzenie łańcucha odpowiedzi, z których każda może określić, czy inne programy w łańcuchu pojawią się przed nim, czy po nim.
Celem tego wyzwania jest stworzenie listy ograniczeń źródłowych, które są stosowane do kolejnych odpowiedzi, czyniąc każdą z nich trudniejszą niż ostatnia.
Przykład
Łańcuch (napisany w języku Haskell) mógłby rozpocząć:
f _ = True
Ponieważ nie ma starszych programów, kryteria nie mają zastosowania do tej odpowiedzi, musi ona wypisać tylko jedną z dwóch możliwych wartości, w tym przypadku zawsze wypisuje True
.
Odpowiedź może być następująca:
f x=or$zipWith(==)x$tail x
Który potwierdza, że gdzieś w łańcuchu jest znak dwa razy z rzędu. Pierwsza odpowiedź nie ma tej właściwości, a druga ma ( ==
). Dlatego jest to ważna następna odpowiedź.
Zasady specjalne
Możesz używać dowolnego języka (który ma swobodnie dostępną implementację) tyle razy, ile chcesz.
Jeśli byłaś ostatnią osobą, która udzieliła odpowiedzi, musisz poczekać co najmniej 7 dni przed opublikowaniem nowej odpowiedzi.
Twój program może nie czytać własnego źródła.
Ponieważ 4. zasada jest niezwykle trudna do zweryfikowania, czy w grę wchodzą funkcje kryptograficzne, funkcje takie są niedozwolone.
Kryterium punktacji
Za każdym razem, gdy dodasz odpowiedź, otrzymasz tyle punktów, ile jest jej miejsce w łańcuchu. Na przykład piąta odpowiedź przyniosłaby autorowi 5 punktów. Celem jest zdobycie jak największej liczby punktów. Ostatnia odpowiedź zdobędzie punkty odpowiadające - ∞ punktów. Prawdopodobnie będzie to bardziej zabawne, jeśli spróbujesz zmaksymalizować swój własny wynik, zamiast „wygrać” wyzwanie. Nie przyjmuję odpowiedzi.
Ponieważ jest to tworzenie łańcuchów odpowiedzi, możesz posortować według najstarszych