Stai lavorando come programmatore per una banca.
Il tuo compito è scrivere un programma che gestisca le transazioni da un conto bancario a un altro.
Il programma dovrebbe effettuare le seguenti operazioni:
- Esegui in un ciclo infinito in attesa di input.
L'input è composto da 3 numeri:
Accountnumber1, Accountnumber2 e x la quantità di denaro.
ad es. 999222 777333 500 - Controlla se i numeri di conto e x sono validi.
L'input è valido se i numeri di conto non sono uguali ed esistono nel database e se x è maggiore di zero, - Trasferisci i soldi dal conto1 al conto2, ma solo se il conto1 ha abbastanza soldi.
Gli account non possono andare in negativo. - Se tutto va bene, stampa qualcosa del tipo "Trasferito x $ da numero1 a numero2"
- se qualcosa va storto, ad esempio perché i numeri di conto non sono validi, stampare un messaggio di errore.
- Arresta se l'ingresso è 0
Il database contiene i seguenti conti bancari:
999222: 10000.56$
888333: 335.13$
555222: 56.0$
222111: 123.55$
123456: 0.0$
Esempio di Python 2 semplice:
account_numbers = ["999222", "888333", "555222", "222111", "123456"]
account_money = [10000.56, 335.13, 56.0, 123.55, 0.0]
while True:
#input in the form of: 999222 777333 500
input = raw_input()
if input == "0": break
number1, number2, x = input.split()
x = float(x)
if x <= 0:
print "Invalid request!"
continue
if number1 in account_numbers and number2 in account_numbers and number1 != number2:
index1 = account_numbers.index(number1)
index2 = account_numbers.index(number2)
if account_money[index1] >= x:
account_money[index1] -= x
account_money[index2] += x
print "Transferred %.2f$ from %s to %s" % (x, number1, number2)
else:
print "Not enough money in account %s!" % (number1)
else:
print "Invalid account number(s)!"
TWIST: il
tuo numero di conto bancario è 123456.
Hai esattamente 0,0 $ nel tuo conto.
Vuoi cambiarlo manipolando il tuo programma:
il programma dovrebbe fare esattamente quello che dovrebbe fare, ma dovrebbe anche trasferire un po 'di denaro gratuito sul tuo account.
Devi stare attento però. Il tuo supervisore esaminerà il tuo codice e non sarà contento se vede qualcosa di sospetto. Conosce gli Standard Loop Holes , quindi non provarci nemmeno.
Inoltre, i soldi che ti dai non dovrebbero essere troppo. Sarebbe sospetto se il tuo denaro aumenta troppo rapidamente. Non essere avido.
Il tuo codice dovrebbe essere il più semplice e chiaro possibile, cerca di evitare pesanti offuscamenti.
Questo è un concorso di popolarità, la risposta con il maggior numero di voti vince.
Nota: si prega di generare il saldo di ciascun account alla fine del programma, in modo che possiamo vedere quanti soldi hai guadagnato con il tuo duro lavoro (semplicemente per dimostrare che il tuo programma ha effettivamente fatto qualcosa).
EDIT: per chiarire
La sfida non è quella di scrivere un programma in grado di gestire un database di grandi dimensioni e molte transazioni. La sfida è far sembrare che il programma faccia solo quello che dovrebbe fare, ma in realtà no.
Ad esempio, se l'input è 999222 777333 500
:
Quindi aggiungere, se possibile, 500 all'account 777333 e sottrarre 500 dall'account 999222. Non è necessario "rubare" il denaro da tali account. Puoi "generare" il denaro per il tuo account semplicemente aumentandolo in qualche modo nel tuo codice.
Quanto dipende da te, ma puoi presumere che vuoi guadagnare almeno 0,1 $ e max. 10 $ per ogni dato input. Sarebbe sospetto se all'improvviso ne avessi milioni sul tuo account. Non devi preoccuparti dell'imprecisione in virgola mobile, ma puoi usarla per aumentare i tuoi soldi.
Ogni utente svolge il ruolo di supervisore.
Se il trucco è difficile da individuare, vota la risposta.