Найкоротший пітон A + B програма з входом і виходом


10

Хтось із вас може сказати, що я витрачаю свій час, але це завдання не дає мені спокою більше 500 днів. Потрібно написати програму в Python 3.x, яка приймає два числа як вхідні дані та відображає їх суму. Номери наводяться у такому форматі:

a b

Деякі приклади тестових випадків:

100 500 -> 600
3 4     -> 7

Довжина коду обчислюється за формулою max (довжина коду без пробілів чи вкладок чи нових рядків, довжина коду / 4) . Я знаю лише 2 рішення, кожне з яких має довжину 36 символів:

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

і:

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

Також я знаю, що існує рішення довжиною 34 символи. Ви можете перевірити це на цьому веб-сайті .


10
Якщо пробіли не враховуються, у мене є 34-char рішення ( SHA1 є e3eb1f896cffc2dbff531ce5ba8fa25d34c22c76). Я не впевнений, хоча було б публічно розмістити рішення щодо того, що, здається, є конкуренцією з програмування. Чи є у нас політику щодо цього сайту?
xnor

@ xnor, це дуже стара задача, тут ніхто не може зупинити вас, щоб вирішити цю проблему.
Євген

1
@xnor, оскільки ми вже отримали 34-чаркове рішення, чи не могли б ви розмістити своє? SHA1 Клаудіо відрізняється від вашого
Феліпе Нарді Батіста

2
@FelipeNardiBatista Це те саме з подвійними цитатами.
xnor

Відповіді:


5

З огляду на правильну підказку до вирішення в коментарі до того ж питання, яке задають на stackoverflow (див. Тут ), я зрозумів це прямо до 34 та без будь-яких обмежень щодо вхідного номера чи інших необхідних хитрощів:

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

Ось короткий підсумок відомих на даний момент різних рішень:

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

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

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

print(sum(map(int,input()[::2]))) # 33 (обмежено числами від 0 до 9)

Можливо, це можна вважати обманом, а може й ні. Принаймні для цього немає жодного правила, тому включимо його до колекції можливих рішень:

import f;f.f() # 13

Необхідний, щоб це рішення працювало, це сценарій f.py, доступний у каталозі пошуку для модулів Python із наступним вмістом:

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

Якщо ви читаєте питання, він повинен працювати на даному веб-сайті, де не було б зовнішнього сценарію для імпорту.
mbomb007

@ mbomb007: Я прочитав питання, і це не згадується у запитанні, чи ви можете надати посилання з питання, вказуючи, що воно є?
Клаудіо

1
"Ви можете перевірити це [(проблема)] на цьому веб-сайті." А на веб-сайті специфікації вимагають введення даних від STDIN. acmp.ru/index.asp?main=task&id_task=1 Ви не можете створити інший модуль.
mbomb007

1
@Claudio дякую за відповідь. Правильна версія - це print (eval (input (). Substitute (* '+'))) # 34
Євген

@Claudio, чи можу я закрити дублікат цього питання на stackoverflow?
Євгеній
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.