Pyth nasıl geliştirilebilir? [kapalı]


24

Pyth devam etmekte olan bir gelişme, yani her zaman yeni özellikler ekleniyor.

Pyth'i daha iyi bir dil dili yapmak istiyorum, bu yüzden insanların hangi özellikleri aradığını bilmek istiyorum.

Bu, Pyth'i daha iyi hale getirmek için sahip olduğunuz fikirlerin yeri.

Cevabınız, lütfen belirtiniz:

  • Neyi değiştirmek / eklemek istediğinizi görmek istersiniz.

  • Değişimin örnek bir kullanımı.

Öneriyi uygulamayı planlıyorsam yorum yapacağım.

Lütfen önermek istediğiniz fikrin daha önce önerilip önerilmediğini kontrol edin. Uygulanmasını istediğiniz fikirleri oylayın.


Uygulanan öneriler:


Bu, soruyu gönderdiğimde bu meta soruya göre konuydu , artık net değil.


1
Neden bu topluluk wiki?
Geobits

4
Bir tartışma ve öneri topluluğundan daha fazlası. Pyth özelliği önerdiği için hiç kimse rep elde etmemeli veya kaybetmemelidir. Ayrıca, uygulanan öneriler muhtemelen silinmelidir. Bu ilgili soru aynı zamanda topluluk wiki.
Dennis,

9
Böyle sorular hakkında ne hissettiğimden emin değilim. Burada bir anlam ifade ettiğini görebiliyorum, çünkü PPCG muhtemelen Pyth'un kullanıcı tabanının çoğunu (hepsi değilse de) kapsıyor, ancak bir sorun izleyici olarak kullanmamız gerektiğinden emin değilim. Meta gönderiye bir cevap ekledim.
Martin Ender

Bu meta olmamalı mıydı? Cidden çocuklar
Alec Teal,

2
@AlecTeal "Meta Programlama Bulmacaları ve Kod Golf Yığın Borsası, kullanıcıların programlama bulmacalarını tartışmak veya kod golfünü tartışmak yerine Kod Golf Yığın Borsasının çalışmalarını ve politikalarını tartıştıkları sitenin bir parçasıdır." Meta özellikle bu toplulukla ilgilidir . Gerçekten metaya ait değil. Buraya ait olup olmadığı PPCG’de olup olmadığı şu anda bağlantılı olduğum meta yazıda tartışılmaktadır.
Martin Ender

Yanıtlar:


7

İç içe geçmiş döngüler

forDöngüleri yuvalamak istiyorsanız , şu anda F<var><seq>içini kullanmak için bir bayt harcamak zorundasınız V<seq>. Döngü için kullanılan değişkenin iç içe geçmiş döngülerde değişeceği lambdalarla aynı şeye sahip olmayı çok isterdim.


Bu , ikinci kez çağrıldığı zaman Lyeniden tanımlayabilecek başka şeylere bile genişletilebilir C.
FryAmTheEggman


4

Kolay Modül İçe Aktarma

Şimdiye kadar, her kullanışımda şöyle bir $şey oldu:

$from <module> import <function> as <pyth-function-with-same-arity>$
for example:
$from unicodedata import name as neg$

Örneğin bunu özetleyen yeni bir fonksiyon olabilir .$:

.$"unicodedata""name""neg"
.$"unicodedata name neg"

Veya _Myapılması kolay / mümkün olmayan yeni sözdizimini kullanarak :

_$unicodedata name$

Ek olarak, her arite ile bir işleve tek bir harfli makro adı verilebilir _$;


4

Uyuyor

Bu , burada sorun yarattı ve @ mbomb007 , Pyth’e bir geliştirme olarak koymasını önerdi . Temel olarak, şu anda, verilen saniye boyunca uyumak için, şöyle bir şey yapmam gerekiyor:

Q$__import__('time').sleep(Q)$

Bu can sıkıcı ve heck sürece.


Tarih fonksiyonuyla uyku davranışını simüle edebilirsiniz. f>.d1Q0örneğin Qsaniye uyur .
Jakube,

@Jakube Bu her zaman işe yaramaz. Belgelere göre, Unix'te programın ne kadar süredir çalıştığını döndürüyor. Kullanıcı giriş yaparken bu durum kötüdür.
kirbyfan64sos

Nasıl daha hakkında bu bir: J.d0f>-.d0JQ0. Çok uzun olsa da ... Katılıyorum, bir uyku fonksiyonu iyi olurdu.
Jakube

4

Daha fazla lambda

Bu gerçekten FryAmTheEggman'ın fikri , ama onu oraya çıkarmak için gönderiyorum.

Bazen iki farklı argümanlı lambda kullanmanın kodu kısaltacağını, biri için iki argümanlı lambda kullanmak zorunda kalmaya başladım.

Olması güzel olurdu L, Mve arkadaşları farklı bir fonksiyonu kullanılır her zaman yeniden tanımlamak; örneğin, bu kod:

L*b2L*b3y5'5

şunları derleyebilir:

@memoized
def subsets(b):
 return times(b,2)
@memoized
def read_file(b):
 return times(b,3)
imp_print(subsets(5))
imp_print(read_file(5))

Elbette, tam işlev seçimi değiştirilebilir.


3

Geliştirilmiş çok boyutlu diziler

Çok boyutlu dizileri kullanmak şu anda yapmak oldukça zor. Örneğin, C kodu Pyth A[B][C][D]dilinde @@@ABCDçevrilecektir. Gibi bir şey @A[BCD)çok daha güzel olurdu (burada daha kısa olmasa da). Aynı şey için de geçerli X; A[B][C][D] = Eşu anda X@@ABCDEolabilir XA[BCD)E.


3

Bazı küçük fikirler

  • Mutlak fark, yani abs(val1 - val2). Şu anda öyle .a-<val1><val2>.
  • min/ maxdeğerler için. Şu anda var hS,<val1><val2>/ eS,<val1><val2>veya daha fazla değere sahip aynı şey. ( hS<seq>/ eS<seq>diziler için yeterince kısa.)

3

Pyth özelliği değil ama yine de ...

Pyth kodunu modülerleştirmek

Bu sadece kaputun altındaki Pyth'i etkiler. Pyth uygulamasının bazı kısımları oldukça karışık. Çok sayıda küresel değişken ve diğer sahte şeyler.

Gerçekten birkaç gün önce Pyth uygulamasının birkaç işlevini (bir dizi Pyth komutu çalıştırmak gibi) başka bir Python betiğinden kullanmaya çalıştığımda hayal kırıklığına uğradım.

Aşağıdaki gibi bir şey iyi olurdu:

from pyth import execute_pyth
print(execute_pyth(code='sQ', input='[1, 2, 3]'))

Sanırım bu sadece Pyth5 için bir yardım çağrısı.



1

Benzersiz elemanları

Pyth şu anda bir dizinin benzersiz elemanlarını elde etmek için kısa bir yol yok. Benzersiz olup olmadığını test edebilirsiniz , ancak gerçekten benzersiz olan öğeleri alamazsınız. Şu anda en kısa yol şudur :

{.-Q{Q

6 bayt! K ile karşılaştırın, eşsiz elemanları elde nerede bir baytlık bir işlemdir: =x.

Belki .}burada çalışabilirim?


Hangi kullanım durumlarını (bir meydan okuma dışında) düşünüyorsunuz?
isaacg

@isaacg Çok fazla hatırlayamıyorum, ancak bir listenin benzersiz öğelerini daha önce denemek ve almak zorunda kaldım ve (her zaman daha uzun olan) başka bir şey kullanmak zorunda kaldım.
kirbyfan64sos 15:15

Pyth programcısı değilim, ama GolfScript / CJam: .&resp. _&bir sürü cevapta belirir. Bu çok kullanışlı.
Lynn

1
Bunun farkı {Qnedir?
isaacg,

1
@isaacg Sıralandı
Ypnypn
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.