Kürzestes Python A + B-Programm mit Ein- und Ausgabe


10

Einige von Ihnen mögen sagen, dass ich meine Zeit verschwende, aber diese Aufgabe gibt mir nicht mehr als 500 Tage Frieden. Es ist erforderlich, ein Programm in Python 3.x zu schreiben , das zwei Zahlen als Eingabe verwendet und deren Summe anzeigt. Die Nummern sind im folgenden Format angegeben:

a b

Einige Beispieltestfälle:

100 500 -> 600
3 4     -> 7

Die Länge des Codes wird mit der Formel max berechnet (Codelänge ohne Leerzeichen oder Tabulatoren oder Zeilenumbrüche, Codelänge / 4) . Ich kenne nur 2 Lösungen, jede hat eine Länge von 36 Zeichen:

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

und:

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

Ich weiß auch, dass es eine Lösung mit einer Länge von 34 Symbolen gibt. Sie können es auf dieser Website überprüfen .


10
Wenn Leerzeichen nicht zählen, habe ich eine 34- Zeichen -Lösung ( SHA1 ist e3eb1f896cffc2dbff531ce5ba8fa25d34c22c76). Ich bin mir nicht sicher, ob es gut wäre, öffentlich eine Lösung für einen scheinbar anhaltenden Programmierwettbewerb zu veröffentlichen. Haben wir eine Site-Richtlinie dazu?
xnor

@ xnor, es ist eine sehr alte Aufgabe, niemand kann dich aufhalten, um dieses Problem hier zu lösen.
Evgeny

1
@xnor, da wir bereits eine 34-Zeichen-Lösung haben, würde es Ihnen etwas ausmachen, Ihre zu veröffentlichen? Claudios SHA1 ist anders als deins
Felipe Nardi Batista

2
@FelipeNardiBatista Es ist dasselbe mit doppelten Anführungszeichen.
xnor

Antworten:


5

Angesichts des richtigen Hinweises auf die Lösung im Kommentar zu derselben Frage, die beim Stapelüberlauf gestellt wurde (siehe hier ), habe ich ihn auf 34 reduziert , ohne Einschränkungen hinsichtlich der Eingabenummer oder anderer erforderlicher Tricks:

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

Hier eine kurze Zusammenfassung der derzeit bekannten verschiedenen Lösungen:

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

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

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

print(sum(map(int,input()[::2]))) # 33 (begrenzt auf Zahlen zwischen 0 und 9)

Vielleicht könnte man es als Betrug betrachten, aber vielleicht auch nicht. Zumindest ist hierfür noch keine Regel definiert. Nehmen wir sie daher in die Sammlung möglicher Lösungen auf:

import f;f.f() # 13

Damit diese Lösung funktioniert, ist ein Skript f.py erforderlich, das in einem Suchverzeichnis nach Python-Modulen mit folgendem Inhalt verfügbar ist:

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

Wenn Sie die Frage lesen, muss sie auf der angegebenen Website funktionieren, auf der kein externes Skript importiert werden muss.
mbomb007

@ mbomb007: Ich habe die Frage gelesen und sie wird in der Frage nicht erwähnt, oder können Sie aus der Frage zitieren, dass dies der Fall ist?
Claudio

1
"Sie können es [(das Problem)] auf dieser Website überprüfen." Und auf der Website erfordern die Spezifikationen die Eingabe von STDIN. acmp.ru/index.asp?main=task&id_task=1 Sie können kein weiteres Modul erstellen.
mbomb007

1
@Claudio danke für die Antwort. Die richtige Version ist print (eval (input (). Replace (* '+'))) # 34
Evgeny

@Claudio, kann ich ein Duplikat dieser Frage bei Stackoverflow schließen?
Evgeny
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.