Práctica de golf: Pyth [cerrado]


10

Este es un desafío sobre los trucos y optimizaciones que se pueden usar al jugar golf en Pyth. Los golfistas de Pyth pueden reconocer muchos de los trucos involucrados. Sin embargo, pueden estar involucrados enfoques y construcciones desconocidas, así que eche un vistazo a los Consejos de Pyth , así como a la Referencia del personaje de Pyth si se queda atascado. Las soluciones se pueden probar aquí .

Objetivo: hay 8 problemas, cada uno con un fragmento de Pyth para que lo optimices. Tu objetivo es crear algo equivalente pero más corto. Las soluciones de referencia totalizan 80 bytes. Tu objetivo es superar eso lo más posible.

El ganador irá al envío que resuelve los 8 problemas con el menor número total de bytes. Tiebreaker es una publicación anterior.

Respuesta: Por favor, estropee toda su respuesta, excepto su puntaje total. Se pretende que no mire las respuestas de otras personas antes de enviar las suyas.

Cada envío debe responder a cada problema y dar el recuento de bytes correspondiente, pero puede usar la implementación de referencia si no puede mejorarla.

Detalles: si la pregunta requiere un cierto valor o salida, qse desea igualdad, por lo tanto, 1y !0son equivalentes. Si la pregunta requiere probar si una condición es verdadera, la salida debe ser verdadera si la condición es verdadera y falsa si la condición es falsa, pero no tiene restricciones más allá de eso. No puede intercambiar verdadero por falso y falso por verdadero. Si la pregunta requiere que se imprima algo, no se puede imprimir nada más excepto una nueva línea final.

Todas las respuestas deben ser válidas para la confirmación Pyth más reciente a partir de la publicación de esta pregunta.

Problema 1: dado un conjunto en Q, genera una lista que contiene los elementos de Q en cualquier orden.

; 3 bytes
f1Q

Problema 2: muestra la lista [1, 1, 0, 0, 1, 1, 0].

; 9 bytes
[J1JZZJJZ

Problema 3: dado un entero positivo en Q, pruebe si todos los dígitos de Q son positivos (no cero).

; 7 bytes
!f!TjQT

Problema 4: dada una cadena en z, pruebe si z contiene comillas - "o '.

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

Problema 5: Asigne Q = 1 a 'Win', Q = 0 a 'Tie' y Q = -1 a 'Lose'.

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

Problema 6: Imprimir 0123456789.

; 6 bytes
sm`dUT

Problema 7: Dada una cadena en z, cuente el número de inversiones.

(Índices iy jforman una inversión si i < jpero z[i] > z[j]).

; 17 bytes
ssmm>@zd@zkrdlzUz

Problema 8: Dada una lista en z, cuente el número de elementos adyacentes repetidos.

; 9 bytes
lfqFT.:z2

@ user1737909 Esa respuesta es correcta. f1Qfiltra Quna función que siempre es verdadera, por lo que siempre genera cada elemento del conjunto fgenera una lista que cumple el objetivo en esa pregunta.
isaacg

Estoy cerrando esta pregunta como fuera de tema porque los desafíos de varias partes sin interacción entre las partes están prohibidos. meta.codegolf.stackexchange.com/a/8464/45941
Martin Ender

Respuestas:


9

52 bytes

Problema 1: 2 bytes

    SQ

Problema 2: 5 bytes
    jC\f2

Problema 3: 4 bytes
    -0`Q
Problema 4: 6 bytes
    @z+N\'
Problema 5: 17 bytes
    %3>"LTWoiisene"hQ
o
    @c3"LoseTieWin"hQ
Problema 6: 3 bytes
    pMT
Problema 7: 9 bytes
    s>R_d.cz2
Problema 8: 6 bytes
    sqVztz
La combinación de la solución de @ xnor para el problema 4 con la mía (ambos de 6 bytes) da una buena solución de 4 bytes . Entonces 48 bytes son posibles.


No puede combinar su solución con la de xnor, porque la de xnor no es válida (vea mi comentario sobre su respuesta).
orlp

@orlp * combinando todo menos las cosas inválidas ;-) Agregué la solución en mi publicación.
Jakube

Ah, ya veo :) Supongo que tenía 6 bytes (y contando) peor que lo óptimo.
orlp

aaah! ¡Gracias! No me había dado cuenta :). Quitaré eso.
Ven

7

54 bytes

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


Muy bien golf :-)
Vedaad Shakib

¿Es válida su respuesta para la tarea 4 ya que en Falsey solo imprime una línea en blanco?
Maltysen

@Maltysen Sí, porque el valor verdadero de ""es Falso porque not ""es Verdadero.
orlp

3

58 bytes

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


No lo sabía V(aunque todavía no lo entiendo completamente, ya que estás haciendo operaciones vectoriales en operandos de longitud desigual), así que estoy excusado por eso, pero realmente debería haber pensado en C\f= /
orlp

@orlp Vtrunca automáticamente las entradas desiguales
Maltysen

3

Esta publicación es para la acumulación de las mejores soluciones en todas las respuestas. Edite en la solución y al respondedor que primero encontró esa solución si hay alguna mejora.

48 bytes

1. SQ- 2 bytes, primero publicado por @orlp
2. jC\f2- 5 bytes, primero publicado por @Maltysen
3. -0`Q- 4 bytes, primero publicado por @Jakube
4. @z`N- 4 bytes, mezcla de @xnor y @Jakube, pero no en alguna respuesta aún.
(Tampoco lo vi al escribir la pregunta)
5. @c3"LoseTieWin"hQ- 17 bytes, primero publicado por @orlp
6. pMT- 3 bytes, primero publicado por @Jakube
7. s>M.cz2- 7 bytes, primero publicado por @orlp
8. sqVtzz- 6 bytes, primero publicado por @Maltysen


¿Estamos restringiendo a las versiones de Pyth anteriores a la pregunta?
Optimizador

1
"Todas las respuestas deben ser válidas para el último compromiso de Pyth a partir de la publicación de esta pregunta". En resumen, me interesaría saber en qué estabas pensando. @Optimizer
isaacg

Pyth siempre está evolucionando, ¿verdad? (a un ritmo mucho más rápido que otros idiomas de golf). Por lo tanto, es muy probable que este número (48) vaya fácilmente a menos de 40 en un futuro próximo. Y dado que este es un desafío de práctica, lo ideal sería practicar con la última versión de Pyth para los desafíos más nuevos.
Optimizador

2

57 bytes

1. (2) SQOrdenar.
2. (5) jC\f2 Convertir fa ASCII val luego base 2.
3. (5) /`Q`0Contar '0'en la cadena de números.
4. (5) @z`\'Toma la intersección establecida de la cadena con "'".
5. (18) @c"Tie Win Lose"dQHace la lista con división. No me puse a trabajar.
6. (4) jkUTÚnete range(10). Aparentemente se convierte en una cadena automáticamente.
7. (9) sm>d_d.:zCuenta subcadenas que son mayores que su reverso.
8. (9) l@C,zz.:zLongitud de intersección de sublistas de la lista y pares de elementos en la lista. Misma longitud que la solución de referencia.


Su solución para el n. ° 4 no es válida. Por ejemplo, la cadena te\\stes un falso positivo.
orlp

@orlp Lo reemplazó con una solución diferente y más corta.
xnor
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.