Najkrótszy program A + B w Pythonie z wejściem i wyjściem


10

Niektórzy z was mogą powiedzieć, że marnuję czas, ale to zadanie nie daje mi spokoju na więcej niż 500 dni. Konieczne jest napisanie programu w języku Python 3.x, który pobiera dwie liczby jako dane wejściowe i wyświetla ich sumę. Liczby podane są w następującym formacie:

a b

Niektóre przykładowe przypadki testowe:

100 500 -> 600
3 4     -> 7

Długość kodu jest obliczana za pomocą formuły max (długość kodu bez spacji, tabulatorów lub znaków nowej linii, długość kodu / 4) . Znam tylko 2 rozwiązania, każde z nich ma długość 36 znaków:

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

i:

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

Wiem też, że istnieje rozwiązanie o długości 34 symboli. Możesz to sprawdzić na tej stronie .


10
Jeśli spacje się nie liczą, mam rozwiązanie 34- znakowe ( SHA1 to e3eb1f896cffc2dbff531ce5ba8fa25d34c22c76). Nie jestem jednak pewien, czy dobrze byłoby opublikować publiczne rozwiązanie tego, co wydaje się być ciągłym konkursem programistycznym. Czy mamy zasady dotyczące witryny?
xnor

@ xnor, to bardzo stare zadanie, nikt nie może cię powstrzymać przed rozwiązaniem tego problemu tutaj.
Evgeny

1
@ xnor, ponieważ mamy już rozwiązanie 34-znakowe, czy mógłbyś opublikować swoje? SHA1 Claudio jest inny niż twój
Felipe Nardi Batista

2
@FelipeNardiBatista To samo z podwójnymi cudzysłowami.
xnor

Odpowiedzi:


5

Biorąc pod uwagę właściwą wskazówkę dotyczącą rozwiązania w komentarzu do tego samego pytania zadawanego przy przepełnieniu stosu (patrz tutaj ), mam go aż do 34 i bez żadnych ograniczeń liczby wejściowej lub innych niezbędnych sztuczek:

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

Oto krótkie podsumowanie znanych obecnie różnych rozwiązań:

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

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

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

print(sum(map(int,input()[::2]))) # 33 (ograniczone do liczb od 0 do 9)

Może to można uznać za oszustwo, ale może nie. Przynajmniej nie ma reguły dla tego zdefiniowanego, więc włączmy ją do zbioru możliwych rozwiązań:

import f;f.f() # 13

Do działania tego rozwiązania wymagany jest skrypt f.py dostępny w katalogu wyszukiwania modułów Pythona o następującej treści:

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

Jeśli przeczytasz pytanie, musi ono działać na danej stronie internetowej, na której nie będzie zewnętrznego skryptu do zaimportowania.
mbomb007

@ mbomb007: Przeczytałem pytanie i nie jest ono wymienione w pytaniu, czy możesz podać cytat z pytania stwierdzającego, że jest?
Claudio

1
„Możesz to sprawdzić [(problem)] na tej stronie.” A na stronie internetowej specyfikacje wymagają danych wejściowych STDIN. acmp.ru/index.asp?main=task&id_task=1 Nie można utworzyć kolejnego modułu.
mbomb007

1
@Claudio dziękuję za odpowiedź. Prawidłowa wersja to print (eval (input (). Replace (* '+'))) # 34
Evgeny

@Claudio, czy mogę zamknąć duplikat tego pytania przy stosie przepływu?
Evgeny,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.