Order and Chaos é uma variante de Tic-Tac-Toe jogada em um tabuleiro 6x6. O que torna o jogo único, no entanto, é que ambos os jogadores podem colocar um X ou um O! Cada turno (começando com Ordem), um jogador coloca um X ou O em qualquer quadrado desocupado.
Ganhar é simples. A ordem ganha se houver 5 Xs ou Os (vertical, horizontal ou diagonal) seguidos no quadro. O caos vence se o tabuleiro estiver cheio e não houver 5 Xs ou Os no tabuleiro. Seu emprego? Bem, como se trata de Programação de quebra-cabeças e código de golfe, você vai programar o jogo e jogar golfe.
As regras
- Você deve aceitar a entrada como
x y t
, ondex
ey
são coordenadas et
é o tipo de bloco (X
ouO
). As coordenadas começam com0 0
no canto superior esquerdo e aumentam até5 5
(o canto inferior direito). - Você deve aceitar
q
sair e imprimirINVALID
se o usuário digitar coordenadas inválidas, blocos, qualquer entrada que não esteja na forma dex y t
ou tentar colocar um bloco onde já houver um. (A única exceção é queq
, ao sair do programa). - Se o pedido vencer, você produzirá
P1 WINS
. Se o Caos vencer, você produziráP2 WINS
. - A ordem deve ir primeiro.
- Um espaço em branco é representado por
.
. - As peças são
X
eO
(maiúsculas). Você não precisa aceitar letras minúsculas, mas letras maiúsculas são necessárias. - Seu conselho deve consistir apenas em
.XO
. - Na verdade, você está simulando os dois jogadores que jogam o jogo, sem receber uma placa e verificando quem ganha. Ele aceita uma jogada como entrada, depois imprime o tabuleiro, aceita outra jogada e assim por diante, até que um jogador ganhe.
O quadro de partida é assim:
......
......
......
......
......
......
E após as entradas do primeiro player (Order) 1 2 X
, deve ficar assim:
......
......
.X....
......
......
......
Da mesma forma, quando o próximo player (Chaos) entrar 3 3 O
, ele ficará assim:
......
......
.X....
...O..
......
......
E isso continua até que um jogador vence.
Como sempre, são proibidas as brechas padrão que tiram a diversão de tudo .
O vencedor é aquele com o código mais curto em 15 de junho, 00:00 UTC (cerca de um mês após o lançamento deste desafio).
fonte
INVALID
. Eu editei isso agora, obrigado.Respostas:
PHP, 316
Aqui está a minha submissão. Ele deve ser executado pelo php na linha de comando.
Observe que esse código produz avisos devido a alguns atalhos que eu fiz. Deixe-me saber se está tudo bem. Eu posso consertá-lo adicionando mais alguns caracteres. Verifiquei esta página e a resposta principal diz que o relatório de erros está desativado se não houver menção a ele.
E aqui está a versão un-golfed do código:
fonte
JavaScript, 360
Editar jogo interativo modificado, deve rodar mesmo no MSIE
Conforme solicitado, jogo baseado em texto, entrada via pop-up, saída no console (para ter uma fonte monoespaçada).
Saia do jogo com 'q' ou clique em 'cancelar' no prompt.
Não usando os recursos do ES5, ele deve ser executado em qualquer navegador moderado (onde você pode ter um painel do console JS)
Agora, uma versão interativa e gráfica mais divertida , execute o snippet para jogar.
Mostrar snippet de código
fonte
Java, 565 caracteres D:
Este é provavelmente o código de golfe mais longo de todos os tempos. Eu realmente não sou bom nisso.
fonte
Oitava, 453
A implementação é bastante direta, o único "truque" real a ser usado
format plus
para cuidar da impressão. Aqui está uma versão comentada:Devido ao requisito de verificar a sintaxe e a validade da entrada, o código usa
fread()
para ler um caractere de cada vez.Tomei o cuidado de exibir o quadro e as mensagens de maneira organizada. Se alguma saída extra for aceitável, eu poderia economizar alguns bytes. Por exemplo, usando a impressão automática (não
disp(F)
), o quadro seria mostrado comoTambém interpretei que cada movimento é dado em uma linha separada.
Exemplo de interação (a
-q
opção é apenas para suprimir o cabeçalho do Octave):A movimentação inválida causou a saída do programa (não tenho certeza se isso foi planejado).
fonte
x y t
em uma linha separada (e nenhuma outra entrada).