Golfpraxis: Pyth [geschlossen]

10

Dies ist eine Herausforderung in Bezug auf die Tricks und Optimierungen, die beim Golfen in Pyth verwendet werden können. Pyth-Golfer erkennen möglicherweise viele der Tricks. Es können jedoch ungewohnte Ansätze und Konstrukte beteiligt sein. Sehen Sie sich daher die Pyth-Tipps sowie die Pyth-Zeichenreferenz an, wenn Sie nicht weiterkommen . Hier können Lösungen getestet werden .

Ziel: Es gibt 8 Probleme mit jeweils einem Pyth-Snippet, das Sie optimieren können. Ihr Ziel ist es, etwas Äquivalentes, aber Kürzeres zu schaffen. Die Referenzlösungen umfassen insgesamt 80 Bytes. Ihr Ziel ist es, das so weit wie möglich zu übertreffen.

Der Gewinner geht zu der Einreichung, die alle 8 Probleme mit der kleinsten Gesamtzahl von Bytes löst. Tiebreaker ist früherer Beitrag.

Antwort : Bitte verderben Sie Ihre gesamte Antwort mit Ausnahme Ihrer Gesamtpunktzahl. Es ist beabsichtigt, dass Sie sich die Antworten anderer nicht ansehen, bevor Sie Ihre eigenen einreichen.

Jede Übermittlung sollte jedes Problem beantworten und die entsprechende Byteanzahl angeben. Sie können jedoch auch die Referenzimplementierung verwenden, wenn Sie sie nicht verbessern können.

Details: Wenn die Frage einen bestimmten Wert oder eine bestimmte Ausgabe qerfordert, ist Gleichheit erwünscht 1und !0gleichwertig. Wenn in der Frage geprüft werden muss, ob eine Bedingung wahr ist, muss die Ausgabe wahr sein, wenn die Bedingung wahr ist, und falsch, wenn die Bedingung falsch ist, aber darüber hinaus nicht eingeschränkt sein. Sie dürfen nicht wahr gegen falsch und falsch gegen wahr tauschen. Wenn die Frage das Drucken von etwas erfordert, darf nur eine nachfolgende neue Zeile gedruckt werden.

Alle Antworten müssen für das letzte Pyth-Commit zum Zeitpunkt der Veröffentlichung dieser Frage gültig sein .

Problem 1: Geben Sie bei einer Menge in Q eine Liste mit den Elementen von Q in beliebiger Reihenfolge aus.

; 3 bytes
f1Q

Problem 2: Geben Sie die Liste aus [1, 1, 0, 0, 1, 1, 0].

; 9 bytes
[J1JZZJJZ

Problem 3: Testen Sie bei einer positiven Ganzzahl in Q, ob alle Ziffern von Q positiv sind (nicht Null).

; 7 bytes
!f!TjQT

Problem 4: Testen Sie anhand einer Zeichenfolge in z, ob z Anführungszeichen enthält - "oder '.

; 9 bytes
|}\'z}\"z

Problem 5: Ordnen Sie Q = 1 'Win', Q = 0 'Tie' und Q = -1 'Lose' zu.

; 20 bytes
@["Tie""Win""Lose")Q

Problem 6: Drucken 0123456789.

; 6 bytes
sm`dUT

Problem 7: Zählen Sie bei einer Zeichenfolge in z die Anzahl der Inversionen.

(Indiziert iund jbildet eine Inversion, wenn i < jaber z[i] > z[j]).

; 17 bytes
ssmm>@zd@zkrdlzUz

Problem 8: Zählen Sie bei einer Liste in z die Anzahl der wiederholten benachbarten Elemente.

; 9 bytes
lfqFT.:z2
isaacg
quelle
@ user1737909 Diese Antwort ist richtig. f1Qfiltert Qnach einer Funktion, die immer wahr ist, sodass immer jedes Element der Menge ausgegeben wird. fgibt eine Liste aus, die das Ziel in dieser Frage erfüllt.
isaacg
Ich schließe diese Frage als nicht zum Thema gehörend, da mehrteilige Herausforderungen ohne Interaktion zwischen den Teilen nicht zulässig sind. meta.codegolf.stackexchange.com/a/8464/45941
Martin Ender

Antworten:

9

52 Bytes

Problem 1: 2 Bytes

    SQ

Problem 2: 5 Bytes
    jC\f2

Problem 3: 4 Bytes
    -0`Q
Problem 4: 6 Bytes
    @z+N\'
Problem 5: 17 Bytes
    %3>"LTWoiisene"hQ
oder
    @c3"LoseTieWin"hQ
Problem 6: 3 Bytes
    pMT
Problem 7: 9 Bytes
    s>R_d.cz2
Problem 8: 6 Bytes
    sqVztz
Die Kombination von @ xnors Lösung für Problem 4 mit meiner (beide 6 Bytes) ergibt eine schöne 4-Bytes- Lösung. Es sind also 48 Bytes möglich.

Jakube
quelle
Sie können Ihre Lösung nicht mit der von xnor kombinieren, da die von xnor ungültig ist (siehe meinen Kommentar zu seiner Antwort).
Orlp
@orlp * kombiniert alles außer dem ungültigen Zeug ;-) Die Lösung wurde in meinem Beitrag hinzugefügt.
Jakube
Ah, ich verstehe jetzt :) Ich schätze, ich war 6 Bytes (und zähle) schlechter als optimal.
Orlp
aaah! Vielen Dank! hatte es nicht bemerkt :). Ich werde das entfernen.
Ven
7

54 Bytes

Aufgabe 1, 2 Bytes : SQ
Aufgabe 2, 6 Bytes : j102 2
Aufgabe 3, 5 Bytes : *FjQT
Aufgabe 4, 6 Bytes : @z"'\"
Aufgabe 5, 17 Bytes : @c3"LoseTieWin"hQ
Aufgabe 6, 4 Bytes : jkUT
Aufgabe 7, 7 Bytes : s>M.cz2
Aufgabe 8, 7 Bytes :sqM.:z2

orlp
quelle
Schön Golf gespielt :-)
Vedaad Shakib
Ist die Antwort auf Aufgabe 4 gültig, da auf Falsey nur eine leere Zeile gedruckt wird?
Maltysen
@Maltysen Ja, weil der wahrheitsgemäße Wert von ""False ist, weil not ""True ist.
Orlp
3

58 Bytes

Aufgabe 1, 2 Bytes : SQ
Aufgabe 2, 5 Bytes : jC\f2
Aufgabe 3, 6 Bytes : !}Z Q
Aufgabe 4, 8 Bytes : |}\'z}Nz
Aufgabe 5, 18 Bytes : @c"Tie\nWin\nLose"bQ
Aufgabe 6, 4 Bytes : jkUT
Aufgabe 7, 9 Bytes : lf>FT.cz2
Aufgabe 8, 6 Bytes :sqVtzz

Maltysen
quelle
Ich wusste es nicht V(obwohl ich es immer noch nicht vollständig verstehe, da Sie Vektoroperationen mit Operanden ungleicher Länge ausführen), also bin ich dafür entschuldigt, aber ich hätte wirklich an C\f= /
Orlp
@orlp schneidet Vautomatisch ungleiche Eingaben ab
Maltysen
3

Dieser Beitrag dient der Ansammlung der besten Lösungen für alle Antworten. Bitte bearbeiten Sie die Lösung und den Antwortenden, der diese Lösung zuerst gefunden hat, falls es Verbesserungen gibt.

48 Bytes

1. SQ- 2 Bytes, zuerst gepostet von @orlp
2. jC\f2- 5 Bytes, zuerst gepostet von @Maltysen
3. -0`Q- 4 Bytes, zuerst gepostet von @Jakube
4. @z`N- 4 Bytes, Mischung aus @xnor und @Jakube, aber nicht in Noch keine Antworten.
(Ich habe es auch beim Schreiben der Frage nicht gesehen.)
5. @c3"LoseTieWin"hQ- 17 Bytes, zuerst gepostet von @orlp
6. pMT- 3 Bytes, zuerst gepostet von @Jakube
7. s>M.cz2- 7 Bytes, zuerst gepostet von @orlp
8. sqVtzz- 6 Bytes, zuerst gepostet von @Maltysen

isaacg
quelle
beschränken wir uns auf Pyth-Versionen vor der Frage?
Optimierer
1
"Alle Antworten müssen für das letzte Pyth-Commit zum Zeitpunkt der Veröffentlichung dieser Frage gültig sein." Ich würde gerne hören, woran Sie gedacht haben. @ Optimizer
isaacg
Pyth entwickelt sich immer weiter, oder? (viel schneller als andere Golfsprachen). Es ist also sehr wahrscheinlich, dass diese Zahl (48) in naher Zukunft leicht unter 40 fallen wird. Und da dies eine Übungsherausforderung ist, möchten Sie idealerweise die neueste Pyth-Version für neuere Herausforderungen üben.
Optimierer
2

57 Bytes

1. (2) SQSortieren.
2. (5) jC\f2 Convert fin ASCII - val dann Basis 2.
3. (5) /`Q`0Zählen '0'der Zahl String.
4. (5) @z`\'Nimmt den festgelegten Schnittpunkt der Zeichenfolge mit "'".
5. (18) @c"Tie Win Lose"dQErstellt die Liste mit Split. Ich habe nicht in Scheiben geschnitten, um zu arbeiten.
6. (4) jkUTBeitreten range(10). Konvertiert anscheinend automatisch in einen String.
7. (9) sm>d_d.:zZählt Teilzeichenfolgen, die größer als ihre Rückseite sind.
8. (9) l@C,zz.:zSchnittlänge von Unterlisten der Liste und Elementpaaren in der Liste. Gleiche Länge wie Referenzlösung.

xnor
quelle
Ihre Lösung für # 4 ist ungültig. Zum Beispiel ist die Zeichenfolge te\\stfalsch positiv.
Orlp
@orlp Ersetzt durch eine andere, kürzere Lösung.
xnor