Consejos para jugar golf en Jolf

12

Jolf es un lenguaje de golf procesal creado por @ CᴏɴᴏʀO'Bʀɪᴇɴ.

¿Qué consejos tienes para jugar al golf en Jolf?

Por favor, publique un consejo por respuesta.

Estos consejos deben ser al menos algo específicos para Jolf, por ejemplo, eliminar comentarios es una respuesta, pero no una muy buena.

Rɪᴋᴇʀ
fuente
Bienvenido al sitio, lea la página Cómo preguntar y la página del recorrido para obtener más información.
Rɪᴋᴇʀ

Respuestas:

4

JavaScript retrocede

Si por alguna extraña razón Jolf no es lo suficientemente golfista, o simplemente no puede hacer frente, puede ser útil usar JavaScript eval. Esto puede suceder de una de dos maneras.

1. Diseño eval

Todo lo que se encuentra dentro $...$se traslada literalmente a la transpilación JS. Por ejemplo, +3$~$5transpiles a add(3, ~5). De manera equivalente, +3:~5.

2. Array eval

¡Puedes usar matrices JS en Jolf! Principalmente. Es una especie de error, pero no voy a solucionarlo. Por ejemplo:

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

Transpiles a:

sum([2 * 3, 5 / 3, (3 + 4) / 5]);
Conor O'Brien
fuente
1
Si por alguna extraña razón Jolf es lo suficientemente golfista (...?)
Erik the Outgolfer
@EriktheOutgolfer no es **
Conor O'Brien
7

¡Conozca sus variables de asignación automática!

Jolf tiene muchas formas de "asignar automáticamente" variables. El estándar es γ, que toma el valor de la siguiente expresión. Βes lo mismo, pero convierte la siguiente expresión en un número.

Además, ζ(zeta) es una variable inicializada para -1/12(adivina por qué), y se puede reasignar con Ζ(Zeta).

Por ejemplo, supongamos que desea comparar I(la cadena de entrada) con una operación sobre sí misma. Por ahora, veamos si I + I = reverse(I + I). Esto se escribe como, convencionalmente:

=+II_+II

Pero esto se puede reducir a:

=γ+II_γ
Conor O'Brien
fuente
¿Tu zeta -1/12 tiene que ver con la teoría de cuerdas? Sé de una manera de sumar cada número natural y obtener -1/12
DeepDeadpool
1
@GheyPhistor ¿Qué teoría de cuerdas? Pero sí, es que la función zeta sobre los números naturales es -1/12.
Conor O'Brien
6

Utilizar @

@es un comando que toma el siguiente carácter en el código fuente y devuelve el punto de código de ese carácter. (Por ejemplo, @Xdevuelve 88.) Esto suele ser muy útil ya que puede expresar cualquier número entre 0 y 255 en dos bytes.

un espagueti
fuente
"Entre 100 y 255"
Leaky Nun
@KennyLau En Jolf, en 10realidad es el número 1y el número, 0no el número 10, por lo que es más como 10-255.
un spaghetto
Ya veo, gracias ...
Leaky Nun
4

Lee la fuente

A partir de ahora, hay muchas cosas indocumentadas, el mmódulo misterioso entre ellas, que tiene muchas incorporaciones. Sin embargo, existen en la fuente, y realmente no es difícil de leer una vez que lo dominas, así que lee la fuente.

Fondo de la demanda de Mónica
fuente
1
El módulo matlético ysterioso m.
Conor O'Brien
1
mOdule (6 más para ir ...)
Leaky Nun
2

Aumentar la función Arity

Cada función tiene una aridad. Por ejemplo, +tiene una aridad de 2. Si desea (por ejemplo) agregar 5 elementos, puede usar 5 + s ... o hacer +θ12345. Específicamente:

  • θ aumenta la aridad de la función en 3.
  • aumenta la aridad de la función principal en 3. (Entonces *+~θ345678aumenta la aridad de la *en 3)
  • M aumenta la aridad de la función en 2.
  • ~M aumenta la aridad de la función padre en 2.
  • ; aumenta la aridad de la función en 1.
  • ~; aumenta la aridad de la función principal en 1.
  • η disminuye la aridad de la función en 1.
  • disminuye la aridad de la función padre en 1.
  • \xad establece la aridad de la función padre al código de caracteres del siguiente personaje.
Conor O'Brien
fuente
¿Cuál es la ventaja de *+~θmás *θ+?
user253751
@immibis No existe en ese caso, fue meramente ilustrativo. Hay algunas funciones en Jolf que pasan dos funciones cuando se analizan. Entonces, la única forma de acceder al arity de la función superior es usando ~<char>.
Conor O'Brien
2

Aproveche la entrada implícita

Si una función no tiene suficientes argumentos, buscará en la entrada el resto de los argumentos. Por ejemplo:

+uz

Transpilaría a:

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

Es equivalente a

+uzxx
Conor O'Brien
fuente
1

Use opara almacenar valores

Similar a cómo otros idiomas pueden asignar variables para una referencia fácil / corta, Jolf lo ha hecho o.

Por ejemplo, oThximprime la entrada más 1.

Este es un ejemplo inútil, pero cuando la expresión es más complicada que hxeso, puede salvar algunos bytes graves.

Además, v"var name"<val>permite un nombre de variable multi-char y V"var name"obtiene una variable del ámbito.

Gracias a Conor por explicarme esto y dar la oración anterior.

Rɪᴋᴇʀ
fuente
También tenga en cuenta que v"var name"<val>permite un nombre de variable multi-char y V"var name"obtiene una variable del ámbito.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ oh, eso es lo que hacen. Agregando a la publicación.
Rɪᴋᴇʀ
2
o Gracias por este consejo: P
Downgoat
@ EᴀsᴛᴇʀʟʏIʀᴋ Fue un juego de palabras oser la variable de asignación
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ o, sí ...
Rɪᴋᴇʀ