Wie kann Pyth verbessert werden? [geschlossen]

24

Pyth wird ständig weiterentwickelt, was bedeutet, dass ständig neue Funktionen hinzugefügt werden.

Ich mag Pyth ein besseres Langauge machen, so würde Ich mag wissen, welche Funktionen für die Menschen suchen.

Hier finden Sie die Post-Ideen, mit denen Sie Pyth verbessern können.

Bitte geben Sie in Ihrer Antwort an:

  • Was möchten Sie geändert / hinzugefügt sehen.

  • Eine beispielhafte Verwendung der Änderung.

Ich werde einen Kommentar abgeben, wenn ich vorhabe, den Vorschlag umzusetzen.

Bitte überprüfen Sie, ob die Idee, die Sie vorschlagen möchten, bereits vorgeschlagen wurde. Upvote-Ideen, die Sie gerne umgesetzt hätten.


Umgesetzte Vorschläge:


Dies war auf Thema gemäß dieser Meta Frage , wenn ich die Frage gestellt, es ist nicht mehr klar.

isaacg
quelle
1
Warum ist das ein Community-Wiki?
Geobits
4
Es ist eher eine Diskussion und Sammlung von Vorschlägen. Niemand sollte Repräsentanten gewinnen oder verlieren, wenn er eine Pyth-Funktion vorschlägt. Auch umgesetzte Vorschläge sollten wohl gelöscht werden. Diese verwandte Frage ist auch Community-Wiki.
Dennis
9
Ich bin mir nicht sicher, wie ich mich bei solchen Fragen fühle. Ich kann sehen, dass es hier irgendwie Sinn macht, weil PPCG wahrscheinlich den größten Teil (wenn nicht den gesamten) der Pyth-Benutzerbasis abdeckt, aber ich bin nicht sicher, ob wir es als Problemverfolgung verwenden sollten. Ich habe dem Metapost eine Antwort hinzugefügt.
Martin Ender
Sollte das nicht meta sein? Ernst Jungs
Alec Teal
2
@AlecTeal "Meta-Programmierpuzzles & Code Golf Stack Exchange ist der Teil der Website, auf dem Benutzer die Funktionsweise und Richtlinien von Code Golf Stack Exchange diskutieren, anstatt Programmierpuzzles oder Code Golf selbst zu diskutieren." Bei Meta geht es speziell um diese Community . Es gehört wirklich nicht auf Meta. Ob es hierher gehört oder nicht, wird derzeit in dem von mir verlinkten Meta-Post diskutiert.
Martin Ender

Antworten:

7

Verschachtelte Schleifen

Wenn Sie forSchleifen verschachteln möchten , müssen Sie derzeit ein Byte für die Verwendung verschwendenF<var><seq> innerhalb eines V<seq>oder umgekehrt. Ich würde gerne das Gleiche wie mit Lambda - Ausdrücke haben, wo die Variable für die Schleife verwendet würde sich ändern , wenn Schleifen nisten.

PurkkaKoodari
quelle
Dies könnte sogar auf andere Dinge erweiterbar sein L, die beispielsweise Cden zweiten Aufruf neu definieren könnten .
FryAmTheEggman
4

Einfacheres Importieren von Modulen

Bisher war jedes Mal, wenn ich es benutzt $habe, so etwas wie:

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

Es könnte eine neue Funktion geben, die dies zum Beispiel zusammenfasst .$:

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

Oder mit der neueren Syntax, wie _Msie möglicherweise nicht einfach / möglich ist:

_$unicodedata name$

Zusätzlich könnte eine Funktion mit jeder Arität einen Makronamen mit einem Buchstaben erhalten, so dass diese Aufrufe kürzer sein könnten (mit Ausnahme der _$Option).

FryAmTheEggman
quelle
4

Schlafen

Dies verursachte hier Probleme und @ mbomb007 schlug vor, es als Verbesserung für Pyth zu verwenden . Grundsätzlich muss ich jetzt, um für die angegebene Anzahl von Sekunden zu schlafen, Folgendes tun:

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

Was nervig und verdammt lang ist.

refi64
quelle
Mit der Datumsfunktion können Sie das Schlafverhalten simulieren. f>.d1Q0Zum Beispiel schläft QSekunden.
Jakube
@ Jakube Das funktioniert nicht immer. Laut Dokumentation wird unter Unix zurückgegeben, wie lange das Programm ausgeführt wurde. Was schlecht ist, wenn der Benutzer Eingaben eingibt.
kirbyfan64sos
Wie wäre es diese als: J.d0f>-.d0JQ0. Es ist allerdings ziemlich lang ... Ich stimme zu, eine Schlaffunktion wäre schön.
Jakube
4

Noch mehr Lambdas

Das ist wirklich die Idee von FryAmTheEggman , aber ich sie, um sie .

Manchmal stelle ich fest, dass die Verwendung von zwei unterschiedlichen Lambdas mit einem Argument den Code verkürzen würde, während die Verwendung eines Lambdas mit zwei Argumenten für einen Lambda dies nicht tun würde.

Es wäre schön zu haben L, Mund Freunde neu definieren eine andere Funktion jedes Mal verwendet wird ; Zum Beispiel dieser Code:

L*b2L*b3y5'5

könnte kompilieren zu:

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

Die genaue Auswahl der Funktionen kann natürlich geändert werden.

Pietu1998
quelle
3

Verbesserte mehrdimensionale Arrays

Die Verwendung mehrdimensionaler Arrays ist derzeit ziemlich schwierig. Zum Beispiel A[B][C][D]würde der C-Code @@@ABCDin Pyth übersetzt. Sowas @A[BCD)wäre viel schöner (wenn auch hier nicht kürzer). Das gleiche gilt auch für X; A[B][C][D] = Eist aktuell X@@ABCDE, wann es sein könnte XA[BCD)E.

Pietu1998
quelle
3

Einige kleine Ideen

  • Absoluter Unterschied, dh abs(val1 - val2) . Derzeit ist es .a-<val1><val2>.
  • min/ maxfür Werte. Derzeit ist es hS,<val1><val2>/ eS,<val1><val2>oder dasselbe mit mehr Werten. ( hS<seq>/ eS<seq>für Sequenzen ist kurz genug.)
PurkkaKoodari
quelle
3

Kein Pyth-Feature, aber trotzdem ...

Modularisieren Sie den Pyth-Code

Dies betrifft nur Pyth unter der Haube. Einige Teile der Pyth-Implementierung sind ziemlich chaotisch. Viele globale Variablen und andere hackige Dinge.

Ich war vor ein paar Tagen wirklich frustriert, als ich versuchte, einige Funktionen der Pyth-Implementierung (wie das Ausführen einer Reihe von Pyth-Befehlen) von einem anderen Python-Skript aus zu verwenden.

So etwas wie das Folgende wäre schön:

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

Nun, ich denke, das ist nur ein Hilferuf für Pyth5.

Jakube
quelle
1

Einzigartige Elemente

Pyth hat derzeit keine Möglichkeit, eindeutige Elemente einer Sequenz zu erhalten. Sie können testen, ob es eindeutig ist, aber Sie können nicht die Elemente erhalten, die tatsächlich einzigartig sind. Derzeit ist der kürzeste Weg :

{.-Q{Q

6 Bytes! Vergleichen Sie das mit K, wo die einzigartigen Elemente bekommen ist ein Ein-Byte - Betrieb: =x.

Vielleicht .}würde hier arbeiten?

refi64
quelle
An welche Anwendungsfälle (außer einer Herausforderung) denken Sie?
isaacg
@isaacg Ich kann mich nicht recht erinnern, aber ich musste versuchen, die einzigartigen Elemente einer Liste zu erhalten, und musste etwas anderes verwenden (was immer länger war).
kirbyfan64sos
Ich bin kein Pyth-Programmierer, stoße aber in GolfScript / CJam die ganze Zeit darauf: .&resp. _&erscheint in vielen Antworten. Es ist sehr nützlich.
Lynn
1
Wie unterscheidet sich das von {Q?
Isaacg
1
@isaacg Es ist sortiert
Ypnypn