Dicas para jogar golfe no The Powder Toy

9

Divirta-se com este, The Powder Toy é um desafio interessante para o golfe, especialmente com a lógica do filt.

O que faz do TPT um desafio são as muitas e muitas maneiras de abordar um problema: Should I use Cellular Automaton rules, SWCH logic, Filt logic, subframe filt logic, and/or wall logic?

Como tal, um local para obter dicas para o golfe TPT seria bastante útil, por isso fiz essa pergunta.

Esse encadeamento provavelmente usará muitas abreviações. Muitos deles serão elementos do jogo, portanto, pesquisá-los no Wiki trará muitas informações sobre eles, como são.

Aqui estão os mais comuns que você provavelmente verá neste tópico, com a descrição do jogo anexada (e o nome completo), para pessoas que não desejam pesquisar:

  • SPRK: Eletricidade. A base de todos os componentes eletrônicos no TPT viaja ao longo de fios e outros elementos condutores.
  • FILT: Filtro. Filtrar por fótons, muda a cor.
  • ARAY: Ray Emitter. Os raios criam pontos quando colidem.
  • Bateria: Bateria. Gera eletricidade infinita.
  • DRAY: raio duplicador. Duplica uma linha de partículas à sua frente.
  • CRAY: Emissor de raios de partículas. Cria um feixe de partículas definido por seu tipo, com um intervalo definido por tmp.
  • SWCH: interruptor. Conduz apenas quando ligado. (PSCN liga, NSCN desliga)

Lista de todos os elementos

moonheart08
fonte
11
@ mbomb007 Obrigado por adicionar o link. Eu só ia pedir isso. Eu não sei TPT e pensei que era um desafio sobre os brinquedos que costumava ser - e talvez ainda são - encontrado em embalagens de detergente ...: /
Arnauld
@Arnauld Haha. Ops. Obrigado, mbomb007: P
moonheart08
Como você calcula a pontuação?
12Me21
@ 12Me21 No momento, a pontuação é baseada no arquivo salvo. Você pode discutir isso neste meta post #
moonheart08 /

Respostas:

2

Use apenas lógica de subquadro quando for menor

E, para máquinas mais complexas, geralmente é muito menor.

O sub-quadro geralmente impõe a sobrecarga de criação de SPRK sólido (cerca de 3 pixels para a maioria das direções, um pixel extra comparado a apenas um BTRY), 'canais' FILT (para transferência rápida de BRAY) e minimiza a quantidade de lógica não-sub-quadro, mesmo que seja menor , por ser muitas vezes (4x a 20x-30x mais lento!) mais lento.

A lógica de subquadro é geralmente boa para operações complexas (que é a maioria dos desafios aqui), mas para os mais simples, a lógica de subquadro provavelmente não é ideal.

moonheart08
fonte
pls adiciona imagens tyvm
somente ASCII
@ Somente ASCII Fará quando eu chegar em casa.
Moonheart08
3
Seria bom se você pudesse explicar as coisas em vez de usar tantas abreviações. Nem todo mundo está familiarizado com o jogo, mas alguns podem achar interessante.
Mbomb007
@ mbomb007 Só para observar, FILT, BTRY, BRAY, SPRK, etc, são apenas nomes de partículas no jogo. O jogo em si usa esses nomes. Devo colocar o wiki do jogo no post principal? As pessoas podem pesquisar esses nomes lá e descobrir o que são facilmente.
Moonheart08
1

Conheça os seus modos FILT

FILT é, pelo menos para a lógica FILT e subquadro, a pedra angular da computação no TPT. E, como tal, possui vários truques para facilitar sua vida, na forma de vários modos. Você define um modo FILT usando tmp, mas uma lista abrangente que descreve os meandros desses modos não é realmente uma coisa no momento. FILT recebe duas entradas: é de cor própria (CTYPE) e a cor com a qual está interagindo, BRAY ou CRAY. Vou rotular estes FILTC e INTRC, respectivamente, para esta lista.

  • Modo 0:

    O modo mais simples, define INTRC para o valor de FILTC, nada mais.

    INTRC = FILTC
    
  • Modo 1:

    Este é um AND binário, que une INTRC e FILTC, configurando INTRC para o resultado.

    INTRC = INTRC & FILTC
    
  • Modo 2:

    Este é um OR binário, que reúne INTRC e FILTC, configurando INTRC para o resultado.

    INTRC = INTRC & FILTC
    
  • Modo 3:

    Este modo é um pouco mais complicado, e reúne o inverso de FILTC e INTRC, configurando INTRC para o resultado.

    INTRC = INTRC & (~FILTC)
    
  • Modo 4:

    Este modo é um pouco mais difícil de descrever. É um desvio para o vermelho (desvio para a esquerda binário),

    O problema aqui é que a quantidade alterada é controlada por sua temperatura, com a equação (Temperature-273.0) * 0.025, padronizando um deslocamento de 1 se o valor for menor que 1. Você pode obter uma alteração de qualquer quantidade necessária multiplicando o número de bits necessários por 40 e adicionando 273,0. Eu chamarei a quantidade deslocada de X.

    Como tal, INTRC é deslocado para a esquerda por X, configurando INTRC para o resultado.

    X = (temperature-273.0)*0.025
    INTRC = INTRC << X
    
  • Modo 5:

    Este é essencialmente o modo 4, mas com a mudança à direita. Veja as informações no modo 4 para saber como usá-lo.

    X = (temperature-273.0)*0.025
    INTRC = INTRC >> X
    
  • Modo 6:

    Faz nada.

    INTRC = INTRC
    
  • Modo 7:

    Executa um XOR binário em INTRC e FILTC, configurando INTRC para o resultado.

    INTRC = INTRC ^ FILTC
    
  • Modo 8:

    Executa um binário NOT on INTRC, configurando INTRC para o resultado.

    INTRC = ~INTRC
    
  • Modo 9:

    Define INTRC para uma cor aleatória.

    INTRC = rand()
    
  • Modo 10:

    Executa uma versão diferente de um desvio para o vermelho.

    [TODO: descubra como descrever]

    LSB = FILTC & (-FILTC)
    INTRC = INTRC * LSB
    
  • Modo 11:

    Executa uma versão diferente de um deslocamento para azul.

    [TODO: descubra como descrever]

    LSB = FILTC & (-FILTC)
    INTRC = INTRC / LSB
    
moonheart08
fonte