Aqui está um desafio de matriz bidimensional relativamente simples.
Imagine um campo de batalha de 625 soldados a pé. Você comanda as tropas ímpares , mas infelizmente a força das tropas pares o oprime. Felizmente, seus soldados têm um poder secreto: se o poder de cada tropa ímpar e dos aliados ímpares que os cercam é divisível por um número de poder secreto, eles desencadeiam seu ataque final e vencem! Você deve honrar cada soldado vitorioso.
Regras
Dada uma matriz inteira de 25 x 25 em que cada elemento contém o produto de sua posição x e y mais 1, retorne as coordenadas de cada elemento ímpar "vitorioso" que atenda aos seguintes critérios:
A soma do valor do elemento e seus elementos ímpares adjacentes (cima, baixo, esquerda e direita) são divisíveis pela entrada (número de potência secreto). Ele deve ter elementos adjacentes a ele nos quatro lados e não estar em uma aresta.
Os envios podem ser uma função ou um programa completo que requer uma única entrada. A saída pode estar em qualquer ordem.
Nossa matriz de 25 x 25, o campo de batalha, fica assim:
1, 1, 1, 1,...
1, 2, 3, 4,...
1, 3, 5, 7,...
1, 4, 7, 10,...
etc.
Exemplo
Aqui está um exemplo 3 x 3:
43, 57, 71
46, 61, 76
49, 65, 81
Para determinar se um elemento (61, no centro) vence, somamos os valores dele e os elementos ímpares adjacentes.
61 + 57 + 65 = 183
Se o total é divisível pela entrada, a posição x e y do elemento é impressa. Se nossa entrada for 3, porque 183 é divisível por 3, "1, 1" será impresso.
Resultado
Se a entrada (número de poder secreto) for 37, os elementos retornados (soldados vitoriosos a serem elogiados) devem ser:
2, 18
3, 12
4, 9
5, 22
6, 6
8, 23
9, 4
10, 11
11, 10
12, 3
18, 2
22, 5
23, 8
Se a entrada for 191, os elementos retornados deverão ser:
10, 19
19, 10
Uma entrada de 3:
1, 2
1, 4
1, 6
1, 8
1, 10
1, 12
1, 14
1, 16
1, 18
1, 20
1, 22
2, 1
2, 3
2, 4
2, 5
2, 7
2, 9
2, 10
2, 11
2, 13
2, 15
2, 16
2, 17
2, 19
2, 21
2, 22
2, 23
3, 2
3, 4
3, 6
3, 8
3, 10
3, 12
3, 14
3, 16
3, 18
3, 20
3, 22
4, 1
4, 2
4, 3
4, 5
4, 7
4, 8
4, 9
4, 11
4, 13
4, 14
4, 15
4, 17
4, 19
4, 20
4, 21
4, 23
5, 2
5, 4
5, 6
5, 8
5, 10
5, 12
5, 14
5, 16
5, 18
5, 20
5, 22
6, 1
6, 3
6, 5
6, 7
6, 9
6, 11
6, 13
6, 15
6, 17
6, 19
6, 21
6, 23
7, 2
7, 4
7, 6
7, 8
7, 10
7, 12
7, 14
7, 16
7, 18
7, 20
7, 22
8, 1
8, 3
8, 4
8, 5
8, 7
8, 9
8, 10
8, 11
8, 13
8, 15
8, 16
8, 17
8, 19
8, 21
8, 22
8, 23
9, 2
9, 4
9, 6
9, 8
9, 10
9, 12
9, 14
9, 16
9, 18
9, 20
9, 22
10, 1
10, 2
10, 3
10, 5
10, 7
10, 8
10, 9
10, 11
10, 13
10, 14
10, 15
10, 17
10, 19
10, 20
10, 21
10, 23
11, 2
11, 4
11, 6
11, 8
11, 10
11, 12
11, 14
11, 16
11, 18
11, 20
11, 22
12, 1
12, 3
12, 5
12, 7
12, 9
12, 11
12, 13
12, 15
12, 17
12, 19
12, 21
12, 23
13, 2
13, 4
13, 6
13, 8
13, 10
13, 12
13, 14
13, 16
13, 18
13, 20
13, 22
14, 1
14, 3
14, 4
14, 5
14, 7
14, 9
14, 10
14, 11
14, 13
14, 15
14, 16
14, 17
14, 19
14, 21
14, 22
14, 23
15, 2
15, 4
15, 6
15, 8
15, 10
15, 12
15, 14
15, 16
15, 18
15, 20
15, 22
16, 1
16, 2
16, 3
16, 5
16, 7
16, 8
16, 9
16, 11
16, 13
16, 14
16, 15
16, 17
16, 19
16, 20
16, 21
16, 23
17, 2
17, 4
17, 6
17, 8
17, 10
17, 12
17, 14
17, 16
17, 18
17, 20
17, 22
18, 1
18, 3
18, 5
18, 7
18, 9
18, 11
18, 13
18, 15
18, 17
18, 19
18, 21
18, 23
19, 2
19, 4
19, 6
19, 8
19, 10
19, 12
19, 14
19, 16
19, 18
19, 20
19, 22
20, 1
20, 3
20, 4
20, 5
20, 7
20, 9
20, 10
20, 11
20, 13
20, 15
20, 16
20, 17
20, 19
20, 21
20, 22
20, 23
21, 2
21, 4
21, 6
21, 8
21, 10
21, 12
21, 14
21, 16
21, 18
21, 20
21, 22
22, 1
22, 2
22, 3
22, 5
22, 7
22, 8
22, 9
22, 11
22, 13
22, 14
22, 15
22, 17
22, 19
22, 20
22, 21
22, 23
23, 2
23, 4
23, 6
23, 8
23, 10
23, 12
23, 14
23, 16
23, 18
23, 20
23, 22
Uma entrada de 5:
1, 4
1, 14
2, 2
2, 4
2, 6
2, 7
2, 8
2, 10
2, 12
2, 14
2, 16
2, 17
2, 18
2, 20
2, 22
3, 8
3, 18
4, 1
4, 2
4, 4
4, 6
4, 8
4, 10
4, 11
4, 12
4, 14
4, 16
4, 18
4, 20
4, 21
4, 22
6, 2
6, 4
6, 6
6, 8
6, 9
6, 10
6, 12
6, 14
6, 16
6, 18
6, 19
6, 20
6, 22
7, 2
7, 12
7, 22
8, 2
8, 3
8, 4
8, 6
8, 8
8, 10
8, 12
8, 13
8, 14
8, 16
8, 18
8, 20
8, 22
8, 23
9, 6
9, 16
10, 2
10, 4
10, 6
10, 8
10, 10
10, 12
10, 14
10, 16
10, 18
10, 20
10, 22
11, 4
11, 14
12, 2
12, 4
12, 6
12, 7
12, 8
12, 10
12, 12
12, 14
12, 16
12, 17
12, 18
12, 20
12, 22
13, 8
13, 18
14, 1
14, 2
14, 4
14, 6
14, 8
14, 10
14, 11
14, 12
14, 14
14, 16
14, 18
14, 20
14, 21
14, 22
16, 2
16, 4
16, 6
16, 8
16, 9
16, 10
16, 12
16, 14
16, 16
16, 18
16, 19
16, 20
16, 22
17, 2
17, 12
17, 22
18, 2
18, 3
18, 4
18, 6
18, 8
18, 10
18, 12
18, 13
18, 14
18, 16
18, 18
18, 20
18, 22
18, 23
19, 6
19, 16
20, 2
20, 4
20, 6
20, 8
20, 10
20, 12
20, 14
20, 16
20, 18
20, 20
20, 22
21, 4
21, 14
22, 2
22, 4
22, 6
22, 7
22, 8
22, 10
22, 12
22, 14
22, 16
22, 17
22, 18
22, 20
22, 22
23, 8
23, 18
Este é o code-golf , o código de contagem de bytes mais baixo sem usar brechas padrão é o vencedor.
Como esta é minha primeira submissão, qualquer conselho é muito apreciado. Obrigado!
fonte
Respostas:
JavaScript (ES6),
83 81 8076 bytesExperimente online!
Como?
Comentado
fonte
C # (compilador interativo do Visual C #) ,
97939190 bytesGuardado 6 bytes graças a @Kevin Cruijssen!
Experimente online!
fonte
int i=0; ... int j=0;
pode serint i=0,j; ... j=0;
e<1&
pode ser+
de -4 bytes.+
esse é bom, obrigado #((i+j)%2>0?3:5)
por(5-(i+j)%2*2)
Stax , 25 bytes
Execute e depure
Isso é principalmente força bruta, com uma observação marginalmente inteligente. Todas as tropas ímpares têm 2 ou 4 vizinhos ímpares. E a soma total destes, mais a solda original, é
3p
ou5p
ondep
está o poder do soldado. O coeficiente (3 ou 5) pode ser determinado porgcd(2, x, y) * 2 + 1)
ondex
ey
são as coordenadas do soldado.fonte
Python 2 , 83 bytes
Experimente online!
Agradecimentos a Arnauld por salvar um byte.
fonte
JavaScript (SpiderMonkey) , 69 bytes
Experimente online!
fonte
Gelatina , 22 bytes
Experimente online!
Um programa completo que usa um único argumento, o número do poder secreto e imprime implicitamente uma lista de
[x, y]
pares. Usa a observação que outros fizeram sobre múltiplos de 3 e 5.fonte
Wolfram Language (Mathematica) ,
6058 bytesExperimente online!
Olhei em volta depois de postar e percebi que realmente precisava ativar meu cérebro ...
fonte