Criar um programa determinista para jogar n d tic-tac-toe com os outros concorrentes.
Seu programa deve funcionar quando n(largura) e d(número da dimensão) estiverem nestes intervalos:
n∈[3,∞)∩ℕ ie a natural number greater than 2
d∈[2,∞)∩ℕ ie a natural number greater than 1
n = 3; d = 2(3 2 ou seja, 3 por 3):
[][][]
[][][]
[][][]
n = 3; d = 3(3 3 ou seja, 3 por 3 por 3):
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
n = 6; d = 2(6 2 ou seja, 6 por 6):
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
E assim por diante.
Entrada:
A entrada será para STDIN. A primeira linha de entrada será dois números ne dno formato n,d.
Depois disso, haverá uma linha composta por coordenadas, especificando os movimentos que foram feitos. Coordenadas serão listados no formulário: 1,1;2,2;3,3. O canto superior esquerdo é a origem (0,0 para 2D). No caso geral, essa lista será como 1,2,...,1,4;4,0,...,6,0;...onde o primeiro número representa esquerda-direita, a segunda cima-baixo, a terceira até a terceira dimensão, etc. Observe que a primeira coordenada é Xa primeira volta, a segunda é Oa primeira vez, ....
Se este for o primeiro movimento, a entrada será um número seguido por 1 linha em branco.
Por consistência, a entrada sempre terminará com uma nova linha. Entrada de amostra (\ n é nova linha):
10,10\n0,0,0,0,0,0,0,0,0,0;0,2,3,4,5,6,7,8,9,0;0,1,2,3,4,5,6,7,8,9\n
Para o primeiro movimento:
10,10\n\n
onde \nestá o caractere de nova linha.
Resultado:
Envie a movimentação que você deseja fazer no mesmo formato que a entrada (uma lista separada por vírgula). Uma jogada inválida (isto é, uma que já foi realizada) resultará em uma perda para o jogo.
Nota: Você pode usar um gerador de números aleatórios, desde que o propague com um valor tal que cada execução seja idêntica, nas mesmas condições. Em outras palavras, o programa deve ser determinístico.
Nota: somente movimentos válidos são permitidos.
Jogos Vencedores (Se você já jogou o suficiente jogo da velha multidimensional, é o mesmo.)
Para que haja uma vitória, um jogador deve ter todos os quadrados adjacentes ao longo de uma linha. Ou seja, esse jogador deve ter nmovimentos em uma linha para ser um vencedor.
Adjacente:
- cada peça é um ponto; por exemplo (0,0,0,0,0) é um ponto em
d=5 - peças adjacentes são peças tais que são os dois pontos na mesma unidade d-cubo. Em outras palavras, a distância Chebyshev entre os blocos é 1.
- em outras palavras, se um ponto
pé adjacente a um pontoq, então todas as coordenadas emps coordenadas correspondentesqdiferem dele em não mais que um. Além disso, pelo menos no par de coordenadas difere em exatamente um.
Linhas:
- As linhas são definidas por vetores e um bloco. Uma linha é cada bloco atingido pela equação:
p0 + t<some vector with the same number of coordinates as p0>
Simulação e condições vencedoras:
Indique na sua resposta se está pronto para a classificação. Ou seja, indique claramente se sua resposta foi feita ou não.
Se sua resposta estiver marcada como concluída, ela não será classificada até pelo menos 24 horas após a última edição do código.
Os programas devem funcionar offline. Se um programa for trapaceado, ele receberá automaticamente uma pontuação de
-1e não será mais pontuado. (Como alguém terminaria trapaceando com seus programas?)Se o seu programa produzir saída inválida, será imediatamente contada como uma perda para o jogo
Se você programar uma falha na produção após 1 minuto, será imediatamente contabilizado como uma perda para o jogo. Se necessário, otimize a velocidade. Não quero esperar uma hora para testar um programa fora de outro.
Cada programa será executado contra os outros programas duas vezes para cada um
nno intervalo[3,6]e cada umdno intervalo[2,5], uma vezXe uma vez comoO. Esta é uma rodada.Para cada jogo que um programa vence, ele atinge
+3sua pontuação. Se o programa empatou (1 vitória e 1 derrota em uma única rodada ou empata nos dois jogos), então+1. Se o programa for perdido, será exibido+0(ou seja, nenhuma alteração).O programa com a pontuação mais alta vence. Se houver empate, o programa com o menor número de jogos perdidos (fora dos competidores empatados) vence.
Nota: Dependendo do número de respostas, posso precisar de ajuda para executar os testes.
Boa sorte! E que as simulações sejam sempre a seu favor!