In questa sfida devi scrivere un programma o una funzione, che accetta una stringa come input e genera uno dei due valori possibili. Chiameremo uno di questi valori verità e una falsa . Non devono necessariamente essere sinceri o falsi . Perché una risposta sia valida, deve soddisfare quattro criteri aggiuntivi
Quando passi il programma a se stesso, viene emesso il valore di verità .
Se si passa il programma come input a una risposta precedente, dovrebbe essere generato l' output vero (del programma a cui si sta passando).
Se si passa una risposta più vecchia alla risposta come input, dovrebbe essere generato l' output errato (del programma).
Ci deve essere un numero infinito di stringhe che valutano l' output vero in tutte le risposte alla sfida (inclusa la tua nuova risposta).
Ciò che farà è che costruirà lentamente una catena di risposte ciascuna delle quali può determinare se altri programmi nella catena vengono prima o dopo di essa.
L'obiettivo di questa sfida è quello di costruire un elenco di restrizioni alla fonte che vengono applicate alle risposte successive rendendo ciascuna più impegnativa della precedente.
Esempio
Una catena (scritta in Haskell) potrebbe iniziare:
f _ = True
Dal momento che non esistono programmi precedenti, i criteri non si applicano a questa risposta, è necessario solo l'output di uno dei due valori possibili, in questo caso restituisce sempre True
.
Di seguito potrebbe essere la risposta:
f x=or$zipWith(==)x$tail x
Il che afferma che c'è un carattere due volte di seguito da qualche parte nella stringa. La prima risposta non ha questa proprietà mentre la seconda fa ( ==
). Quindi questa è una prossima risposta valida.
Regole speciali
Puoi usare qualsiasi lingua tu voglia (che ha un'implementazione disponibile gratuitamente) tutte le volte che vuoi.
Se sei stata l'ultima persona a rispondere, devi attendere almeno 7 giorni prima di pubblicare una nuova risposta.
Il tuo programma potrebbe non leggere la propria fonte.
Poiché la 4a regola è estremamente difficile da verificare se sono coinvolte funzioni crittografiche, tali funzioni non sono consentite.
Criterio di punteggio
Ogni volta che aggiungi una risposta otterrai tanti punti quanti sono i suoi posti nella catena. Ad esempio la quinta risposta otterrebbe il suo scrittore 5 punti. L'obiettivo è ottenere il maggior numero di punti possibile. L'ultima risposta segnerà il suo risponditore -∞ punti. Questo sarà probabilmente più divertente se provi a massimizzare il tuo punteggio invece di "vincere" la sfida. Non accetterò una risposta.
Dal momento che questo è il concatenamento di risposte, potresti voler ordinare per più vecchio