Come si può migliorare Pyth? [chiuso]


24

Pyth è in costante sviluppo, il che significa che vengono continuamente aggiunte nuove funzionalità.

Voglio rendere Pyth una lingua migliore, quindi mi piacerebbe sapere quali caratteristiche le persone stanno cercando.

Questo è il posto che le idee post che hai per rendere migliore Pyth.

Nella tua risposta, specifica:

  • Cosa ti piacerebbe vedere modificato / aggiunto.

  • Un esempio di utilizzo della modifica.

Commenterò se ho intenzione di implementare il suggerimento.

Verifica se l'idea che desideri suggerire è già stata suggerita. Valorizza le idee che desideri implementate.


Suggerimenti implementati:


Questo era in tema come per questa meta domanda quando ho pubblicato la domanda, non è più chiaro.


1
Perché questa è una wiki della comunità?
Geobits il

4
È più una discussione e una raccolta di suggerimenti. Nessuno dovrebbe guadagnare o perdere la reputazione per aver suggerito una funzione Pyth. Inoltre, i suggerimenti implementati dovrebbero probabilmente essere eliminati. Questa domanda correlata è anche wiki della comunità.
Dennis,

9
Non sono sicuro di come mi sento riguardo a domande come questa. Vedo che ha un senso qui, perché PPCG probabilmente copre la maggior parte (se non tutta) della base utenti di Pyth, ma non sono sicuro che dovremmo usarlo come tracker dei problemi. Ho aggiunto una risposta al meta post.
Martin Ender,

Questo non dovrebbe essere meta? Seriamente ragazzi
Alec Teal

2
@AlecTeal "Meta Programming Puzzle & Code Golf Stack Exchange è la parte del sito in cui gli utenti discutono del funzionamento e delle politiche di Code Golf Stack Exchange anziché discutere dei puzzle di programmazione o del codice golf stesso." Meta riguarda specificamente questa comunità . In realtà non appartiene a meta. Se appartiene o meno a PPCG è attualmente in discussione nel meta post che ho collegato.
Martin Ender,

Risposte:


7

Anelli nidificati

Se vuoi annidare i forloop, al momento devi sprecare un byte per usarlo F<var><seq>all'interno di V<seq>o viceversa. Mi piacerebbe avere la stessa cosa di lambdas, in cui la variabile utilizzata per il loop cambierebbe quando si annidano i loop.


Questo potrebbe anche essere estendibile ad altre cose come L, che potrebbero ridefinire, per esempio, Cla seconda volta che viene chiamato.
FryAmTheEggman,


4

Importazione del modulo più semplice

Finora, ogni volta che l'ho usato $è stato qualcosa del tipo:

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

Potrebbe esserci una nuova funzione che riassume questo ad esempio .$:

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

O usando la sintassi più recente come quella _Mche potrebbe non essere facile / possibile fare:

_$unicodedata name$

Inoltre, a una funzione con ciascun arity potrebbe essere assegnato un nome di macro di una sola lettera in modo che queste chiamate possano essere più brevi (tranne per l' _$opzione).


4

addormentato

Ciò ha causato problemi qui e @ mbomb007 ha suggerito di metterlo come un miglioramento di Pyth . Fondamentalmente, in questo momento, per dormire per il dato numero di secondi, devo fare qualcosa del tipo:

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

Che è fastidioso e lungo come diamine.


Puoi simulare il comportamento del sonno con la funzione data. f>.d1Q0per esempio dorme Qsecondi.
Jakube,

@Jakube Non sempre funziona. Secondo i documenti, su Unix, restituisce da quanto tempo il programma è in esecuzione. Il che è negativo quando l'utente inserisce un input.
Kirbyfan64sos,

Che ne dite di questo rispetto: J.d0f>-.d0JQ0. È piuttosto lungo però ... Sono d'accordo, una funzione del sonno sarebbe piacevole.
Jakube,

4

Più lambda

Questa è davvero l'idea di FryAmTheEggman , ma la sto pubblicando per pubblicarla.

A volte trovo che l'uso di due lambda a argomento singolo accorciasse il codice, mentre dover usare un lambda a due argomenti per non farlo.

Sarebbe bello avere L, Me gli amici ridefinire ogni volta una funzione diversa; ad esempio, questo codice:

L*b2L*b3y5'5

potrebbe compilare per:

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

La scelta esatta delle funzioni potrebbe essere cambiata, ovviamente.


3

Matrici multidimensionali migliorate

L'uso di array multidimensionali è piuttosto difficile da fare al momento. Ad esempio, il codice C A[B][C][D]verrebbe tradotto @@@ABCDin Pyth. Qualcosa del genere @A[BCD)sarebbe molto più bello (anche se non più breve qui). Lo stesso vale anche per X; A[B][C][D] = Eè attualmente X@@ABCDE, quando potrebbe essere XA[BCD)E.


3

Alcune idee minori

  • Differenza assoluta, vale a dire abs(val1 - val2). Attualmente lo è .a-<val1><val2>.
  • min/ maxper valori. Attualmente è hS,<val1><val2>/ eS,<val1><val2>o la stessa cosa con più valori. ( hS<seq>/ eS<seq>per le sequenze è abbastanza breve.)

3

Non è una funzionalità Pyth, ma comunque ...

Modularizza il codice Pyth

Questo riguarda solo Pyth sotto il cofano. Alcune parti dell'implementazione di Pyth sono piuttosto disordinate. Molte variabili globali e altre cose confuse.

Sono stato davvero frustrato qualche giorno fa, quando ho provato ad usare alcune funzioni dell'implementazione di Pyth (come eseguire una stringa di comandi Pyth) da un altro script Python.

Qualcosa di simile al seguente sarebbe bello:

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

Bene, suppongo che questo sia solo un aiuto per Pyth5.



1

Elementi unici

Pyth attualmente non ha modo di ottenere elementi unici di una sequenza. Puoi verificare se è unico, ma non puoi ottenere gli articoli che sono effettivamente unici. Attualmente, il modo più breve è :

{.-Q{Q

6 byte! Confronti che, per K, in cui trovare gli elementi unici è un'operazione un byte: =x.

Forse .}avrebbe funzionato qui?


A quali casi d'uso (oltre a una sfida) stai pensando?
isaacg,

@isaacg Non ricordo bene, ma prima dovevo provare a ottenere gli elementi unici di un elenco e dovevo usare qualcos'altro (che era sempre più lungo).
kirbyfan64sos,

Non sono un programmatore Pyth, ma mi imbatto in questo continuamente in GolfScript / CJam: .&resp. _&appare in molte risposte. È molto utile
Lynn,

1
In che cosa differisce {Q?
isaacg,

1
@isaacg È ordinato
Ypnypn,
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.