Questa è una sfida per poliziotti e ladri . Rispondi qui se sei un poliziotto (creatore di parole crociate), rispondi alla domanda del compagno se sei un ladro (risolutore di parole crociate). Puoi assumere entrambi i ruoli.
Poliziotti (Rompicapo)
Il tuo compito è di scrivere un cruciverba 10 × 10 in cui, invece di parole o frasi, frammenti di codice sono le soluzioni agli indizi. Ogni indizio sarà una sequenza non vuota di caratteri tale che l'esecuzione dello snippet di codice a cui fa riferimento stamperà la sequenza su stdout.
Il tuo post deve includere tre cose:
- La tua griglia di parole incrociate 10 × 10 vuota , usando
#
per i bui (separatori di indizi) e_
per le luci (celle da riempire).- Ogni sequenza orizzontale o verticale di 2 o più luci (delimitata da ombre o dal bordo della griglia) è una voce per la quale è necessario scrivere un indizio. Per comodità, dovresti numerarli nel solito modo (da sinistra a destra, dall'alto verso il basso) sostituendo
_
all'inizio di ogni voce con un identificatore di carattere univoco (ad esempio 1, 2, ..., A, B , ...). - La tua griglia potrebbe avere un numero qualsiasi di oscurità.
- La tua griglia può avere qualsiasi numero di indizi.
- Le voci orizzontali vengono sempre lette da sinistra a destra e quelle verticali dall'alto verso il basso.
- Ogni sequenza orizzontale o verticale di 2 o più luci (delimitata da ombre o dal bordo della griglia) è una voce per la quale è necessario scrivere un indizio. Per comodità, dovresti numerarli nel solito modo (da sinistra a destra, dall'alto verso il basso) sostituendo
- Un elenco di indizi che contiene ogni voce nel tuo cruciverba, verso il basso e attraverso.
- Gli indizi devono contenere almeno 1 e non più di 10 caratteri.
- Se i tuoi indizi contengono spazi assicurati che siano ovvi quando formatti il tuo post.
- Frammenti di codice di intestazione e piè di pagina , ciascuno di 20 caratteri o meno.
- Questi vengono eseguiti rispettivamente prima e dopo uno snippet di soluzione e possono aiutare a rinominare i lunghi incorporati e simili.
La procedura per garantire che un indizio corrisponda al frammento di codice corrispondente è:
- Concatena l'intestazione, lo snippet e il piè di pagina:
[header][snippet][footer]
. - Esegui questo come un normale programma (indipendentemente dalle esecuzioni precedenti) e guarda cosa è stato stampato su stdout.
- Se questo corrisponde all'indizio, lo snippet è una soluzione valida.
Per semplicità puoi usare solo ASCII stampabile (codici esadecimali da 20 a 7E). Solo l'intestazione e il piè di pagina possono contenere schede e righe.
Note aggiuntive
- Per ogni frammento, la corsa
[header][snippet][footer]
non dovrebbe richiedere più di un minuto su un computer moderno decente . - Devi specificare il tuo linguaggio di programmazione (e versione).
- Non è possibile utilizzare alcun algoritmo di hashing comune.
- Non è possibile utilizzare librerie esterne.
- Tutto nel tuo codice deve essere deterministico, invariante nel tempo e non necessita di una connessione di rete.
#
e_
può verificarsi in frammenti (o altrove).- Potresti rivelare alcuni dei caratteri nel cruciverba come ha fatto COTO . Contano ancora come luci. I ladri non sono tenuti a usarli, sono solo dei bei suggerimenti.
Esempio
Un semplice esempio utilizzando Python 3. Intestazione: p=print;t=5;
. Nessun piè di pagina.
Griglia non risolta:
##########
1___2___##
_###_#####
_###_#####
_###_#####
####_#####
####_#####
###3______
####_#####
####_#####
indizi:
ACROSS
1: 8
3: A!
DOWN
1: 7
2: 10
Soluzione valida:
##########
print(8)##
(###+#####
7###=#####
)###5#####
####;#####
####p#####
###p('A!')
####t#####
####)#####
Ladri (risolutori)
Il tuo compito è risolvere i cruciverba pubblicati dagli sbirri. È necessario utilizzare lo stesso linguaggio di programmazione esatto in cui è stato fornito il cruciverba, ma in caso contrario è valida qualsiasi soluzione che corrisponda a tutti gli indizi.
È possibile che non si risolvano i propri cruciverba e si può tentare di rispondere a ciascuno degli altri cruciverba solo una volta.
Ricorda di pubblicare le tue soluzioni nella domanda associata .
punteggio
Se un cruciverba viene risolto entro 72 ore non è più in esecuzione. Una volta che un cruciverba è rimasto irrisolto per 72 ore, viene considerato immune e il creatore può pubblicare la soluzione (modificando il proprio post e contrassegnandolo come immune).
Il poliziotto vincente è l'utente che ha inviato il cruciverba immune con il minor numero di dark ( #
). In caso di parità vince la proposta più votata. La soluzione deve essere inviata affinché la risposta sia accettata.
Il ladro vincente è l'utente che risolve il maggior numero di parole crociate. Il tie-breaker è la somma dei loro voti positivi nella domanda sul compagno .
sha512sum <<<"
piè di pagina: "|head -c10
(in Bash).