Bạn đang làm việc như một lập trình viên cho một ngân hàng.
Nhiệm vụ của bạn là viết một chương trình xử lý các giao dịch từ tài khoản ngân hàng này sang tài khoản khác.
Chương trình nên làm như sau:
- Chạy trong một vòng lặp vô hạn chờ đầu vào.
Đầu vào bao gồm 3 số:
Accountnumber1, Accountnumber2 và x số tiền.
ví dụ: 999 222 777333 500 - Kiểm tra xem số tài khoản và x có hợp lệ không.
Đầu vào là hợp lệ nếu số tài khoản không giống nhau và tồn tại trong cơ sở dữ liệu của bạn và nếu x lớn hơn 0, - Chuyển tiền từ tài khoản1 sang tài khoản2, nhưng chỉ khi tài khoản1 có đủ tiền.
Tài khoản không được phép đi vào tiêu cực. - Nếu mọi thứ đều ổn, hãy in một cái gì đó như "Đã chuyển x $ từ số 1 sang số 2"
- nếu có lỗi xảy ra, ví dụ vì số tài khoản không hợp lệ, hãy in thông báo lỗi.
- Dừng lại nếu đầu vào bằng 0
Cơ sở dữ liệu chứa các tài khoản ngân hàng sau:
999222: 10000.56$
888333: 335.13$
555222: 56.0$
222111: 123.55$
123456: 0.0$
Ví dụ đơn giản về Python 2:
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:
Số tài khoản ngân hàng của bạn là 123456.
Bạn có chính xác 0,0 $ trong tài khoản của mình.
Bạn muốn thay đổi điều đó bằng cách thao túng chương trình của mình:
Chương trình nên thực hiện chính xác những gì nó phải làm, nhưng cũng nên chuyển một số tiền miễn phí vào tài khoản của bạn.
Bạn phải cẩn thận mặc dù. Người giám sát của bạn sẽ xem mã của bạn và anh ta sẽ không hài lòng nếu anh ta thấy bất cứ điều gì đáng ngờ. Anh ta biết về các vòng lặp tiêu chuẩn , do đó, thậm chí không thử.
Ngoài ra, số tiền bạn đưa cho bản thân không nên quá nhiều. Sẽ là đáng ngờ nếu tiền của bạn tăng quá nhanh. Đừng tham lam.
Mã của bạn nên đơn giản và rõ ràng nhất có thể, cố gắng tránh bị xáo trộn nặng.
Đây là một cuộc thi phổ biến, câu trả lời với nhiều chiến thắng nhất.
Lưu ý: Vui lòng xuất số dư của từng tài khoản vào cuối chương trình của bạn, để chúng tôi có thể thấy bạn đã kiếm được bao nhiêu tiền với công việc khó khăn của mình (đơn giản chỉ ra rằng chương trình của bạn thực sự đã làm gì đó).
EDIT: Để làm rõ
Thách thức không phải là viết một chương trình có thể xử lý một cơ sở dữ liệu lớn và nhiều giao dịch. Thách thức là làm cho chương trình trông giống như nó chỉ làm những gì nó phải làm, nhưng thực tế thì không.
Ví dụ: nếu đầu vào là 999222 777333 500
:
Sau đó, thêm 500, vào tài khoản 777333 và trừ 500 từ tài khoản 999222. Bạn không phải "đánh cắp" tiền từ các tài khoản đó. Bạn có thể "tạo" tiền cho tài khoản của mình bằng cách tăng bằng cách nào đó trong mã của bạn.
Bao nhiêu là tùy thuộc vào bạn, nhưng bạn có thể cho rằng bạn muốn kiếm được ít nhất 0,1 đô la và tối đa. 10 đô la cho mỗi đầu vào nhất định. Sẽ là đáng ngờ nếu bạn đột nhiên có hàng triệu tài khoản của bạn. Bạn không phải lo lắng về sự thiếu chính xác của dấu phẩy động, nhưng bạn có thể sử dụng nó để tăng tiền của mình.
Mỗi người dùng đóng vai trò của người giám sát.
Nếu lừa khó phát hiện ra câu trả lời.