Programma A + B python più breve con input e output


10

Alcuni di voi potrebbero dire che sto sprecando il mio tempo, ma questo compito non mi dà pace per più di 500 giorni. È necessario scrivere un programma in Python 3.x che accetta due numeri come input e visualizza la loro somma. I numeri sono indicati nel seguente formato:

a b

Alcuni esempi di casi di test:

100 500 -> 600
3 4     -> 7

La lunghezza del codice viene calcolata con la formula max (lunghezza del codice senza spazi o tabulazioni o newline, lunghezza del codice / 4) . Conosco solo 2 soluzioni, ognuna ha una lunghezza di 36 caratteri:

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

e:

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

So anche che esiste una soluzione con lunghezza di 34 simboli. Puoi controllarlo su questo sito web .


10
Se gli spazi non contano, ho una soluzione a 34 caratteri ( SHA1 è e3eb1f896cffc2dbff531ce5ba8fa25d34c22c76). Non sono sicuro che sarebbe utile pubblicare pubblicamente una soluzione a quella che sembra essere una continua competizione di programmazione. Abbiamo una politica del sito su questo?
xnor

@ xnor, è un compito molto vecchio, nessuno può fermarti per risolvere questo problema qui.
Evgeny,

1
@xnor dato che abbiamo già una soluzione a 34 caratteri, ti dispiacerebbe pubblicare la tua? SHA1 di Claudio è diverso dal tuo
Felipe Nardi Batista,

2
@FelipeNardiBatista È la stessa cosa con le doppie virgolette.
xnor

Risposte:


5

Dato il suggerimento giusto verso la soluzione nel commento alla stessa domanda posta su StackOverflow (vedi qui ), ho ottenuto fino a 34 e senza alcuna limitazione sul numero di input o altri trucchi necessari:

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

Ecco un breve riassunto delle diverse soluzioni attualmente conosciute:

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

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

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

print(sum(map(int,input()[::2]))) # 33 (limitato a numeri tra 0 e 9)

Forse potrebbe essere considerato un imbroglio, ma forse no. Almeno non esiste alcuna regola per questo definito, quindi includiamolo nella raccolta di possibili soluzioni:

import f;f.f() # 13

Per far funzionare questa soluzione è necessario uno script f.py disponibile in una directory di ricerca per i moduli di Python con il seguente contenuto:

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

Se leggi la domanda, deve funzionare sul sito Web indicato, dove non ci sarebbe uno script esterno da importare.
mbomb007,

@ mbomb007: ho letto la domanda e non è menzionata nella domanda, oppure puoi fornire una citazione dalla domanda affermando che lo è?
Claudio,

1
"Puoi controllarlo [(il problema)] su questo sito web." E sul sito Web, le specifiche richiedono input da STDIN. acmp.ru/index.asp?main=task&id_task=1 Non puoi creare un altro modulo.
mbomb007,

1
@Claudio grazie per la risposta. La versione corretta è print (eval (input (). Replace (* '+'))) # 34
Evgeny

@Claudio, posso chiudere i duplicati di questa domanda su StackOverflow?
Evgeny,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.