Consigli per giocare a golf a Jolf


12

Jolf è un linguaggio procedurale del golf creato da @ CᴏɴᴏʀO'Bʀɪᴇɴ.

Che consigli hai per giocare a golf a Jolf?

Si prega di inviare un suggerimento per risposta.

Questi suggerimenti dovrebbero essere almeno in qualche modo specifici per Jolf, ad esempio rimuovere i commenti è una risposta, ma non molto buona.


Benvenuti nel sito, leggere la pagina Come chiedere e la pagina del tour per ulteriori informazioni.
Rɪᴋᴇʀ

Risposte:


4

JavaScript ricade

Se per qualche strana ragione Jolf non è abbastanza golfy, o semplicemente non riesce a farcela, può essere utile usare JavaScript eval. Questo può accadere in due modi.

1. Eval progettato

Qualsiasi cosa all'interno di $...$è letteralmente riportata alla traspilazione di JS. Ad esempio, +3$~$5traspila a add(3, ~5). Equivalentemente, +3:~5.

2. Eval array

Puoi usare gli array JS in Jolf! Soprattutto. È una specie di bug, ma non lo risolverò. Per esempio:

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

Transpiles a:

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

1
Se per qualche strana ragione Jolf è abbastanza da golf (...?)
Erik the Outgolfer,

@EriktheOutgolfer non è **
Conor O'Brien il

7

Conosci le tue variabili con assegnazione automatica!

Jolf ha molti modi per "assegnare automaticamente" le variabili. Quello standard è γ, che assume il valore dell'espressione successiva. Βè la stessa cosa, ma converte l'espressione successiva in un numero.

Inoltre, ζ(zeta) è una variabile inizializzata su -1/12(indovina perché) e può essere riassegnata con Ζ(Zeta).

Ad esempio, supponiamo che si desideri confrontare I(la stringa di input) con un'operazione su se stessa. Per ora, vediamo se I + I = reverse(I + I). Questo è scritto come, convenzionalmente:

=+II_+II

Ma questo può essere golfato fino a:

=γ+II_γ

La tua zeta -1/12 ha a che fare con la teoria delle stringhe? Conosco un modo per sommare ogni numero naturale e ottenere -1/12
DeepDeadpool

1
@GheyPhistor Quale teoria delle stringhe? Ma sì, è che la funzione zeta sui numeri naturali è -1/12.
Conor O'Brien,

6

Uso @

@è un comando che accetta il carattere successivo nel codice sorgente e restituisce il punto di codice di quel personaggio. (Ad esempio, @Xrestituisce 88.) Ciò è spesso molto utile poiché è possibile esprimere qualsiasi numero compreso tra 0 e 255 in due byte.


"Tra 100 e 255"
Leaky Nun

@KennyLau In Jolf, in 10realtà è il numero 1e il numero 0non il numero 10, quindi è più simile a 10-255.
uno spaghetto il

Vedo, grazie ..
Leaky Nun,

4

Leggi la fonte

A partire da ora, ci sono molte cose prive di documenti - il misterioso mmodulo tra loro, che ha molti builtin. Tuttavia, esistono nella fonte e in realtà non è difficile da leggere una volta capito, quindi leggi la fonte.


1
Il modulo mysterious math.
Conor O'Brien,

1
module. (Altri 6 per andare ...)
Leaky Nun

2

Aumenta la funzione Arity

Ogni funzione ha un'arità. Ad esempio, +ha un arity di 2. Se si desidera (per esempio) aggiungere 5 elementi, si potrebbe usare 5 + s ... o fare +θ12345. In particolare:

  • θ incrina l'arità della funzione di 3.
  • aumenta l'arità della funzione genitore di 3 (quindi *+~θ345678aumenta l'arità di *3)
  • M aumenta l'arità della funzione di 2.
  • ~M aumenta l'arità della funzione genitore di 2.
  • ; aumenta l'arità della funzione di 1.
  • ~; aumenta l'arità della funzione genitore di 1.
  • η diminuisce l'arità della funzione di 1.
  • diminuisce l'arità della funzione genitore di 1.
  • \xad imposta l'arity della funzione parent sul charcode del personaggio successivo.

Qual è il vantaggio di *+~θover *θ+?
user253751

@immibis In questo caso non c'è, era puramente illustrativo. Ci sono alcune funzioni in Jolf che passano due funzioni quando vengono analizzate. Quindi, l'unico modo per accedere all'arità della funzione principale è utilizzare ~<char>.
Conor O'Brien,

2

Approfitta dell'input implicito

Se una funzione non ha abbastanza argomenti, cercherà l'input per il resto degli argomenti. Per esempio:

+uz

Transpile a:

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

È equivalente a

+uzxx

1

Utilizzare oper memorizzare valori

Simile a come altre lingue possono assegnare variabili per riferimenti facili / brevi, Jolf ha o.

Ad esempio, oThxstampa l'ingresso più 1.

Questo è un esempio inutile, ma quando l'espressione è più complicata di così hx, può salvare qualche byteage serio.

Inoltre, v"var name"<val>consente un nome di variabile multi-carattere e V"var name"ottiene una variabile dall'ambito.

Grazie a Conor per avermelo spiegato e aver dato la frase precedente.


Si noti inoltre che v"var name"<val>consente un nome di variabile multi-carattere e V"var name"ottiene una variabile dall'ambito.
Conor O'Brien,

@ CᴏɴᴏʀO'Bʀɪᴇɴ oh, quindi è quello che fanno. Aggiunta al post.
Rɪᴋᴇʀ

2
o Grazie per questo suggerimento: P
Downgoat,

@ EᴀsᴛᴇʀʟʏIʀᴋ Era un gioco di parole oessere la variabile di assegnazione
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ o, sì ....
Rɪᴋᴇʀ
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.