Jolf'da golf için ipuçları


12

Jolf @ CᴏɴᴏʀO'Bʀɪᴇɴ tarafından yapılan prosedürel bir golf dilidir.

Jolf'ta golf oynamak için hangi ipuçlarınız var?

Lütfen cevap başına bir ipucu gönderin.

Bu ipuçları en azından Jolf'a özgü olmalıdır, örneğin yorumları kaldırmak bir cevaptır, ancak çok iyi değildir.


Siteye hoş geldiniz, daha fazla bilgi için lütfen Nasıl Sorulur sayfasını ve tur sayfasını okuyun .
Rɪᴋᴇʀ

Yanıtlar:


4

JavaScript geri çekiliyor

Eğer garip bir nedenden ötürü Jolf yeterince golf oynamıyorsa veya baş edemiyorsa, JavaScript eval'ünü kullanmak faydalı olabilir. Bu iki yoldan biriyle olabilir.

1. Tasarlanmış eval

İçindeki her şey $...$kelimenin tam anlamıyla JS transpilasyonuna taşınır. Örneğin, +3$~$5için transpiles add(3, ~5). Eşdeğer olarak +3:~5.

2. Dizi değerlendirmesi

Jolf'ta JS dizilerini kullanabilirsiniz! Çoğunlukla. Bu bir tür hata ama düzeltmeyeceğim. Örneğin:

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

Aktarım yeri:

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

1
Garip bir nedenden ötürü Jolf yeterince golf ise (...?)
Outgolfer Erik

@EriktheOutgolfer ** değil
Conor O'Brien

7

Otomatik atama değişkenlerinizi öğrenin!

Jolf değişkenleri "otomatik atamak" için birçok yol vardır. Standart γolan, bir sonraki ifadenin değerini alır. Βaynı şeydir, ancak sonraki ifadeyi bir sayıya dönüştürür.

Ayrıca, ζ(zeta) -1/12(nedenini tahmin et) için başlatılmış bir değişkendir ve Ζ(Zeta) ile yeniden atanabilir .

Örneğin, I(giriş dizesini) kendi üzerindeki bir işlemle karşılaştırmak istediğinizi varsayalım. Şimdilik bakalım I + I = reverse(I + I). Bu, geleneksel olarak şöyle yazılır:

=+II_+II

Ancak bu, aşağıdakilere golf edilebilir:

=γ+II_γ

-1/12 zeta'nızın string teorisi ile ilgisi var mı? Her doğal sayıyı toplayıp
-1/12

1
@GheyPhistor Hangi dizi teorisi? Ama evet, doğal sayılar üzerindeki zeta fonksiyonu -1/12.
Conor O'Brien

6

kullanım @

@kaynak koddaki bir sonraki karakteri alan ve bu karakterin kod noktasını döndüren bir komuttur. (Örneğin @X88 değerini döndürür.) 0 ile 255 arasındaki herhangi bir sayıyı iki baytta ifade edebileceğiniz için bu genellikle çok kullanışlıdır.


"100 ile 255 arasında"
Leaky Nun

@KennyLau Jolf'ta 10aslında sayı 1ve sayı 0değil 10, bu yüzden 10-255 gibi.
a spaghetto

Anlıyorum, teşekkürler ..
Leaky Nun

4

Kaynağı okuyun

Şu an itibariyle, birçok belgelenmemiş şey var - maralarında birçok yerleşik bulunan gizemli modül. Ancak, kaynakta varlar ve asıldığınızda okumak gerçekten zor değil, bu yüzden kaynağı okuyun.


1
mYsterious math modülü.
Conor O'Brien

1
mödüle. (6 daha gitmek için ...)
Leaky Nun

2

Fonksiyon Arity'sini Artır

Her işlevin bir varlığı vardır. Örneğin, 2 değeri +vardır. 5 öğe eklemek (demek) isterseniz , 5 + s kullanın ... veya yapmak +θ12345. özellikle:

  • θ fonksiyonun bütünlüğünü 3 arttırır.
  • Ana fonksiyonun *+~θ345678sertliğini *3 arttırır.
  • M fonksiyonun sağlamlığını 2 arttırır.
  • ~M Ana işlevin tutarlılığını 2 artırır.
  • ; fonksiyonun sağlamlığını 1 arttırır.
  • ~; Ana işlevin tutarlılığını 1 artırır.
  • η fonksiyonun sağlamlığını 1 azaltır.
  • ana işlevin sabitliğini 1 azaltır.
  • \xad üst işlevin kaynağını sonraki karakterin charcode'una ayarlar.

Avantajı nedir *+~θüzerinde *θ+?
user253751

@immibis Bu durumda yok, sadece açıklayıcıydı. Jolf'ta ayrıştırıldığında iki işlevi geçen bazı işlevler vardır. Daha sonra, üst fonksiyonun etkinliğine erişmenin tek yolu kullanmaktır ~<char>.
Conor O'Brien

2

Örtük girdiden yararlanın

Bir fonksiyonun yeterli sayıda argümanı yoksa, argümanların geri kalanı için girdiye bakacaktır. Örneğin:

+uz

Şuraya aktarılır:

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

Eşittir

+uzxx

1

oDeğerleri saklamak için kullanın

Jolf, diğer dillerin kolay / kısa referans için nasıl değişken atayabileceğine benzer o.

Örneğin oThx, giriş artı 1'i yazdırır.

Bu işe yaramaz bir örnektir, ancak ifade daha karmaşık olduğunda hx, ciddi bir byteage kurtarabilir.

Ayrıca, v"var name"<val>çoklu karakter değişkeni adına izin verir V"var name"ve kapsamdan bir değişken alır.

Bunu bana açıkladığı ve önceki cümleyi verdiği için Conor'a teşekkürler.


Ayrıca v"var name"<val>, birden çok karakter içeren bir değişken adına izin verir V"var name"ve kapsamdan bir değişken alır.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ oh, işte böyle yapıyorlar. Gönderi ekleme.
16:14

2
Bu ipucu için
teşekkürler

@ EᴀsᴛᴇʀʟʏIʀᴋ oAtama değişkeni olmak bir cinstendi
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ o, evet ....
Rɪᴋᴇʀ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.