Viết chương trình sẽ tạo ra các hành vi khác nhau trên càng nhiều nền tảng khác nhau càng tốt. Mỗi nền tảng khác nhau sẽ thưởng một điểm (bao gồm cả nền tảng ban đầu, nghĩa là bạn không thể ghi ít hơn 1 *). Các cơ chế dành cho việc xác định nền tảng đích / thực thi (ví dụ: thông qua các câu lệnh biên dịch nền tảng hoặc các API như Môi trường .NET.OSVersion.Pl platform) không được sử dụng. Câu trả lời với số điểm cao nhất sẽ giành chiến thắng (trong đó upvotes là tiebreakers).
Ví dụ, hãy xem xét chương trình sau đây bằng ngôn ngữ Blub : print (1+2)
. Nếu chương trình này được in 3
trên mọi nền tảng mà nó được biên dịch và chạy, thì điểm của nó sẽ là 1. Tuy nhiên, nếu vì bất kỳ lý do gì, nó sẽ được in 4
trên PDP-11, điểm của nó sẽ là 2. Vv. Ví dụ, đoạn mã C là một mục không hợp lệ : #ifdef WIN32 ... #endif
.
Định nghĩa / chi tiết:
Nền tảng khác biệt: sự kết hợp của a) kiến trúc phần cứng b) HĐH và số phiên bản MAJOR của nó (ví dụ 1.0.0 và 1.1.0 được coi là cùng một HĐH)
Hành vi khác nhau: hai hành vi giống nhau nếu chúng tạo ra các hiệu ứng phụ tương tự nhau (ví dụ: tạo cùng một tệp có cùng nội dung) hoặc nếu hiệu ứng phụ là lỗi cùng loại. Ví dụ: nếu một chương trình segfaults trên hai nền tảng riêng biệt, nhưng thông báo segfault khác nhau trên các nền tảng này, thì đây vẫn được coi là hành vi tương tự; trong khi một chương trình tạo ra lỗi phân chia 0 trên một nền tảng và lỗi tràn ngăn xếp (xem những gì tôi đã làm ở đó ?;) lỗi trên một nền tảng khác đang tạo ra hành vi khác nhau.
Tất cả các hành vi không xác định được coi là tương đương.
Chương trình phải được gọi theo cách tương đương trên tất cả các nền tảng (tuy nhiên, điều này có nghĩa là bạn có thể truyền tham số dòng lệnh nếu bạn muốn)
* Chà, tôi đoán bạn sẽ đạt điểm 0 nếu chương trình của bạn chạy trên nền tảng 0. Nhưng ừm ... Vâng, đừng bận tâm.
1
trên Windows và2
trên OSX, với chi tiết tôi chạy nó dưới dạng tập lệnh Python trên Windows và chương trình C trên OSX thì sao?