Thị trường chứng khoán là tất cả về tốc độ của kiến thức. Không giống như những thách thức trước đây, giá cổ phiếu hiện tại không phải là ngẫu nhiên: nó được xác định bởi những người chơi trò chơi. Nếu bạn có thể xác định một cổ phiếu có giá thấp hơn bất kỳ ai khác, thì bạn đã tự viết cho mình một chương trình kiếm tiền.
Giá đề cập đến số tiền mà mọi người đang giao dịch cổ phiếu, trong khi Giá trị đề cập đến số tiền mà cổ phiếu có giá trị vào cuối trò chơi.
Mỗi người chơi bắt đầu với 1000 mỗi cổ phiếu và 0 giá trị ròng tương đối. Mỗi cổ phiếu có một giá trị bí mật, và điểm số của bạn vào cuối trò chơi là(stockValue for each ownedStock) + netWorth
. Giá trị ròng của bạn có thể là âm. Trong một trò chơi N-player, có N cổ phiếu.
Các bước:
Trò chơi làm theo các bước sau:
- Bạn được trao giá trị bí mật của một cổ phiếu.
- Bạn đưa ra lời đề nghị bán X cổ phiếu Y với giá $ Z
- Tất cả người chơi được cung cấp các ưu đãi và mỗi người có thể chọn một để chấp nhận
- Tất cả người chơi được thông báo về các đề nghị được chấp nhận
- Quay trở lại bước 2
Mỗi bước được đưa ra chi tiết dưới đây:
void secretValue(int stockType, int value)
:- Giá trị bạn học được không được tiết lộ cho bất kỳ người chơi khác.
- Giá trị nằm giữa
0
và1000
- Giá trị thấp giống như xảy ra hơn giá trị cao (phân phối đồng đều bình phương)
Offer makeOffer(List<Stock> currentStock)
- Bạn có thể trở lại
null
để không cung cấp.
- Bạn có thể trở lại
Offer acceptOffer(List<Offer> offers)
- Bạn có thể quay lại
null
để chấp nhận không ai trong số họ - Nếu không có đề nghị có sẵn, điều này sẽ không được gọi
- Nếu bạn chấp nhận, giá trị ròng của bạn giảm xuống $ Z (có thể âm) và nhận X của cổ phiếu Y. Điều ngược lại xảy ra với người bán.
- Nếu bạn chấp nhận đề nghị, việc trao đổi sẽ diễn ra ngay lập tức và ưu đãi sẽ bị xóa để người chơi bổ sung không thể chấp nhận.
- Bạn có thể quay lại
void acceptedOffers(List<Offer> offers)
- Bao gồm các đề nghị được chấp nhận của bạn là tốt
Biến tĩnh hoặc ghi vào tệp không được phép. (Không có dữ liệu liên tục từ trò chơi này sang trò chơi khác) Các ứng cử viên không nghiêm trọng được cho phép.
Giao diện:
public final class Stock {
public Stock(int stockType, int amount);
public int getType();
public int getAmount();
public Stock minus(Stock other);
public Stock plus(Stock other);
public Stock minus(int amount);
public Stock plus(int amount);
public Stock setAmount(int amount);
}
public class Offer {
public Offer(Stock offer, int payment);
public Stock getOffer();
public int getPayment();
}
Các bài nộp không phải của Java:
- Tất cả các cuộc gọi bao gồm hai dòng: Dòng đầu tiên là chức năng được gọi là:
SecretValue
,MakeOffer
,AcceptOffer
,AcceptedOffers
,SetRandom
, và dòng thứ hai chứa các dữ liệu thực tế. - Cổ phiếu được định dạng với một
:
dấu phân cách :stockType:stockAmount
. - Phiếu mua hàng được định dạng với một
@
dấu phân cách:offer@price
- Danh sách được định dạng với một
;
dấu phân cách SecretValue
được định dạng với một:
dấu phân cách:stockType:value
RandomSeed
được sử dụng để làm cho trình của bạn xác định. Nếu trình của bạn sử dụng tính ngẫu nhiên, vui lòng sử dụng giá trị số nguyên được truyền dưới dạng hạt giống!- Tất cả các cuộc gọi chức năng cần một phản ứng. Nếu phản hồi là
null
hoặcvoid
, trả về một chuỗi trống. - Vui lòng bao gồm một
command.txt
cung cấp các đối số dòng lệnh để chạy trình của bạn
Chấm điểm
Các trò chơi bao gồm 1000 lượt sẽ được chạy nhiều lần. Người chơi sẽ được ghi điểm theo hệ thống ELO và kết hợp với những người chơi có trình độ kỹ năng tương tự. Người chơi có số điểm ELO cuối cùng cao nhất sẽ thắng! (Tôi đã sửa đổi hệ thống để mỗi trò chơi, điểm ELO được cập nhật cho mỗi cặp người chơi)
Bộ điều khiển bao gồm một trình tải xuống tự động, vì vậy hãy bắt đầu gửi của bạn với một tiêu đề : Name, Language
. Nếu trình của bạn không bằng Java, mỗi khối mã sẽ bắt đầu bằng tên của tệp. (không bao gồm tệp lệnh, phải là khối đầu tiên trong bài viết của bạn)
Đang chạy
Có 2 cách để chạy dự án này:
Tải về mã nguồn, biên dịch và chạy. Bạn có thể tìm thấy nguồn trên Github . Chạy
git clone --recursive https://github.com/nathanmerrill/StockExchange.git
Tải về tệp thực thi JAR. Đệ trình nên được đặt trong
/submissions
thư mục làm việc hiện tại của bạn trong thư mục. Bạn có thể tải xuống chỉ JAR , chỉ các bài nộp hoặc cả hai
run
Truyền vào để chạy dự án (tùy chọn mặc định) hoặc chuyển qua download
để tải xuống tất cả các bài nộp cho đến nay từ câu hỏi này.
Bảng điểm
1. 1308.1220497323848 Cheater
2. 1242.0333695640356 InsideTrader
3. 1158.3662658295411 UncleScrooge
4. 1113.8344000358493 BlackMarket
5. 1051.8370015258993 DartMonkey
6. 983.0545446731494 WarGamer
7. 939.457423938002 Spammer
8. 901.4372529538886 DumbBot
9. 859.0519326039137 ShutUpAndTakeMyMoney
10. 852.9448222849587 VincentKasuga
11. 718.2112067329083 Profiteer