Código e Saída Modificados para Boggle: CnR Edition (Cops)

8

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, ORANGEe WEARSsão palavras válidas, mas SURGEe RUSSIAnão são:

  • SURGE: Não existe um par adjacente no tabuleiro RG.
  • RUSSIA: Snã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, onde me npode 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, ORANGEe WEARS, LANGUAGEtorna-se uma sequência válida (já que Gé usada duas vezes, mas não duas vezes seguidas), mas RUSSIAainda não é (devido ao SSpar).

Aqui está outro exemplo usando um fragmento de código. A string from itertools import*\npode 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 opara corresponder à oosequê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.
Bubbler
fonte
Só para garantir, os bytes de saída e de entrada podem ser reutilizados, mas não podem ser usados ​​duas vezes seguidas, certo?
Max05
@maxb Você está certo, exceto pelo código , não pela entrada (o código não pode receber entrada).
Bubbler #
Meu erro, eu quis dizer o código. Existe algum limite no comprimento da saída?
Max18
@maxb Sem limites, mas observe que seu programa deve terminar em 5 segundos.
Bubbler
Eu tenho tentado chegar a uma saída não trivial para brainfuck usando apenas []+., mas acho que pode ser impossível. Alguém quer tentar?
Jo rei

Respostas:

3

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

aN

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.

Khuldraeseth na'Barya
fonte
1
O que o JSF ** k! lmao, e eu aposto que a saída éNaN
Shieru Asakoto 05/10
@ShieruAsakoto Você teve um crack válido. Vou reverter isso para o estado original e você pode recuperar sua resposta. Vou reenviar com esclarecimentos.
Khuldraeseth na'Barya 5/1018
fiz revertendo;) codegolf.stackexchange.com/a/173396/71546
Shieru Asakoto 5/18
3

JavaScript (Node.js), código 53 bytes, saída 41 bytes, quebrado por Arnauld

Placa de código: 3 linhas por 6 colunas:

cog(n)
lsn1()
e.+<<;

Placa de saída: 4 linhas por 6 colunas:

481534
270906
602148
53829n

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**128com um final nmarcando o número como um literal BigInt.

Shieru Asakoto
fonte
2
Se isso não começar com console.log, eu vou ser tão impressionado
Quintec
2
Somente um número não pode ser impresso com 41 dígitos. Deve haver uma maneira de converter para uma string, mas ... consolenã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é chequei consoleas propriedades globais e dos nós do nó , mas nada se encaixa lá.
Bubbler
Cracked
Arnauld 5/18
2

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:

e.i--)=%5
lc;,2s*17
fosn8407%
gnr785138
s(;527067
=);s%1419
4n,i=1832

Placa de saída: 1 linha por 2 colunas:

0n

A saída é óbvia, mas o código não é. ;)

Minha resposta original foi um teste LL de M 127 , que foi

for(s=4n,i=125;i;s%=170141183460469231731687303715884105727n,i--)s=s*s-2n;console.log(s)

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%=sparte:

s=4n;s%=s;7n;console.log(s)

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

Shieru Asakoto
fonte
Cracked
Arnauld 5/18
1

MathGolf, código 42 bytes, saída 22 bytes

Code Board: 3 linhas por 7 colunas

 r5 qÄ 
~←▲↔▼→~
 Äq 5r 

Placa de saída: 3 linhas por 6 colunas:

421
402
135

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.

maxb
fonte
1

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

aN

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.

Khuldraeseth na'Barya
fonte
Isso não é idêntico ao seu outro post JS?
Shaggy
@ Shaggy O primeiro estava faltando a menção completa do programa e foi quebrado como REPL.
Arnauld
1

Python 3, código 56 bytes, saída 69 bytes, SAFE

Placa de código: 4 linhas por 10 colunas:

  print(1,
b; f,)*l(1
 =lamb+a,)
ese d:(-1)

Placa de saída: 7 linhas por 7 colunas:

1466900
3427430
1304212
9653895
0511633
5680228
4437679

Muito difícil do que o meu primeiro desafio;)

Código e saída esperados:

Código:

l=lambda a,b:(a+b)*l(a-1,a*b)if a else b;print(l(11,11))

Resultado:

421827435070654423113161304555505960246647934329322186026783332352000
Shieru Asakoto
fonte
Eu adoro como você não pode formar lambda xD #
585 Quintec
É possível reutilizar uma carta, mas não duas vezes diretamente seguidas. (Eu acho que tenho a forma deste aqui, mas é muito ajustável, e essa saída pode ser qualquer coisa ... Encontrei um programa de 56 bytes com saída de 69 bytes, mas não está na placa Boggle.)
Lynn
OK, acabei de perceber que a saída pode ser mais longa, o que muda as coisas. Mas ainda não vejo uma maneira de "enganá-lo" (aposto que há alguma maneira de produzir isso 10^lots).
Lynn
1
Aposto que deve parecer l=lambda a,b:+l(a-1,a*b)if a else b;print(l(11,1))... Mas não consigo encontrar um.
tsh
0

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

╒Æ■r
îm4~

Placa de saída: 2 linhas por 3 colunas

140
412
maxb
fonte
0

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

»V
”;
“;

Placa de saída

Krgwn
Ubots
RAbbt
dylnan
fonte
0

J (REPL), código 9 bytes, saída 10000 bytes

Placa de código: 3 linhas, 3 colunas

epi
j.r
oI5

Placa de saída: 3 linhas, 2 colunas, como valores de bytes

10  10
48  49
32  255

Em essência, \n\n/ 01/ <space><don't use>.

A solução pretendida fornece uma saída de 20008 bytes.

Bubbler
fonte