Conseils pour jouer au golf à Jolf


12

Jolf est un langage de golf procédural créé par @ CᴏɴᴏʀO'Bʀɪᴇɴ.

Quels conseils avez-vous pour jouer au golf à Jolf?

Veuillez poster un pourboire par réponse.

Ces conseils devraient être au moins quelque peu spécifiques à Jolf, par exemple, supprimer les commentaires est une réponse, mais pas très bonne.


Bienvenue sur le site, veuillez lire la page Comment demander et la page de visite pour plus d'informations.
Rɪᴋᴇʀ

Réponses:


4

JavaScript se replie

Si pour une raison étrange, Jolf n'est pas assez golfeur ou ne peut tout simplement pas faire face, il peut être utile d'utiliser JavaScript eval. Cela peut se produire de deux manières.

1. Eval conçu

Tout ce qui se trouve à l'intérieur $...$est littéralement transféré à la transpilation JS. Par exemple, +3$~$5transpile vers add(3, ~5). De manière équivalente, +3:~5.

2. Tableau eval

Vous pouvez utiliser des tableaux JS dans Jolf! La plupart. C'est une sorte de bug, mais je ne vais pas le corriger. Par exemple:

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

Transpile vers:

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

1
Si pour une raison étrange, Jolf est assez golfeur (...?)
Erik the Outgolfer

@EriktheOutgolfer n'est pas **
Conor O'Brien

7

Connaissez vos variables d'attribution automatique!

Jolf dispose de nombreuses méthodes pour "affecter automatiquement" des variables. Le standard est γ, qui prend la valeur de l'expression suivante. Βest la même chose, mais convertit l'expression suivante en nombre.

De plus, ζ(zeta) est une variable initialisée à -1/12(devinez pourquoi), et peut être réaffectée avec Ζ(Zeta).

Par exemple, supposons que vous souhaitez comparer I(la chaîne d'entrée) à une opération sur elle-même. Pour l'instant, voyons si I + I = reverse(I + I). Ceci est écrit comme, conventionnellement:

=+II_+II

Mais cela peut se jouer jusqu'à:

=γ+II_γ

Votre zêta -1/12 est-elle liée à la théorie des cordes? Je connais un moyen d'additionner chaque nombre naturel et d'obtenir -1/12
DeepDeadpool

1
@GheyPhistor Quelle théorie des cordes? Mais oui, c'est que la fonction zêta sur les nombres naturels est -1/12.
Conor O'Brien

6

Utilisation @

@est une commande qui prend le caractère suivant dans le code source et renvoie le point de code de ce caractère. (Par exemple, @Xrenvoie 88.) Ceci est souvent très utile car vous pouvez exprimer n'importe quel nombre entre 0 et 255 sur deux octets.


"entre 100 et 255"
Leaky Nun

@KennyLau Dans Jolf, 10c'est en fait le nombre 1et 0non le nombre 10, donc c'est plus comme 10-255.
un spaghetto du

Je vois, merci ..
Leaky Nun

4

Lisez la source

En ce moment, il y a beaucoup de choses non documentées - le mmodule mystérieux parmi eux, qui a beaucoup de fonctions intégrées. Cependant, ils existent dans la source, et ce n'est vraiment pas difficile à lire une fois que vous avez compris, alors lisez la source.


1
Le module mysterious math.
Conor O'Brien

1
module. (6 de plus à faire ...)
Leaky Nun

2

Augmenter l'arité des fonctions

Chaque fonction a une arité. Par exemple, +a une arité de 2. Si vous voulez (par exemple) ajouter 5 éléments, vous pouvez utiliser 5 + s ... ou faire +θ12345. Plus précisément:

  • θ augmente l'arité de la fonction de 3.
  • augmente l'arité de la fonction parent de 3. ( *+~θ345678augmente donc l'arité de la fonction *de 3)
  • M augmente l'arité de la fonction de 2.
  • ~M augmente l'arité de la fonction parent de 2.
  • ; augmente l'arité de la fonction de 1.
  • ~; augmente l'arité de la fonction parent de 1.
  • η diminue l'arité de la fonction de 1.
  • diminue l'arité de la fonction parent de 1.
  • \xad définit l'arité de la fonction parent sur le code de caractère du caractère suivant.

Quel est l'avantage de *+~θplus *θ+?
user253751

@immibis Il n'y en a pas dans ce cas, c'était simplement illustratif. Il y a certaines fonctions dans Jolf qui passent deux fonctions lors de l'analyse. Ensuite, la seule façon d'accéder à l'arité de la fonction supérieure est d'utiliser ~<char>.
Conor O'Brien

2

Profitez de la saisie implicite

Si une fonction n'a pas suffisamment d'arguments, elle recherchera l'entrée pour le reste des arguments. Par exemple:

+uz

Transpile vers:

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

C'est équivalent à

+uzxx

1

Utiliser opour stocker des valeurs

Semblable à la façon dont d'autres langues peuvent attribuer des variables pour un référencement facile / court, Jolf l'a o.

Par exemple, oThximprime l'entrée plus 1.

Ceci est un exemple inutile, mais lorsque l'expression est plus compliquée que hxcela, cela peut économiser un byteage sérieux.

, Également v"var name"<val>permet un nom de variable multi-char, et V"var name"obtient une variable du champ d' application.

Merci à Conor de m'avoir expliqué cela et d'avoir donné la phrase précédente.


Notez également que v"var name"<val>permet un nom de variable multi-caractères et V"var name"obtient une variable de la portée.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ oh, c'est donc ce qu'ils font. Ajout au message.
Rɪᴋᴇʀ

2
o Thx pour cette astuce: P
Downgoat

@ EᴀsᴛᴇʀʟʏIʀᴋ C'était un jeu de mots d' oêtre la variable d'affectation
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ o, ouais ....
Rɪᴋᴇʀ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.