Este é o tópico dos policiais. O tópico dos ladrões está aqui .
fundo
Boggle é um jogo de tabuleiro em que os jogadores precisam encontrar palavras em inglês em um tabuleiro 4 por 4 de alfabetos aleatórios. As palavras podem ser construídas selecionando células sequencialmente adjacentes no quadro. ("adjacente" significa horizontal, vertical ou diagonalmente adjacente.) Além disso, a mesma célula não pode ser usada mais de uma vez em uma palavra.
A seguir, é apresentado um quadro de exemplo:
I L A W
B N G E
I U A O
A S R L
Nesta placa, BINGO
, ORANGE
e WEARS
são palavras válidas, mas SURGE
e RUSSIA
não são:
SURGE
: Não existe um par adjacente no tabuleiroRG
.RUSSIA
:S
não pode ser usado duas vezes.
Boggle modificado é uma versão modificada do Boggle, com as seguintes regras:
- O tamanho da placa é
m
-by-n
, ondem
en
pode ser qualquer número inteiro positivo. - Cada célula pode conter qualquer byte entre 0 e 255, inclusive.
- Uma célula pode ser usada mais de uma vez, mas não duas vezes seguidas.
O uso do quadro de exemplo acima, além de BINGO
, ORANGE
e WEARS
, LANGUAGE
torna-se uma sequência válida (já que G
é usada duas vezes, mas não duas vezes seguidas), mas RUSSIA
ainda não é (devido ao SS
par).
Aqui está outro exemplo usando um fragmento de código. A string from itertools import*\n
pode ser encontrada no quadro a seguir, mas não from itertoosl import*
ou from itertools import *
:
f i ' ' s
r t m l
e o o p
\n * t r
Observe que você precisa de dois o
para corresponder à oo
sequência.
O desafio do policial
Escreva um programa completo no seu idioma de escolha que atenda às seguintes regras:
- O programa deve imprimir algo consistente em várias execuções.
- O programa deve terminar em aproximadamente 5 segundos.
- O programa pode não receber nenhuma entrada.
- O programa e a saída devem ter pelo menos 2 bytes.
- Qualquer coisa relacionada a funções de hash, PRNGs ou criptografia não é permitida.
Em seguida, organize seu programa e produza-o em duas placas modificadas separadas . Cada placa pode ser não quadrada. Observe que as placas 1 por N e 2 por N podem representar desafios especiais para o policial e o ladrão. Se você deseja que algumas células de uma placa sejam inutilizáveis (para adicionar mais restrições), escolha alguns bytes inúteis e preencha os buracos com elas.
Por exemplo, se você deseja uma grade 2x2 apenas com movimentos horizontais / verticais, pode fazer isso:
a b
c d
-----------
X a X
c X b
X d X
Em sua submissão, especifique o idioma que você usou, os comprimentos do código-fonte e da saída e as duas placas de erro. Observe que código mais curto e / ou saída mais longa são permitidos para os ladrões , portanto, você pode optar por dar espaço para a contagem de bytes (ou seja, especificar código mais longo e / ou saída mais curta que a sua solução real).
Se o seu quadro contiver alguns caracteres não imprimíveis, você poderá especificar o quadro como valores de bytes.
Depois de uma semana em que um policial é postado, ele pode ser marcado como seguro pelo pôster, se não estiver quebrado até então. O policial ainda está aberto para ladrões até que seja marcado como seguro. Um policial seguro não pode ser quebrado e o pôster deve revelar a solução pretendida.
Você deseja ofuscar as placas o máximo possível, pois o desafio do ladrão é quebrar sua submissão encontrando o código e sua saída nas placas. Se você deseja inserir um código longo em um quadro pequeno, as respostas para o desafio original do Modified Boggle podem fornecer algumas informações.
Pontuação para policiais
Como é difícil dizer se uma placa maior ou menor é mais difícil de decifrar, cada envio de policial seguro conta com uma pontuação de 1. O usuário com a maior pontuação vence. É incentivado a participar com diferentes idiomas e abordagens criativas.
Exemplo e formatação do policial
# Japt, code 9 bytes, output 20 bytes
Code board: 2 rows, 2 columns
`l
íÏ
As byte values:
96 108
237 207
Output board: 3 rows, 3 columns
175
120
643
Script de verificação Boggle modificado
Todos os scripts abaixo têm um exemplo de entrada.
Script para cadeia de caracteres (código / saída) e boggle. Isso não suporta seqüências de várias linhas. O formato de entrada é
- uma única linha de sequência (código ou saída), seguida por
- o tabuleiro cru de boggle.
Script para cadeia de caracteres com boggle de valor de byte. Use isso se a sequência de destino for imprimível, mas tiver uma ou mais novas linhas. O formato de entrada é
- o número de linhas para a sequência,
- sequência bruta (possivelmente com várias linhas) e, em seguida,
- o painel boggle como valores de bytes.
Script para string de valor de byte e boggle. Use isso se a sequência de destino contiver um ou mais caracteres não imprimíveis. O formato de entrada é
- uma única linha de sequência (código ou saída) como valores de bytes, seguida por
- o painel boggle como valores de bytes.
[]+.
, mas acho que pode ser impossível. Alguém quer tentar?