Pyth Practice 2


21

Tempo per un'altra pratica Pyth. Vi presento qui 8 dichiarazioni di problemi con una soluzione Pyth ciascuna. Queste soluzioni sono scritte da un principiante di Pyth. È abbastanza contento di queste soluzioni, poiché sono molto più brevi delle sue risposte di Python. Il tuo compito comunque è mostrarlo meglio. Crea programmi equivalenti ma più brevi.

Questa è una sfida sui trucchi e le ottimizzazioni che possono essere utilizzati quando si gioca a golf in Pyth. I golfisti Pyth possono riconoscere molti dei trucchi coinvolti, che portano a soluzioni più brevi. Tuttavia, alcuni problemi richiedono alcuni approcci insoliti che vengono usati raramente. Alcuni dei trucchi che non ho mai visto in natura. Ma nessuna soluzione richiede bug o comportamenti strani, non intenzionali dei designer di Pyth. Tutte le risposte devono essere valide per il commit Pyth più recente ( 2b1562b ) al momento della pubblicazione di questa domanda. Puoi usare l' interprete Pythper i test. Al momento è aggiornato e non mi aspetto grandi cambiamenti in Pyth, che invalideranno soluzioni ottimali o renderanno possibili soluzioni più brevi. L'interprete online presenta anche il nuovo riferimento ai personaggi. Dato che è piuttosto nuovo, puoi (dovresti) usare anche i vecchi documenti , nel caso in cui qualcosa non sia corretto o mancante.

Obiettivo: le soluzioni di riferimento ammontano a 81 byte. Il tuo obiettivo è quello di batterlo il più possibile. Vince l'invio che risolve tutti gli 8 problemi con il minor numero totale di byte. Tiebreaker è la data di presentazione.

Naturalmente sono validi solo gli invii, che contengono soluzioni per tutti e 8 i problemi. È possibile utilizzare l'implementazione di riferimento, se non è possibile migliorare il punteggio di uno (o più) problemi particolari.

Le soluzioni devono stampare esattamente lo stesso risultato delle soluzioni di riferimento. Tranne una newline finale facoltativa.

Poiché questa è una pratica Pyth, sono consentiti solo i programmi scritti nella lingua Pyth.

Risposta: si prega di rovinare l'intera risposta, ad eccezione del punteggio totale. È inteso che non guardi le risposte degli altri prima di presentare le tue. Puoi creare spoiler inserendo>! di fronte a ogni linea, come:

>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...

Spero di non aver scelto problemi troppo difficili o troppo banali. Spero che molti partecipanti e tutti possano ottenere alcune nuove informazioni su Pyth. Buon golf!

Problema 1:

Crea la seguente matrice 9x9 e stampala:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 9]

Soluzione di riferimento ( collegamento ):

V9m?>dNd0S9 (11 bytes)

Problema 2:

Stampa tutte le cifre e tutte le lettere su righe separate:

0
...
9
a
...
z

Soluzione di riferimento ( collegamento ):

VTN)VGN (7 bytes)

Problema 3:

Trova il palindromo più piccolo lessicograficamente, che è lessicograficamente più grande o uguale a una stringa di input contenente lettere minuscole ed è uguale alla stringa di input.

a -> a
abc -> aca
adcb -> adda

Soluzione di riferimento ( collegamento ):

hf&gTzqT_T^Glz (14 bytes)

Problema 4:

Controllare se un numero è compreso nell'intervallo [0, immettere il numero). Questo dovrebbe funzionare anche per i galleggianti.

4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True

Soluzione di riferimento ( collegamento ):

&gQ0<QE (7 bytes)

Il formato di riferimento è to be tested value<newline>end value. Puoi comunque scegliere un formato di input diverso. È importante solo che tu compia la dichiarazione del problema e produca i risultati corretti.

Problema 5:

Analizzare una stringa di input del formato "\ d + [a-zA-Z] +". Si noti che il numero deve davvero essere un numero, non una stringa contenente cifre.

'123Test' -> [123, 'Test']

Soluzione di riferimento ( collegamento ):

A.ggk\Az,sGH (12 bytes)

Problema 6:

Calcola la somma dei numeri, separati da una o più virgole. Puoi presumere che ci sia almeno un numero nella stringa.

11,2,,,3,5,,8 -> 29

Soluzione di riferimento ( collegamento ):

svM:z",+"3 (10 bytes)

Problema 7:

Leggi numeri interi positivi dall'input fino a quando non ottieni il numero 0. Stampa la somma di tutti i numeri.

Soluzione di riferimento ( collegamento ):

WJE=+ZJ)Z (9 bytes)

Problema 8:

Riassumi tutti gli elementi di una matrice quadrata, tranne quelli della diagonale principale (dall'angolo superiore sinistro all'angolo inferiore destro).

Soluzione di riferimento ( collegamento ):

-ssQs.e@bkQ (11 bytes)

Mi piace molto l'idea di domande specifiche sulla lingua (e ho votato a favore di questo). Ma pensavo che le domande specifiche sulla lingua fossero disapprovate in PPCG?
Luis Mendo,

3
@LuisMendo Penso che le domande specifiche sulla lingua siano disapprovate solo se il motivo alla base della domanda è una generale antipatia nei confronti delle lingue del golf come CJam, Pyth, ... o perché l'OP capisce solo alcune lingue. Questo qui è un po 'diverso. Questa domanda è principalmente progettata per mostrare alcune delle funzionalità più nascoste di un linguaggio popolare (su PPCG). In un certo senso è come una raccolta di trucchi. Non ha senso permetterlo in ogni lingua. Ecco un Meta-post su questo argomento: link
Jakube,

In 6, i numeri sono numeri interi a una sola cifra positivi?
xnor

@xnor Puoi presumere che siano positivi, ma potrebbero essere composti da più di una cifra. Cambierò il caso di prova.
Jakube,

1
Sto votando per chiudere questa domanda come fuori tema perché si tratta di una sfida in più parti senza interazione tra le parti
pppery

Risposte:


9

59 58 56 byte

Problema 1:

j.tmLdS9Z (9 byte)

Problema 2:

MTjG (5 byte) (Il primo carattere è una nuova riga)

Problema 3:

h.f_IZ1z (8 byte)

Problema 4:

%IQE (4 byte)

Problema 5:

,J.vz-zJ (8 byte)

Problema 6:

srXz\,d7 (8 byte)

Problema 7:

u+GE0 (5 byte)

Problema 8:

ss.DR~hZQ (9 byte)


2

66 byte

1. 10 byte: V9+mZN}hN9
2. 6 byte: jUT)jG
3. 8 byte: h.f_IZ1z
4. (implementazione di riferimento) 7 byte: &gQ0<QE
5. 11 byte: ,sK-rzZG-zK
6. 7 byte: ssMcz\,
7. 8 byte: s<.Qx.QZ
8. 9 byte:ss.eXbkZQ


2

68 67 66 65 byte

Compito 1

10 byte: V9m*d>dNS9

Compito 2

5 byte :, \nMTjGdove si \ntrova una riga

Compito 3

9 byte: h.fqZ_Z1z

Compito 4

5 byte: qQ%QE

Compito 5

Soluzione di riferimento, 12 byte: A.ggk\Az,sGH

Compito 6

7 byte: ssMcz\,

Compito 7

8 byte: s<.Qx.Q0

Compito 8

9 byte: ss.DVQUlQ


1

54 byte

Ecco le soluzioni previste. Ad eccezione del task 8, sono state trovate tutte le soluzioni.

1. j.tmLdS9Z (9 byte) usando la mappa per la mappa di sinistra, traspone e riempie con zeri
2. \ nMTjG (5 byte) usa le nuove linee per la mappa
3. h.f_IZ1z (8 byte) genera le possibili stringhe con .f
4 .% IQE (4 byte) ha trovato un caso d'uso, in cui l'operatore invariante necessita di 2 parametri
5., J.vz-zJ (8 byte) .v valuta solo la prima istruzione di una stringa e ignora il resto
6. ssMcz \, ( 7 byte) s "" = 0
7. u + GE0 (5 byte) riducono fino a raggiungere un numero noto
8. ss.DVQUQ (8 byte) cancella la diagonale usando la vettorializzazione


Accidenti, ho dimenticato Ufatto ldi liste!
lirtosiast,

1
Bello battere isaacg nella sua lingua.
Stan Strum,

1

 60 59  57 byte

1. 9 byte :j.tmRdS9Z


2. 6 byte :jbUTjG


3. 8 byte :h.f_IZ1z


4. 4 byte :}sEU


5. 8 byte :,K.vz-zK


6. 7 byte :ssMcz\,


7. 8 byte :s<FxB.Q0


8. 11 10 7 byte : ss.DVQU versione precedente:ss.e+<bk>bh

Nota che ho sviluppato queste soluzioni in modo completamente indipendente dalle altre risposte, anche se sono in ritardo alla festa.


Bel tentativo. Il terzo problema è di 8 byte.
Jakube,

E sono abbastanza sicuro che la soluzione per il problema 8 non fosse stata compilata all'epoca. Ma non l'ho provato.
Jakube,

@Jakube Oh grazie per averlo notato!
Mr. Xcoder,
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.