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.
fonte
[]+.
, mas acho que pode ser impossível. Alguém quer tentar?Respostas:
JavaScript, código de 1443 bytes, saída de 3 bytes, quebrado por momentos por @ShieruAsakoto
Tabuleiro de código, 3 linhas por 4 colunas
Placa de saída, 1 linha por 2 colunas
Meio óbvio qual é o resultado.
Será o código divertido de decifrar.Esqueci de mencionar que ele pretendia ser um programa completo (e meio que implicava que não era; veja o parágrafo abaixo). Para o verdadeiro desafio, veja minha outra resposta .Eu não acho que este seja o Node.js, mas meu conhecimento nesta área é zero. O que posso dizer é que ele é executado no meu console no Edge e no Chrome.
fonte
NaN
JavaScript (Node.js), código 53 bytes, saída 41 bytes, quebrado por Arnauld
Placa de código: 3 linhas por 6 colunas:
Placa de saída: 4 linhas por 6 colunas:
Dica: o código funciona apenas nos mecanismos V8 JS, versão 6.7 ou posterior
O meu estava
console.log(1n+1n+1n<<(1n+1n+1n+1n<<1n+1n+1n+1n+1n));
com o ponto-e-vírgula (não pergunte o porquê) e a saída é sim,3 * 2**128
com um finaln
marcando o número como um literal BigInt.fonte
console.log
, eu vou ser tão impressionadoconsole
não está disponível, exceto no início, nenhuma atribuição, nenhuma literal de string, sem colchetes (portanto, nenhuma matriz literal nem indexação). Eu até chequeiconsole
as propriedades globais e dos nós do nó , mas nada se encaixa lá.JavaScript (Node.js), código 88 bytes, saída 2 bytes, quebrado por Arnauld com um byte de 27 bytes
Placa de código: 7 linhas por 9 colunas:
Placa de saída: 1 linha por 2 colunas:
A saída é óbvia, mas o código não é. ;)
Minha resposta original foi um teste LL de M 127 , que foi
A resposta de Arnauld utilizou o ponto-e-vírgula para preencher uma fenda mais curta, e eu não esperava (ou percebi) a
s%=s
parte:Ah, a propósito, meus 3 posts não têm absolutamente nada a ver com funções de hash, PRNGs ou criptografia. Juro que esses três são apenas sobre manipulação de números.
existem bytes não utilizados na placa de código
fonte
MathGolf, código 42 bytes, saída 22 bytes
Code Board: 3 linhas por 7 colunas
Placa de saída: 3 linhas por 6 colunas:
Isso é um pouco mais longo, mas darei uma pequena dica: o quadro de códigos deve se parecer com uma gravata borboleta e você pode precisar "amarrá-la" várias vezes.
fonte
JavaScript, código de 1443 bytes, saída de 3 bytes, quebrado por @Bubbler
Um programa completo.
Tabuleiro de código, 3 linhas por 4 colunas
Placa de saída, 1 linha por 2 colunas
Meio óbvio qual é o resultado. Será o código divertido de decifrar.
Eu não acho que este seja o Node.js, mas meu conhecimento nesta área é zero. O que posso dizer é que ele roda no Edge e no Chrome. Por "programa completo", quero dizer que ele é executado quando colocado entre
<script>
e</script>
em um arquivo HTML.fonte
Python 3, código 56 bytes, saída 69 bytes, SAFE
Placa de código: 4 linhas por 10 colunas:
Placa de saída: 7 linhas por 7 colunas:
Muito difícil do que o meu primeiro desafio;)
Código e saída esperados:
fonte
10^lots
).l=lambda a,b:+l(a-1,a*b)if a else b;print(l(11,1))
... Mas não consigo encontrar um.MathGolf, código 7 bytes, saída 12 bytes
Apenas um primeiro desafio fácil, se você quiser entrar no MathGolf!
Placa de código: 2 linhas por 4 colunas
Placa de saída: 2 linhas por 3 colunas
fonte
Geléia, código de 17 bytes, saída de 19 bytes
O método geral não deve ser muito difícil de entender.
Placa de código
Placa de saída
fonte
J (REPL), código 9 bytes, saída 10000 bytes
Placa de código: 3 linhas, 3 colunas
Placa de saída: 3 linhas, 2 colunas, como valores de bytes
Em essência,
\n\n
/01
/<space><don't use>
.A solução pretendida fornece uma saída de 20008 bytes.
fonte