A versão russa da tarefa pode ser encontrada no repositório.
Carregando nível 2…
Hall de carregamento…
Você esteve recentemente em um salão semelhante. Ou foi há muito tempo? É difícil dizer. Tudo ficou confuso. Mais uma vez, você pode ouvir vozes do canto mais distante do salão. Isso significa que você não está sozinho novamente. Hoje o salão está iluminado e em perfeita ordem. Variedade é boa.
De repente, você ouve uma voz clara e perfeitamente audível dos alto -falantes:
Olá.
Deixe -me apresentar -me. Eu sou o módulo contemplativo e analisando, M-53. Por razões desconhecidas, eu me encontrei neste salão bastante chato. É uma grande responsabilidade e outras coisas, mas não há nada a contemplar aqui.
Quando estava sendo desenvolvido, aprendi com um certo artigo divertido, entre outros materiais. Sua cópia em papel está na caixa A1B18. Sim, bem aqui. Eu tenho um pequeno pedido para você: desenvolva o jogo da vida a partir do artigo; Felizmente, isso vai me divertir um pouco. E vá em paz. Os gráficos podem ser super simples: tenho a mente muito aberta. Os pseudo-graphics no terminal ficarão bem. Seria ótimo se fosse possível inicializar um estado usando uma matriz e contemplar. Também é uma boa idéia preparar pelo menos 5 inicializações originais com estados a partir do conjunto clássico (figuras estáveis, methuselahs, figuras periódicas, figuras em movimento, armas, trens de soprador, comedores, refletores, criadores etc.).
Estou ansioso para ver o que você inventa!
Obrigado.
== missão recebida. Desenvolva um programa SRC/Game_of_life.c em C - uma visualização do jogo da vida. Para exibir os gráficos, use apenas caracteres ASCII (com saída no terminal). Você precisa implementar a versão interativa do jogo da vida. Crie também a opção para ajustar a velocidade do "jogo". ==
Trate o campo de jogo - um retângulo de 80 por 25 células - como uma matriz do estado do "jogo". Supõe -se que o campo esteja "fechado para si", por exemplo, no quadrado inferior direito, o vizinho à direita é o quadrado inferior esquerdo, e o vizinho na parte inferior é o canto superior direito. Prevê a inicialização original do estado "Game" via Stdin. Prepare pelo menos 5 arquivos com estados iniciais para lançamento rápido e inicialização por meio de redirecionamento de entrada.
O jogo deve ser escrito em C, ter um estilo estruturado e fugir do terminal;
Seu código -fonte será testado pelo Analisador estático cppcheck
, bem como pelo estilo Linter cpplint
.
Instruções sobre como executar esses testes no seu computador estão na pasta materials
.
Não use funções complicadas, limite -as até 40 linhas (excluindo main
).
Verifique seu programa para vazamentos de memória!
Ao desenvolver o jogo, siga os princípios da programação estruturada de E. dijkstra.
CARREGANDO...
O jogo da vida, também conhecido simplesmente como vida, é um autômato celular criado pelo matemático britânico John Horton Conway em 1970. É um jogo de jogador zero, o que significa que sua evolução é determinada por seu estado inicial, que não exige mais informações. Um interage com o jogo da vida criando uma configuração inicial e observando como ele evolui. É completo e pode simular um construtor universal ou qualquer outra máquina de Turing.
O universo do jogo da vida é uma grade ortogonal infinita e bidimensional de células quadradas, cada uma delas em um dos dois estados possíveis, vivos ou mortos, (ou povoados e desprovidos, respectivamente). Toda célula interage com seus oito vizinhos, que são as células que são horizontalmente, verticalmente ou diagonalmente adjacentes. A cada passo no tempo, ocorrem as seguintes transições:
Qualquer célula viva com menos de dois vizinhos vivos morre, como se por subpopulação. Qualquer célula viva com dois ou três vizinhos vivos vive para a próxima geração. Qualquer célula viva com mais de três vizinhos vivos morre, como se por superpopulação. Qualquer célula morta com exatamente três vizinhos vivos se torna uma célula viva, como se por reprodução. Essas regras, que comparam o comportamento do autômato à vida real, podem ser condensadas no seguinte:
Qualquer célula viva com dois ou três vizinhos vivos sobrevive. Qualquer célula morta com três vizinhos vivos se torna uma célula viva. Todas as outras células vivas morrem na próxima geração. Da mesma forma, todas as outras células mortas permanecem mortas. O padrão inicial constitui a semente do sistema. A primeira geração é criada aplicando as regras acima simultaneamente a todas as células da semente; Nascimentos e mortes ocorrem simultaneamente, e o momento discreto em que isso acontece às vezes é chamado de carrapato. Cada geração é uma função pura do anterior. As regras continuam sendo aplicadas repetidamente para criar outras gerações.
No final de 1940, John von Neumann definiu a vida como uma criação (como um ser ou organismo) que pode se reproduzir e simular uma máquina de Turing. Von Neumann estava pensando em uma solução de engenharia que usaria componentes eletromagnéticos flutuando aleatoriamente em líquido ou gás. Isso não foi realista com a tecnologia disponível na época. Stanislaw ULAM inventou autômatos celulares, que pretendiam simular construções eletromagnéticas teóricas de Von Neumann. ULAM discutiu o uso de computadores para simular seus autômatos celulares em uma treliça bidimensional em vários trabalhos. Paralelamente, von Neumann tentou construir o autômato celular da ULAM. Embora bem -sucedido, ele estava ocupado com outros projetos e deixou alguns detalhes inacabados. Sua construção foi complicada porque tentou simular seu próprio design de engenharia. Com o tempo, construções de vida mais simples foram fornecidas por outros pesquisadores e publicadas em artigos e livros.
Motivado por perguntas na lógica matemática e, em parte, trabalha em jogos de simulação por ULAM, entre outros, John Conway começou a fazer experimentos em 1968 com uma variedade de diferentes regras de autômato celular bidimensional. autômato. Por exemplo, ele queria que algumas configurações durassem muito tempo antes de morrer e outras configurações continuassem para sempre sem permitir ciclos. Foi um desafio significativo e um problema aberto por anos antes que especialistas em autômatos celulares conseguissem provar que, de fato, o jogo da vida admitiu uma configuração que estava viva no sentido de satisfazer os dois requisitos gerais de von Neumann. Embora as definições antes do jogo da vida fossem orientadas à prova, a construção de Conway destinava-se à simplicidade sem a priori provas de que o autômato estava vivo.
Conway escolheu suas regras com cuidado, após considerável experimentação, para atender a esses critérios:
Não deve haver crescimento explosivo. Deve haver pequenos padrões iniciais com resultados caóticos e imprevisíveis. Deve haver potencial para os construtores universais de von Neumann. As regras devem ser o mais simples possível, enquanto aderem às restrições acima. O jogo fez sua primeira aparição pública na edição de outubro de 1970 da Scientific American, na coluna "Jogos Matemáticos" de Martin Gardner. Teoricamente, o jogo da vida tem o poder de uma máquina universal de Turing: qualquer coisa que possa ser calculada algoritmicamente pode ser calculada no jogo da vida. Gardner escreveu: "Devido às analogias da vida com a ascensão, queda e alterações de uma sociedade de organismos vivos, pertence a uma classe crescente do que é chamado de 'jogos de simulação' (jogos que se assemelham aos processos da vida real)".
Desde sua publicação, o jogo da vida atraiu muito interesse por causa das maneiras surpreendentes pelas quais os padrões podem evoluir. Fornece um exemplo de emergência e auto-organização. Estudiosos em vários campos, como ciência da computação, física, biologia, bioquímica, economia, matemática, filosofia e ciências generativas, fizeram uso da maneira como os padrões complexos podem emergir da implementação das regras simples do jogo. O jogo também pode servir como uma analogia didática, usada para transmitir a noção um tanto contra-intuitiva de que o design e a organização podem surgir espontaneamente na ausência de um designer. Por exemplo, o cientista cognitivo Daniel Dennett usou a analogia do jogo da vida "universo" extensivamente para ilustrar a possível evolução de construções filosóficas complexas, como consciência e livre arbítrio, do conjunto relativamente simples de leis físicas determinísticas que podem governar nossa universo.
A popularidade do jogo da vida foi ajudada por surgir ao mesmo tempo que o acesso de computador cada vez mais barato. O jogo poderia ser executado por horas nessas máquinas, o que de outra forma teria permanecido sem uso à noite. A esse respeito, prenunciou a popularidade posterior dos fractais gerados por computador. Para muitos, o jogo da vida foi simplesmente um desafio de programação: uma maneira divertida de usar ciclos de CPU desperdiçados. Para alguns, no entanto, o jogo da vida teve mais conotações filosóficas. Desenvolveu um culto a seguir na década de 1970 e além; Os desenvolvimentos atuais chegaram ao ponto de criar emulações teóricas de sistemas de computador dentro dos limites de um jogo de jogo.
CARREGANDO...