Pyth Practice 2

21

Tiempo para otra práctica de Pyth. Presento aquí 8 declaraciones de problemas con una solución Pyth cada una. Estas soluciones están escritas por un principiante Pyth. Está bastante contento con estas soluciones, ya que son mucho más cortas que sus respuestas de Python. Sin embargo, su tarea es mostrarle mejor. Crea programas equivalentes pero más cortos.

Este es un desafío sobre los trucos y optimizaciones que se pueden usar al jugar golf en Pyth. Los golfistas Pyth pueden reconocer muchos de los trucos involucrados, que conducen a soluciones más cortas. Sin embargo, algunos problemas requerirán algunos enfoques inusuales que rara vez se usan. Algunos de los trucos que nunca he visto en la naturaleza. Pero ninguna solución requiere ningún error o comportamiento extraño, que no haya sido intencionado por el diseñador o diseñadores de Pyth. Todas las respuestas deben ser válidas para la confirmación Pyth más reciente ( 2b1562b ) a partir de la publicación de esta pregunta. Puedes usar el intérprete Pythpara las pruebas. Está actualizado en este momento y no espero grandes cambios en Pyth, que invalidarán las soluciones óptimas o harán posibles soluciones más cortas. El intérprete en línea también presenta la nueva referencia de personaje. Como es bastante nuevo, también puede (debería) usar los documentos antiguos , en caso de que algo sea incorrecto o falte.

Objetivo: las soluciones de referencia totalizan 81 bytes. Tu objetivo es superar eso lo más posible. El envío que resuelve los 8 problemas con el menor número total de bytes gana. Tiebreaker es la fecha de presentación.

Por supuesto, solo los envíos son válidos, que contienen soluciones para los 8 problemas. Puede usar la implementación de referencia, si no puede mejorar la puntuación de uno (o más) problema particular.

Sus soluciones deben imprimir exactamente el mismo resultado que las soluciones de referencia. Excepto por una nueva línea final opcional.

Como esta es una práctica de Pyth, solo se permiten los programas escritos en el lenguaje Pyth.

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. Puedes crear spoilers poniendo>! delante de cada línea, como:

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

Espero no haber elegido problemas demasiado difíciles o demasiado triviales. Con la esperanza de que muchos participantes y todos obtengan algunas nuevas ideas sobre Pyth. ¡Feliz golf!

Problema 1:

Cree la siguiente matriz de 9x9 e imprímala:

[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]

Solución de referencia ( Enlace ):

V9m?>dNd0S9 (11 bytes)

Problema 2:

Imprima todos los dígitos y todas las letras en líneas separadas:

0
...
9
a
...
z

Solución de referencia ( Enlace ):

VTN)VGN (7 bytes)

Problema 3:

Encuentre el palíndromo más pequeño lexicográficamente, que es lexicográficamente más grande o igual que una cadena de entrada que contiene letras minúsculas y es igual a la cadena de entrada.

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

Solución de referencia ( Enlace ):

hf&gTzqT_T^Glz (14 bytes)

Problema 4:

Compruebe, si un número está en el rango [0, número de entrada). Esto también debería funcionar para flotadores.

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

Solución de referencia ( Enlace ):

&gQ0<QE (7 bytes)

El formato de referencia es to be tested value<newline>end value. Sin embargo, puede elegir un formato de entrada diferente. Lo importante es que cumpla con el enunciado del problema y produzca los resultados correctos.

Problema 5:

Analiza una cadena de entrada con el formato "\ d + [a-zA-Z] +". Tenga en cuenta que el número realmente tiene que ser un número, no una cadena que contenga dígitos.

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

Solución de referencia ( Enlace ):

A.ggk\Az,sGH (12 bytes)

Problema 6:

Calcule la suma de números, que están separados por una o varias comas. Puede suponer que hay al menos un número en la cadena.

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

Solución de referencia ( Enlace ):

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

Problema 7:

Lea enteros positivos de la entrada hasta que obtenga el número 0. Imprima la suma de todos los números.

Solución de referencia ( Enlace ):

WJE=+ZJ)Z (9 bytes)

Problema 8:

Resuma todos los elementos de una matriz cuadrada, excepto los de la diagonal principal (esquina superior izquierda a esquina inferior derecha).

Solución de referencia ( Enlace ):

-ssQs.e@bkQ (11 bytes)
Jakube
fuente
Realmente me gusta la idea de preguntas específicas del idioma (y he votado a favor). ¿Pero pensé que las preguntas específicas del idioma estaban mal vistas en PPCG?
Luis Mendo
3
@LuisMendo Creo que las preguntas específicas del idioma solo están mal vistas, si la razón detrás de la pregunta es una aversión general contra los idiomas de golf como CJam, Pyth, ..., o porque el OP solo entiende ciertos idiomas. Esto aquí es un poco diferente. Esta pregunta está diseñada principalmente para mostrar algunas de las características más ocultas de un lenguaje popular (en PPCG). En cierto modo, es como una colección de trucos. No tiene sentido permitirlo en todos los idiomas. Aquí hay una meta-publicación sobre este tema: enlace
Jakube
En 6, ¿son los números enteros positivos de un solo dígito?
xnor
@xnor Puede suponer que son positivos, pero pueden consistir en más de un dígito. Cambiaré el caso de prueba.
Jakube
1
Estoy votando para cerrar esta pregunta como fuera de tema porque es un desafío de varias partes sin interacción entre las partes
pppery

Respuestas:

9

59 58 56 bytes

Problema 1:

j.tmLdS9Z (9 bytes)

Problema 2:

MTjG (5 bytes) (El primer carácter es una nueva línea)

Problema 3:

h.f_IZ1z (8 bytes)

Problema 4:

%IQE (4 bytes)

Problema 5:

,J.vz-zJ (8 bytes)

Problema 6:

srXz\,d7 (8 bytes)

Problema 7:

u+GE0 (5 bytes)

Problema 8:

ss.DR~hZQ (9 bytes)

isaacg
fuente
2

66 bytes

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

Maltysen
fuente
2

68 67 66 65 bytes

Tarea 1

10 bytes: V9m*d>dNS9

Tarea 2

5 bytes: \nMTjGdonde \nes una nueva línea

Tarea 3

9 bytes: h.fqZ_Z1z

Tarea 4

5 bytes: qQ%QE

Tarea 5

Solución de referencia, 12 bytes: A.ggk\Az,sGH

Tarea 6

7 bytes: ssMcz\,

Tarea 7

8 bytes: s<.Qx.Q0

Tarea 8

9 bytes: ss.DVQUlQ

lirtosiast
fuente
1

54 bytes

Aquí están las soluciones previstas. A excepción de la tarea 8, se encontraron todas las soluciones.

1. j.tmLdS9Z (9 bytes) usando el mapa para el mapa izquierdo, transponga y rellene con ceros
2. \ nMTjG (5 bytes) use líneas nuevas para el mapa
3. h.f_IZ1z (8 bytes) genere las posibles cadenas con .f
4 .% IQE (4 bytes) encontró un caso de uso, donde el operador invariable necesita 2 parámetros
5., J.vz-zJ (8 bytes) .v evalúa solo la primera instrucción de una cadena e ignora el resto
6. ssMcz \, ( 7 bytes) s "" = 0
7. u + GE0 (5 bytes) se reduce hasta que alcanza un número conocido
8. ss.DVQUQ (8 bytes) elimina la diagonal usando la vectorización

Jakube
fuente
Maldición, se me olvidó Ulo hizo len las listas!
lirtosiast
1
Agradable golpear a Isaac en su propio idioma.
Stan Strum
1

 60 59  57 bytes

1. 9 bytes :j.tmRdS9Z


2. 6 bytes :jbUTjG


3. 8 bytes :h.f_IZ1z


4. 4 bytes :}sEU


5. 8 bytes :,K.vz-zK


6. 7 bytes :ssMcz\,


7. 8 bytes :s<FxB.Q0


8. 11 10 7 bytes : ss.DVQU Versión anterior:ss.e+<bk>bh

Tenga en cuenta que desarrollé estas soluciones de forma completamente independiente de otras respuestas, aunque llego bastante tarde a la fiesta.

Sr. Xcoder
fuente
Buen intento El tercer problema es de 8 bytes.
Jakube
Y estoy bastante seguro de que la solución para el problema 8 no se compiló en ese momento. Pero no lo he probado.
Jakube
@Jakube ¡Oh, gracias por darte cuenta!
Sr. Xcoder