Sfida ciclica poliglotta
Questo è il thread della polizia. Puoi trovare il thread dei ladri qui .
Polyglot ciclico
Un poliglotta ciclico N-element è un programma completo che può essere eseguito in N lingue diverse. In ogni lingua, quando il programma viene eseguito senza input (possibilmente soggetto a questa eccezione ), dovrebbe stampare il nome di una lingua su STDOUT. In particolare, se il programma viene eseguito nella lingua Kth, dovrebbe stampare il nome della (K + 1) lingua. Se il programma viene eseguito nell'ennesima lingua (ovvero, la lingua finale in un ciclo dell'elemento N), dovrebbe stampare il nome della prima lingua.
Un esempio potrebbe essere utile.
a = [[ v = 7, puts('Befunge') ]]
__END__
= print("Ruby")
-->*+:292*++,,@
--3 9
--7 *
--^,:-5<
L'esecuzione di questo programma con Lua stampa la stringa "Ruby". L'esecuzione di questo programma in Ruby stampa la stringa "Befunge". L'esecuzione di questo programma in Befunge stampa la stringa "Lua", completando il ciclo. Questo programma costituisce un ciclo di 3 cicli composto da Lua, Ruby e Befunge.
La stessa lingua non può apparire due volte in un ciclo e versioni diverse della stessa lingua (come Python 2 e Python 3) non possono apparire nello stesso ciclo l'una dell'altra.
Cops
La tua sfida è scrivere un poliglotta N-ciclico, dove N è almeno 2. Quindi, è necessario aggiungere, sostituire ed eliminare un numero di caratteri al programma per produrre un poliglotta M-ciclico, dove M è strettamente maggiore di N Dovresti quindi pubblicare il poliglotta N-ciclico più corto (e le lingue in cui scorre), nonché il numero di caratteri che hai cambiato per produrre il poliglotta più lungo. Il tuo punteggio è N, il numero di lingue nel tuo ciclo più breve.
I ladri cercheranno di identificare il tuo ciclo più lungo. Se, dopo sette giorni, nessuno ha risolto con successo la soluzione, è necessario modificare la risposta dichiarando che è sicura. Dovresti anche pubblicare il tuo poliglotta M-ciclico più lungo in questo momento.
Robbers
Dato il poliglotto N-ciclico di un poliziotto e il numero di caratteri che hanno aggiunto per produrre un ciclo poliglotta più grande, il tuo obiettivo è quello di produrre quel ciclo più grande. Se riesci a produrre un ciclo più lungo aggiungendo, eliminando o sostituendo il maggior numero di caratteri del poliziotto o meno personaggi , hai rotto il poliglotta del poliziotto. Il tuo punteggio è la durata del nuovo ciclo che hai creato. Il tuo nuovo poliglotta non deve necessariamente essere uguale o addirittura simile al poliglotta segreto del poliziotto; deve solo essere più grande di quello esistente.
La tua soluzione potrebbe anche essere rotta. Se arriva un altro ladro e produce un ciclo rigorosamente più lungo del tuo, a partire dallo stesso poliglotta del poliziotto, hanno rubato i tuoi punti.
Linguaggi di programmazione validi
Poiché questa sfida implica indirettamente indovinare i linguaggi di programmazione utilizzati da altri partecipanti, la definizione di un linguaggio di programmazione ai fini di questa sfida sarà un po 'più rigorosa della definizione abituale. Un linguaggio di programmazione utilizzato in questa sfida deve soddisfare tutte le seguenti condizioni.
- Il linguaggio deve soddisfare i soliti requisiti PPCG per un linguaggio di programmazione .
- La lingua deve contenere un articolo di Wikipedia , un articolo di Esolangs o un articolo del codice Rosetta al momento della pubblicazione della sfida.
- La lingua deve avere un interprete o un compilatore liberamente disponibili.
Note finali
- Il codice che scrivi dovrebbe essere un programma autonomo in ogni lingua in cui è previsto l'esecuzione. Non sono consentite funzioni o frammenti di codice.
- Al programma non verrà fornito alcun input tramite STDIN. Allo stesso modo, il programma non dovrebbe stampare nulla su STDERR.
- Il punteggio di un poliziotto è il numero di lingue nel ciclo del poliglotta che hanno pubblicato. Il poliziotto dovrebbe pubblicare le lingue in cui il poliglotta pubblicato funziona correttamente, così come il numero di caratteri aggiunti per produrre un poliglotta più lungo. Essi sono non responsabili per la pubblicazione le lingue le piste, poliglotti più nascosta fino a quando la loro risposta è sicura.
- Il punteggio di un ladro è il numero di lingue in cui viene eseguito il poliglotta modificato. Come per il poliziotto, il ladro dovrebbe pubblicare l'elenco delle lingue in cui il poliglotta corre correttamente.
- Il numero di caratteri modificati deve essere calcolato a distanza di Levenshtein.