Programa Python A + B más corto con entrada y salida


10

Algunos de ustedes pueden decir que estoy perdiendo el tiempo, pero esta tarea no me da paz por más de 500 días. Se requiere escribir un programa en Python 3.x que tome dos números como entrada y muestre su suma. Los números se dan en el siguiente formato:

a b

Algunos ejemplos de casos de prueba:

100 500 -> 600
3 4     -> 7

La longitud del código se calcula con la fórmula max (longitud del código sin espacios ni pestañas o líneas nuevas, longitud del código / 4) . Conozco solo 2 soluciones, cada una de ellas tiene una longitud de 36 caracteres:

print(sum(map(int, input().split())))

y:

print(eval(input().replace(' ', '+')))

También sé que existe la solución con una longitud de 34 símbolos. Puedes consultarlo en este sitio web .


10
Si los espacios no cuentan, tengo una solución de 34 caracteres ( SHA1 es e3eb1f896cffc2dbff531ce5ba8fa25d34c22c76). No estoy seguro de si sería bueno publicar públicamente una solución a lo que parece ser una competencia de programación continua. ¿Tenemos una política del sitio sobre eso?
xnor

@ xnor, es una tarea muy antigua, nadie puede detenerte para resolver este problema aquí.
Evgeny

1
@xnor ya que tenemos una solución de 34 caracteres, ¿te importaría publicar la tuya? El SHA1 de Claudio es diferente al tuyo
Felipe Nardi Batista

2
@FelipeNardiBatista Es lo mismo con comillas dobles.
xnor

Respuestas:


5

Dada la pista correcta hacia la solución en el comentario a la misma pregunta formulada en stackoverflow (ver aquí ), lo he conseguido hasta 34 y sin ninguna limitación en el número de entrada u otros trucos necesarios:

print(eval(input().replace(*' +')))

Aquí un breve resumen de las diferentes soluciones conocidas actualmente:

print(eval(input().replace(' ','+'))) # 36

print(sum(map(int,input().split()))) # 36

print(eval(input().replace(*' +'))) # 34

print(sum(map(int,input()[::2]))) # 33 (limitado a números entre 0 y 9)

Tal vez podría considerarse trampa, pero tal vez no. Al menos no hay una regla para esto definido todavía, así que incluyémoslo en la colección de posibles soluciones:

import f;f.f() # 13

Para que esta solución funcione es necesario un script f.py disponible en un directorio de búsqueda para módulos de Python con el siguiente contenido:

def f():
    print(sum(map(int,input().split()))) 

Si lee la pregunta, tiene que funcionar en el sitio web dado, donde no habría un script externo para importar.
mbomb007

@ mbomb007: He leído la pregunta y no se menciona en la pregunta, ¿o puede proporcionar una cita de la pregunta que indique que sí?
Claudio

1
"Puede verificarlo [(el problema)] en este sitio web". Y en el sitio web, las especificaciones requieren información de STDIN. acmp.ru/index.asp?main=task&id_task=1 No puede crear otro módulo.
mbomb007

1
@Claudio gracias por la respuesta. La versión correcta es print (eval (input (). Replace (* '+'))) # 34
Evgeny

@Claudio, ¿puedo cerrar un duplicado de esta pregunta en stackoverflow?
Evgeny
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.