Tips untuk bermain golf di Jolf

12

Jolf adalah bahasa golf prosedural yang dibuat oleh @ CᴏɴᴏʀO'Bʀɪᴇɴ.

Kiat apa yang Anda miliki untuk bermain golf di Jolf?

Silakan kirim satu tip per jawaban.

Kiat-kiat ini harus setidaknya agak spesifik untuk Jolf, mis. Menghapus komentar adalah jawaban, tetapi bukan yang sangat bagus.

Rɪᴋᴇʀ
sumber
Selamat datang di situs ini, silakan baca halaman Cara Meminta dan halaman tur untuk informasi lebih lanjut.
Rɪᴋᴇʀ

Jawaban:

4

JavaScript mundur

Jika karena alasan yang aneh Jolf tidak cukup golf, atau tidak bisa mengatasinya, mungkin berguna untuk menggunakan JavaScript eval. Ini bisa terjadi dalam satu dari dua cara.

1. Eval yang dirancang

Apa pun di dalam $...$secara harfiah dibawa ke transpilasi JS. Misalnya, +3$~$5mentranslil ke add(3, ~5). Setara +3:~5,.

2. Array eval

Anda dapat menggunakan array JS di Jolf! Kebanyakan. Ini semacam bug, tapi saya tidak akan memperbaikinya. Sebagai contoh:

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

Transpile ke:

sum([2 * 3, 5 / 3, (3 + 4) / 5]);
Conor O'Brien
sumber
1
Jika karena alasan yang aneh Jolf cukup golf (...?)
Erik the Outgolfer
@EriktheOutgolfer bukan **
Conor O'Brien
7

Ketahui variabel penetapan otomatis Anda!

Jolf memiliki banyak cara untuk "menetapkan secara otomatis" variabel. Yang standar adalah γ, yang mengambil nilai dari ekspresi berikutnya. Βadalah hal yang sama, tetapi mengubah ekspresi selanjutnya menjadi angka.

Juga, ζ(zeta) adalah variabel yang diinisialisasi ke -1/12(tebak mengapa), dan dapat ditugaskan kembali dengan Ζ(Zeta).

Misalnya, katakanlah Anda ingin membandingkan I(string input) dengan operasi pada dirinya sendiri. Untuk saat ini, mari kita lihat apakah I + I = reverse(I + I). Ini ditulis sebagai, secara konvensional:

=+II_+II

Tapi ini bisa di mainkan ke:

=γ+II_γ
Conor O'Brien
sumber
Apakah -1/12 zeta Anda harus dilakukan dengan teori string? Saya tahu cara untuk menambahkan setiap nomor alami dan mendapatkan -1/12
DeepDeadpool
1
@ GeeyPhistor Teori string yang mana? Tapi ya, fungsi zeta di atas bilangan asli adalah -1/12.
Conor O'Brien
6

Menggunakan @

@adalah perintah yang mengambil karakter berikutnya dalam kode sumber dan mengembalikan titik kode karakter itu. (Misalnya, @Xmengembalikan 88.) Ini sering sangat berguna karena Anda dapat mengekspresikan angka apa pun antara 0 dan 255 dalam dua byte.

sebuah spaghetto
sumber
"antara 100 dan 255"
Leaky Nun
@ KennyLau Dalam Jolf, 10sebenarnya adalah angka 1dan 0bukan angka 10, jadi lebih seperti 10-255.
sebuah spaghetto
Begitu ya, terima kasih ..
Leaky Nun
4

Baca sumbernya

Sampai sekarang, ada banyak hal tidak berdokumen - mmodul misterius di antara mereka, yang memiliki banyak builtin. Namun, mereka ada di sumbernya, dan itu benar-benar tidak sulit untuk dibaca begitu Anda sudah terbiasa, jadi baca sumbernya.

Dana Gugatan Monica
sumber
1
The mysterious mmodul ath.
Conor O'Brien
1
mOdule. (6 lebih lanjut ...)
Leaky Nun
2

Tingkatkan Arity Fungsi

Setiap fungsi memiliki arity. Misalnya, +memiliki arity 2. Jika Anda ingin (mengatakan) menambahkan 5 elemen, Anda bisa menggunakan 5+ ... atau lakukan +θ12345. Secara khusus:

  • θ menambah arity fungsi dengan 3.
  • meningkatkan arity dari fungsi induk oleh 3. (Jadi *+~θ345678meningkatkan arity *oleh 3)
  • M meningkatkan arity dari fungsi sebesar 2.
  • ~M meningkatkan arity dari fungsi induk sebesar 2.
  • ; meningkatkan arity dari fungsi sebesar 1.
  • ~; meningkatkan arity dari fungsi induk sebesar 1.
  • η mengurangi arity dari fungsi sebesar 1.
  • mengurangi arity dari fungsi induk dengan 1.
  • \xad menyetel arity dari fungsi induk ke karakter kode berikutnya.
Conor O'Brien
sumber
Apa keuntungan dari *+~θatas *θ+?
user253751
@immibis Tidak ada dalam kasus itu, itu hanya ilustratif. Ada beberapa fungsi dalam Jolf yang melewatkan dua fungsi saat diuraikan. Kemudian, satu-satunya cara untuk mengakses arity fungsi atas adalah menggunakan ~<char>.
Conor O'Brien
2

Manfaatkan input implisit

Jika suatu fungsi tidak memiliki cukup argumen, ia akan mencari input untuk sisa argumen. Sebagai contoh:

+uz

Akan transpile ke:

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

Ini setara dengan

+uzxx
Conor O'Brien
sumber
1

Gunakan ountuk menyimpan nilai

Mirip dengan bagaimana bahasa lain dapat menetapkan variabel untuk referensi mudah / pendek, Jolf memiliki o.

Misalnya, oThxmencetak input plus 1.

Ini adalah contoh yang tidak berguna, tetapi ketika ekspresi lebih rumit daripada hx, itu dapat menghemat beberapa byte yang serius.

Juga, v"var name"<val>memungkinkan untuk nama variabel multi-char, dan V"var name"mendapatkan variabel dari ruang lingkup.

Terima kasih kepada Conor karena menjelaskan ini kepadaku, dan memberikan kalimat sebelumnya.

Rɪᴋᴇʀ
sumber
Perhatikan juga bahwa v"var name"<val>memungkinkan untuk nama variabel multi-char, dan V"var name"mendapatkan variabel dari ruang lingkup.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ oh, jadi itu yang mereka lakukan. Menambahkan ke pos.
Rɪᴋᴇʀ
2
o Thx untuk tip ini: P
Downgoat
@ EᴀsᴛᴇʀʟʏIʀᴋ Pun omenjadi variabel penugasan
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ o, yeah ....
R