Самая короткая программа Python 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 символов ( 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
@ Клаудио спасибо за ответ. Правильная версия - print (eval (input (). Replace (* '+'))) # 34
Евгений

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