Bagaimana Pyth ditingkatkan? [Tutup]

24

Pyth sedang dalam pengembangan, yang berarti bahwa fitur-fitur baru ditambahkan setiap saat.

Saya ingin menjadikan Pyth sebagai bahasa yang lebih baik, jadi saya ingin tahu fitur apa yang dicari orang.

Ini adalah tempat ide-ide posting yang Anda miliki untuk membuat Pyth lebih baik.

Dalam jawaban Anda, sebutkan:

  • Apa yang ingin Anda lihat diubah / ditambahkan.

  • Contoh penggunaan perubahan.

Saya akan berkomentar jika saya berencana menerapkan saran.

Silakan periksa apakah ide yang ingin Anda sarankan telah disarankan. Mengunggah gagasan yang ingin Anda terapkan.


Saran yang diterapkan:


Ini pada topik sesuai pertanyaan meta ini ketika saya memposting pertanyaan, tidak lagi jelas.

isaacg
sumber
1
Mengapa ini wiki komunitas?
Geobits
4
Ini lebih merupakan diskusi dan kumpulan saran. Tidak seorang pun boleh mendapatkan atau kehilangan perwakilan karena menyarankan fitur Pyth. Juga, saran yang diterapkan mungkin harus dihapus. Pertanyaan terkait ini juga wiki komunitas.
Dennis
9
Saya tidak yakin bagaimana perasaan saya tentang pertanyaan seperti ini. Saya dapat melihat bahwa ini agak masuk akal di sini, karena PPCG mungkin mencakup sebagian besar (jika tidak semua) basis pengguna Pyth, tapi saya tidak yakin kita harus menggunakannya sebagai pelacak masalah. Saya telah menambahkan jawaban ke pos meta.
Martin Ender
Bukankah ini meta? Serius teman
Alec Teal
2
@AlecTeal "Meta Programming Puzzles & Code Golf Stack Exchange adalah bagian dari situs di mana pengguna mendiskusikan cara kerja dan kebijakan Code Golf Stack Exchange daripada mendiskusikan teka-teki pemrograman atau golf kode itu sendiri." Meta khusus tentang komunitas ini . Itu benar-benar bukan milik meta. Apakah itu termasuk di sini atau tidak di PPCG sama sekali saat ini sedang dibahas dalam meta post yang saya tautkan.
Martin Ender

Jawaban:

7

Loop bersarang

Jika Anda ingin membuat forsimpul, saat ini Anda harus membuang byte untuk digunakan F<var><seq>di dalam V<seq>atau sebaliknya. Saya ingin memiliki hal yang sama dengan lambdas, di mana variabel yang digunakan untuk loop akan berubah ketika bersarang loop.

PurkkaKoodari
sumber
Ini bahkan dapat diperluas untuk hal-hal lain seperti L, yang dapat mendefinisikan kembali, katakanlah, Ckedua kalinya disebut.
FryAmTheEggman
4

Mengimpor Modul Lebih Mudah

Sejauh ini, setiap kali saya menggunakannya $sudah seperti:

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

Mungkin ada fungsi baru yang merangkum ini misalnya .$:

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

Atau menggunakan sintaks yang lebih baru seperti _Myang mungkin tidak mudah / mungkin dilakukan:

_$unicodedata name$

Selain itu, satu fungsi dengan masing-masing arity dapat diberikan nama makro satu huruf sehingga panggilan ini bisa lebih pendek (kecuali untuk _$opsi).

FryAmTheEggman
sumber
4

Tidur

Ini menyebabkan masalah di sini , dan @ mbomb007 menyarankan untuk menjadikannya sebagai peningkatan ke Pyth . Pada dasarnya, sekarang, untuk tidur selama beberapa detik, saya perlu melakukan sesuatu seperti:

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

Yang menjengkelkan dan selama ini.

refi64
sumber
Anda dapat mensimulasikan perilaku tidur dengan fungsi tanggal. f>.d1Q0misalnya tidur Qdetik.
Jakube
@ Jakube Itu tidak selalu berhasil. Menurut dokumen, pada Unix, ia mengembalikan berapa lama program telah berjalan. Yang buruk saat pengguna memasukkan input.
kirbyfan64sos
Bagaimana kalau yang ini dari: J.d0f>-.d0JQ0. Tapi ini cukup lama ... Saya setuju, fungsi tidur akan menyenangkan.
Jakube
4

Lebih banyak lambda

Ini benar-benar ide FryAmTheEggman , tapi saya mempostingnya untuk mendapatkannya di sana.

Kadang-kadang saya menemukan bahwa menggunakan dua lambda satu argumen yang berbeda akan mempersingkat kode, sementara harus menggunakan lambda dua argumen untuk satu tidak akan.

Akan menyenangkan untuk dimiliki L, Mdan teman-teman mendefinisikan kembali fungsi yang berbeda setiap kali digunakan; misalnya, kode ini:

L*b2L*b3y5'5

dapat dikompilasi ke:

@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))

Pilihan fungsi yang tepat dapat diubah, tentu saja.

Pietu1998
sumber
3

Array multi dimensi yang ditingkatkan

Menggunakan array multi dimensi agak sulit dilakukan saat ini. Misalnya, kode C A[B][C][D]akan diterjemahkan ke @@@ABCDdalam Pyth. Sesuatu seperti @A[BCD)akan jauh lebih baik (walaupun tidak ada yang lebih pendek di sini). Hal yang sama juga berlaku untuk X; A[B][C][D] = Esaat ini X@@ABCDE, ketika bisa XA[BCD)E.

Pietu1998
sumber
3

Beberapa ide kecil

  • Perbedaan absolut, yaitu abs(val1 - val2). Saat ini .a-<val1><val2>.
  • min/ maxuntuk nilai. Saat ini hS,<val1><val2>/ eS,<val1><val2>atau hal yang sama dengan nilai lebih. ( hS<seq>/ eS<seq>untuk urutan cukup pendek.)
PurkkaKoodari
sumber
3

Bukan fitur Pyth, namun demikian ...

Modularisasi kode Pyth

Ini hanya mempengaruhi Pyth di bawah tenda. Beberapa bagian dari implementasi Pyth cukup berantakan. Banyak variabel global dan hal peretasan lainnya.

Saya benar-benar frustrasi beberapa hari yang lalu, ketika saya mencoba menggunakan beberapa fungsi implementasi Pyth (seperti mengeksekusi serangkaian perintah Pyth) dari skrip Python lain.

Sesuatu seperti yang berikut ini akan menyenangkan:

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

Yah, saya kira ini hanya panggilan bantuan untuk Pyth5.

Jakube
sumber
1

Elemen unik

Pyth saat ini tidak memiliki cara singkat untuk mendapatkan elemen unik dari suatu urutan. Anda dapat menguji apakah itu unik, tetapi Anda tidak bisa mendapatkan item yang benar-benar unik. Saat ini, cara terpendek adalah :

{.-Q{Q

6 byte! Bandingkan dengan K, di mana mendapatkan elemen yang unik adalah operasi satu-byte: =x.

Mungkin .}akan bekerja di sini?

refi64
sumber
Apa gunanya case (selain tat one challenge) yang Anda pikirkan?
isaacg
@isaacg Saya tidak dapat mengingatnya, tetapi saya harus mencoba dan mendapatkan elemen unik dari daftar sebelumnya dan harus menggunakan sesuatu yang lain (yang selalu lebih lama).
kirbyfan64sos
Saya bukan programmer Pyth, tapi saya mengalami ini sepanjang waktu di GolfScript / CJam: .&resp. _&muncul dalam banyak jawaban. Ini sangat bermanfaat.
Lynn
1
Bagaimana ini berbeda {Q?
isaacg
1
@isaacg Diurutkan
Ypnypn