O desafio é simplesmente; produz as seis seguintes matrizes inteiras 2D:
[[ 1, 11, 21, 31, 41, 51],
[ 3, 13, 23, 33, 43, 53],
[ 5, 15, 25, 35, 45, 55],
[ 7, 17, 27, 37, 47, 57],
[ 9, 19, 29, 39, 49, 59]]
[[ 2, 11, 22, 31, 42, 51],
[ 3, 14, 23, 34, 43, 54],
[ 6, 15, 26, 35, 46, 55],
[ 7, 18, 27, 38, 47, 58],
[10, 19, 30, 39, 50, 59]]
[[ 4, 13, 22, 31, 44, 53],
[ 5, 14, 23, 36, 45, 54],
[ 6, 15, 28, 37, 46, 55],
[ 7, 20, 29, 38, 47, 60],
[12, 21, 30, 39, 52]]
[[ 8, 13, 26, 31, 44, 57],
[ 9, 14, 27, 40, 45, 58],
[10, 15, 28, 41, 46, 59],
[11, 24, 29, 42, 47, 60],
[12, 25, 30, 43, 56]]
[[16, 21, 26, 31, 52, 57],
[17, 22, 27, 48, 53, 58],
[18, 23, 28, 49, 54, 59],
[19, 24, 29, 50, 55, 60],
[20, 25, 30, 51, 56]]
[[32, 37, 42, 47, 52, 57],
[33, 38, 43, 48, 53, 58],
[34, 39, 44, 49, 54, 59],
[35, 40, 45, 50, 55, 60],
[36, 41, 46, 51, 56]]
O que são essas matrizes inteiras 2D? Estes são os números usados em um truque de mágica com cartões contendo estes números:
O truque de mágica pede que alguém pense em um número no intervalo [1, 60] e dê a quem executa o truque de mágica todas as cartas que contêm esse número. O jogador que executa o truque de mágica pode somar os números do canto superior esquerdo (com potência de 2) das cartas dadas para chegar ao número em que a pessoa estava pensando. Algumas explicações adicionais sobre por que isso funciona podem ser encontradas aqui.
Regras do desafio:
- Você pode gerar as seis matrizes inteiras 2D em qualquer formato razoável. Pode ser impresso com delimitadores; pode ser uma matriz inteira 3D contendo as seis matrizes inteiras 2D; pode ser uma lista de linhas de linhas; etc.
- Você pode preencher a posição inferior direita dos últimos quatro cartões com um valor negativo no intervalo
[-60, -1]
ou no caractere, em'*'
vez de deixá-lo de fora para criar matrizes retangulares de matrizes inteiras 2D (não, não é permitido preenchê-las com0
ou sem -integer comonull
/undefined
como alternativa, com a exceção de*
que uma estrela também é usada nas cartas reais). - A ordem dos números nas matrizes é obrigatória. Embora não importe para o truque de mágica física, vejo esse desafio principalmente como uma matriz - complexidade de kolmogorov , daí a restrição de ordem.
A ordem das matrizes na lista de saída pode estar em qualquer ordem, pois fica claro no cartão superior esquerdo qual matriz é qual.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
code-golf
number
kolmogorov-complexity
matrix
Kevin Cruijssen
fonte
fonte
n
aparecer nak
'ª carta'; onde meu desafio é um Desafio KC para produzir as seis matrizes.)[ascii-art]
desafio com regras de saída estritas (MD5), onde as minhas são muito flexíveis (e as linhas / colunas são trocadas e o intervalo é, em[1,60]
vez de[1,63]
; diferenças muito pequenas, mas ainda assim).Respostas:
MATL ,
1211 bytes-1 byte graças ao próprio mestre :)
Explicação:
Experimente online!
fonte
Perl 6 ,
6346 bytesExperimente online!
Produz como matrizes 2D em várias linhas, com a última matriz de cada uma cortada, se necessário.
fonte
Python 2 , 76 bytes
Experimente online!
O método aqui é criar uma lista de todos os números possíveis
r(61)
e depois reduzi-los à lista de números de um cartãoi&2**k
.Em seguida, usando o fatiamento de lista, a lista de números 1D é reorganizada no tamanho de cartão 6x5 correto
[card nums][j::5]for j in r(5)
.Então, este gerador é repetido apenas para 6 cartões
for k in r(6)
.Embora eu não tenha encontrado soluções com menos de 76 bytes, aqui estão outras duas que também têm 76 bytes:
Experimente online!
Este próximo é inspirado em Jonathan Allan .
Experimente online!
Quaisquer comentários são muito apreciados.
fonte
Carvão , 26 bytes
Experimente online! Link é a versão detalhada do código. Tentei calcular as entradas diretamente, mas isso já tinha 27 bytes antes de ajustar para o
*
no canto inferior direito. Produz cada linha unida com espaços e uma linha em branco entre os cartões. Explicação:fonte
*
por diversão depois de ver as estrelas nas cartas reais. Estava imaginando se haveria algum idioma para usá-lo, mas fico feliz em ver pelo menos um. :) Boa resposta!*
é pelo menos tão curta quanto qualquer outra coisa.05AB1E , 16 bytes
Experimente online!
Explicação
05AB1E , 17 bytes
Experimente online!
Explicação
fonte
Casca , 13 bytes
Experimente online!
Explicação
fonte
Python 2 ,
82807874 bytesExperimente online!
-4 bytes, graças a Jonathan Allan
fonte
iter
palavra-chave é redundante aqui, pois um gerador também fará o trabalho .Japonês , 14 bytes
Tente
fonte
JavaScript (ES6),
9088 bytesExperimente online!
Comentado
fonte
Python 2 , 73 bytes
Inspiração tirada do TFeld e do Matt .
Experimente online!
fonte
C (gcc) , 95 bytes
Experimente online!
Retorna as matrizes como uma matriz int 3D em o.
As últimas 4 matrizes têm -1 como seu último valor.
Economizou 2 bytes graças a Kevin Cruijssen.
Economizou
78 bytes graças a Arnauld.fonte
o[i][4][5]=-1;for(j=k=0;
para,for(o[i][4][5]=-1,j=k=0;
para que os colchetes possam ser removidos. Resposta agradável btw, +1 de mim.#include
para mostrar que ele funciona sem eleCJam (18 bytes)
Demonstração online . Este é um programa completo com saída para stdout.
Dissecação
fonte
Gelatina , 13 bytes
Um link niládico que gera uma lista de (6) listas de listas de números inteiros. (Ele gera a opção padrão de não ter
*
ou nenhum preenchimento negativo.)Experimente online!
Quão?
Muitos 15s sem perceber o truque "mínimo de comprimento quando dividido em cinco":
... e, enquanto tentava achar menor, consegui outros 13 sem precisar do truque:
fonte
Wolfram Language (Mathematica) , 88 bytes
fonte
Transpose@Partition[#~Append~-1,5]&/@Last@Reap[Do[Sow[k,k~NumberExpand~2],{k,60}],Except@0]
~
truque em mais um lugar e substituí a variávelk
porNull
. Desculpe, não há tempo para adicionar um link de tio.Wolfram Language (Mathematica) , 99 bytes
Experimente online!
fonte
Transpose@
vez deTranspose[...]
; preenchendo 30 entradas antes da partição; usandoTable[...,{k,6}]
para evitar a necessidadek=#
.Transpose@
funciona depois que você se muda paraPadRight
dentroPartition
. Outro comentário é que a pergunta parece não permitir""
o espaço reservado; você pode substituí-lo-1
sem perder nenhum byte.Gelatina , 13 bytes
Experimente online!
Basicamente baseado na resposta MATL da flawr . Um link niládico que gera uma lista de listas conforme necessário.
fonte
R , 73 bytes
Não tenho certeza absoluta de que atendi ao requisito de ordem, já que R, por padrão, preenche matrizes por coluna. Portanto, a ordem em que aparece fisicamente nos cartões é a mesma que a maneira como as matrizes são alocadas em R.
Experimente online!
fonte
T-SQL, (
1.1681.139 bytes)Eu só queria saber que eu poderia fazer isso.
Versão otimizada
Demonstração online
Experimente online!
Versão detalhada - com notas como comentários SQL
Voila!
Nota 1: Parte da lógica se refere à renderização de colchetes e vírgulas.
Nota 2: As versões mais recentes do SQLServer têm abordagens mais compactas para criar listas delimitadas por vírgulas. (Isso foi criado no SQL Server 2016.)
Nota 3: As matrizes para um determinado cartão não são classificadas (o que é aceitável de acordo com as especificações). Os números em uma matriz são classificados corretamente. Nesse caso, cada "cartão" da pergunta renderiza suas matrizes em uma linha separada nos resultados.
Matrizes mais curtas para codificar?
Sim.
Byte me.
fonte
C # (compilador interativo do Visual C #) , 112 bytes
Experimente online!
fonte
Vermelho ,
108107 bytesExperimente online!
fonte
APL + WIN,
6562 bytesExperimente online! Cortesia de Dyalog Classic
fonte
MATLAB, 155 bytes
Isso poderia ser mais curto como várias linhas, mas eu queria fazê-lo em uma linha de código.
fonte
05AB1E , 14 bytes
Experimente online!
fonte
žO
invés de apenas6L
? Sei que você não os está usando no seu mapa, mas estou curioso para saber por que vocêaeiouy
criou uma lista com 6 valores. xD Boa resposta, btw!6L
,6и
,5Ý
,5°
, ou9!
.тœ
,₅œ
,₁œ
, também trabalho, aqueles são muito legal também (:₆b
funcionaria também;)