Pratica del golf: Pyth [chiuso]


10

Questa è una sfida sui trucchi e le ottimizzazioni che possono essere utilizzati quando si gioca a golf in Pyth. I golfisti di Pyth possono riconoscere molti dei trucchi coinvolti. Tuttavia, possono essere coinvolti approcci e costrutti sconosciuti, quindi dai un'occhiata ai suggerimenti Pyth e al riferimento ai personaggi Pyth se rimani bloccato. Le soluzioni possono essere testate qui .

Obiettivo: ci sono 8 problemi, ognuno con uno snippet Pyth da ottimizzare. Il tuo obiettivo è creare qualcosa di equivalente ma più breve. Le soluzioni di riferimento ammontano a 80 byte. Il tuo obiettivo è quello di batterlo il più possibile.

Il vincitore andrà alla presentazione che risolve tutti gli 8 problemi con il minor numero totale di byte. Tiebreaker è post precedente.

Risposta: si prega di rovinare l'intera risposta, ad eccezione del punteggio totale. È inteso che non guardi le risposte degli altri prima di inviare le tue.

Ogni invio dovrebbe rispondere a tutti i problemi e fornire il conteggio di byte corrispondente, ma sentiti libero di usare l'implementazione di riferimento se non puoi migliorarlo.

Dettagli: se la domanda richiede un determinato valore o output, l' quguaglianza è desiderata, quindi 1e !0sono equivalenti. Se la domanda richiede di verificare se una condizione è vera, l'output deve essere vero se la condizione è vera e falsa se la condizione è falsa, ma non è vincolata oltre a ciò. Non è possibile scambiare true con false e false con true. Se la domanda richiede che venga stampato qualcosa, nient'altro può essere stampato tranne una nuova riga finale.

Tutte le risposte devono essere valide per il commit Pyth più recente al momento della pubblicazione di questa domanda.

Problema 1: dato un set in Q, genera un elenco contenente gli elementi di Q in qualsiasi ordine.

; 3 bytes
f1Q

Problema 2: output dell'elenco [1, 1, 0, 0, 1, 1, 0].

; 9 bytes
[J1JZZJJZ

Problema 3: dato un numero intero positivo in Q, verifica se tutte le cifre di Q sono positive (non zero).

; 7 bytes
!f!TjQT

Problema 4: data una stringa in z, verifica se z contiene virgolette - "oppure '.

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

Problema 5: mappa Q = 1 su "Win", Q = 0 su "Tie" e Q = -1 su "Lose".

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

Problema 6: stampa 0123456789.

; 6 bytes
sm`dUT

Problema 7: data una stringa in z, conta il numero di inversioni.

(Indica ie jforma un'inversione se i < jma z[i] > z[j]).

; 17 bytes
ssmm>@zd@zkrdlzUz

Problema 8: dato un elenco in z, conta il numero di elementi adiacenti ripetuti.

; 9 bytes
lfqFT.:z2

@ user1737909 Quella risposta è corretta. f1Qfiltra Quna funzione che è sempre vera, quindi emette sempre ogni elemento dell'insieme. fproduce un elenco, che soddisfa l'obiettivo in quella domanda.
isaacg,

Sto chiudendo questa domanda come off-topic perché non sono consentite sfide in più parti senza interazione tra le parti. meta.codegolf.stackexchange.com/a/8464/45941
Martin Ender,

Risposte:


9

52 byte

Problema 1: 2 byte

    SQ

Problema 2: 5 byte
    jC\f2

Problema 3: 4 byte
    -0`Q
Problema 4: 6 byte
    @z+N\'
Problema 5: 17 byte
    %3>"LTWoiisene"hQ
o
    @c3"LoseTieWin"hQ
Problema 6: 3 byte
    pMT
Problema 7: 9 byte
    s>R_d.cz2
Problema 8: 6 byte
    sqVztz
Combinando la soluzione di @ xnor per il problema 4 con il mio (entrambi i 6 byte) si ottiene una buona soluzione di 4 byte . Quindi sono possibili 48 byte.


Non puoi combinare la tua soluzione con xnor's, perché xnor's non è valido (vedi il mio commento sulla sua risposta).
orlp,

@orlp * che combina tutto tranne le cose non valide ;-) Aggiunta la soluzione nel mio post.
Jakube,

Ah, lo vedo ora :) Suppongo di essere stato di 6 byte (e contando) peggio che ottimale.
orlp,

aaah! Grazie! non avevo capito :). Lo toglierò.
Ven

7

54 byte

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


Ben giocato a golf :-)
Vedaad Shakib,

la risposta per l'attività 4 è valida poiché su falsey stampa solo una riga vuota?
Maltysen,

@Maltysen Sì, perché il valore di verità ""è Falso perché not ""è Vero.
orlp,

3

58 byte

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


Non lo sapevo V(anche se ancora non lo capisco completamente, dal momento che stai facendo operazioni vettoriali su operandi di lunghezza disuguale), quindi sono scusato per quello, ma avrei davvero dovuto pensare a C\f= /
orlp

@orlp Vtronca automaticamente input ineguali
Maltysen

3

Questo post è per l'accumulo delle migliori soluzioni in tutte le risposte. Modifica la soluzione e il risponditore che per primo ha trovato quella soluzione in caso di miglioramenti.

48 byte

1. SQ- 2 byte, prima pubblicato da @orlp
2. jC\f2- 5 byte, prima pubblicato da @Maltysen
3. -0`Q- 4 byte, prima pubblicato da @Jakube
4. @z`N- 4 byte, miscela di @xnor e @Jakube, ma non in ancora nessuna risposta.
(Non l'ho nemmeno visto quando ho scritto la domanda)
5. @c3"LoseTieWin"hQ- 17 byte, pubblicati per la prima volta da @orlp
6. pMT- 3 byte, pubblicati per la prima volta da @Jakube
7. s>M.cz2- 7 byte, pubblicati per la prima volta da @orlp
8. sqVtzz- 6 byte, pubblicato per la prima volta da @Maltysen


stiamo limitando alle versioni di Pyth prima della domanda?
Ottimizzatore

1
"Tutte le risposte devono essere valide per il commit Pyth più recente al momento della pubblicazione di questa domanda." Metterei che sarei interessato a sapere cosa stavi pensando. @Optimizer
isaacg

Pyth è in continua evoluzione, giusto? (a un ritmo molto più veloce rispetto ad altre lingue del golf). Quindi è molto probabile che questo numero (48) andrà facilmente sotto i 40 in un prossimo futuro. E poiché questa è una sfida pratica, idealmente vorrai esercitarti usando l'ultima versione di Pyth per sfide più recenti.
Ottimizzatore

2

57 byte

1. (2) SQOrdina.
2. (5) jC\f2 Converti fin ASCII val quindi base 2.
3. (5) /`Q`0Conta '0'nella stringa numerica.
4. (5) @z`\'Prende l'intersezione impostata della stringa con "'".
5. (18) @c"Tie Win Lose"dQCrea l'elenco con la divisione. Non ho avuto il taglio al lavoro.
6. (4) jkUTPartecipa range(10). Apparentemente si converte automaticamente in una stringa.
7. (9) sm>d_d.:zConta sottostringhe maggiori del loro contrario.
8. (9) l@C,zz.:zLunghezza dell'intersezione delle liste secondarie dell'elenco e coppie di elementi nell'elenco. Stessa lunghezza della soluzione di riferimento.


La tua soluzione per # 4 non è valida. Ad esempio la stringa te\\stè un falso positivo.
orlp,

@orlp Sostituito con una soluzione diversa e più breve.
xnor
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.