Dicas para jogar golfe em Jolf


12

Jolf é uma linguagem processual de golfe criada por @ CᴏɴᴏʀO'Bʀɪᴇɴ.

Que dicas você tem para o golfe em Jolf?

Poste uma dica por resposta.

Essas dicas devem ser pelo menos um pouco específicas para Jolf, por exemplo, remover comentários é uma resposta, mas não muito boa.


Bem-vindo ao site, leia a página Como perguntar e a página do tour para obter mais informações.
Rɪᴋᴇʀ

Respostas:


4

JavaScript voltar atrás

Se, por algum motivo estranho, Jolf não for suficientemente experiente ou simplesmente não conseguir lidar com isso, pode ser útil usar o JavaScript eval. Isso pode acontecer de duas maneiras.

1. Avaliação projetada

Qualquer coisa dentro dele $...$é literalmente transportada para a transpilação do JS. Por exemplo, +3$~$5transpila para add(3, ~5). Equivalentemente +3:~5.

2. Avaliação da matriz

Você pode usar matrizes JS no Jolf! Na maioria das vezes. É meio que um bug, mas não vou corrigi-lo. Por exemplo:

u[3*5,5/6,(3+4)/5]

Transpiles para:

sum([2 * 3, 5 / 3, (3 + 4) / 5]);

1
Se por alguma razão estranha Jolf é suficiente golfy (...?)
Erik o Outgolfer

@EriktheOutgolfer não é **
Conor O'Brien

7

Conheça suas variáveis ​​de atribuição automática!

Jolf tem muitas maneiras de "atribuir automaticamente" variáveis. O padrão é o γque leva o valor da próxima expressão. Βé a mesma coisa, mas converte a próxima expressão em um número.

Além disso, ζ(zeta) é uma variável inicializada -1/12(adivinhe por que) e pode ser redesignada com Ζ(Zeta).

Por exemplo, digamos que você queira comparar I(a sequência de entrada) com uma operação em si mesma. Por enquanto, vamos ver se I + I = reverse(I + I). Isto está escrito como, convencionalmente:

=+II_+II

Mas isso pode ser resolvido em:

=γ+II_γ

Seu zeta -1/12 tem a ver com a teoria das cordas? Eu sei de uma maneira de adicionar a cada número natural e obter -1/12
DeepDeadpool

1
@GheyPhistor Que teoria das cordas? Mas sim, é que a função zeta sobre os números naturais é -1/12.
Conor O'Brien

6

Usar @

@é um comando que pega o próximo caractere no código-fonte e retorna o ponto de código desse caractere. (Por exemplo, @Xretorna 88.) Isso geralmente é muito útil, pois você pode expressar qualquer número entre 0 e 255 em dois bytes.


"entre 100 e 255"
Freira

@KennyLau No Jolf, 10na verdade é o número 1e o número 0não é o número 10, por isso é mais parecido com 10-255.
um Spaghetto

Entendo, obrigada .. #
Nunky Leaky

4

Leia a fonte

A partir de agora, há muitas coisas não documentadas - o mmódulo misterioso entre elas, que possui muitos recursos internos. No entanto, eles existem na fonte e, na verdade, não é difícil de ler quando você pega o jeito, então leia a fonte.


1
O módulo ath mysterious m.
Conor O'Brien

1
module. (Mais 6 ir ...)
Leaky Nun

2

Aumentar a aridade da função

Toda função tem uma aridade. Por exemplo, +tem uma área de 2. Se você deseja (digamos) adicionar 5 elementos, pode usar 5 + s ... ou fazer +θ12345. Especificamente:

  • θ aumenta a aridade da função em 3.
  • aumenta a aridade da função pai em 3. ( *+~θ345678Aumenta a aridade da *em 3)
  • M aumenta a aridade da função em 2.
  • ~M aumenta a aridade da função pai em 2.
  • ; aumenta a aridade da função em 1.
  • ~; aumenta a aridade da função pai em 1.
  • η diminui a aridade da função em 1.
  • diminui a aridade da função pai em 1.
  • \xad define a aridade da função pai como o código do próximo caractere.

Qual é a vantagem de *+~θacabar *θ+?
precisa saber é o seguinte

@immibis Nesse caso, não foi apenas ilustrativo. Existem algumas funções no Jolf que passam duas funções quando analisadas. Então, a única maneira de acessar a aridade da função superior é usando ~<char>.
Conor O'Brien

2

Aproveite a entrada implícita

Se uma função não tiver argumentos suficientes, ela procurará na entrada o restante dos argumentos. Por exemplo:

+uz

Transpilaria para:

add(sum(unaryRange(x)), x)

É equivalente a

+uzxx

1

Use opara armazenar valores

Semelhante a como outros idiomas podem atribuir variáveis ​​para referência fácil / curta, Jolf possui o.

Por exemplo, oThximprime a entrada mais 1.

Este é um exemplo inútil, mas quando a expressão é mais complicada do que hxisso, pode salvar algumas derivações sérias.

Além disso, v"var name"<val>permite um nome de variável com vários caracteres e V"var name"obtém uma variável do escopo.

Agradeço ao Conor por me explicar isso e pela frase anterior.


Observe também que v"var name"<val>permite um nome de variável com vários caracteres e V"var name"obtém uma variável do escopo.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ oh, é isso que eles fazem. Adicionando à postagem.
Rɪᴋᴇʀ

2
Thx para esta dica: P
Downgoat 26/04/16

@ EᴀsᴛᴇʀʟʏIʀᴋ Foi um trocadilho com osendo a variável atribuição
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ o, yeah .... #
099
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.