Đã có một vài thách thức liên quan đến việc nhân đôi mã nguồn: tại đây và đây . Nhiệm vụ chúng ta có ở đây khó hơn một chút, nhưng nên được thực hiện trong hầu hết mọi ngôn ngữ.
Trong thử thách này, bạn sẽ nhận một số nguyên dương tùy ý. Chương trình của bạn phải xuất số nguyên đó lên gấp đôi . Khi mã nguồn của bạn được nhân đôi, nó sẽ lấy một số nguyên dương và xuất ra bình phương .
Làm thế nào là mã nguồn của bạn tăng gấp đôi? Vâng, bạn có thể có nó theo cách của bạn . Điều đó có nghĩa là, bạn có thể chia mã nguồn của mình thành các chuỗi byte hoặc ký tự (hoặc mã thông báo trong các lang được mã hóa) với bất kỳ độ dài bằng nhau nào bạn muốn và lặp lại mỗi đoạn hai lần liên tiếp.
Đối với chương trình ban đầu ABCDEFGHIJKL
, (độ dài 12) ở đây là tất cả các chương trình nhân đôi có thể:
Chunk length | Doubled source code
-------------+-------------------------
1 | AABBCCDDEEFFGGHHIIJJKKLL
2 | ABABCDCDEFEFGHGHIJIJKLKL
3 | ABCABCDEFDEFGHIGHIJKLJKL
4 | ABCDABCDEFGHEFGHIJKLIJKL
6 | ABCDEFABCDEFGHIJKLGHIJKL
12 | ABCDEFGHIJKLABCDEFGHIJKL
Lưu ý rằng điều này có nghĩa là các chương trình có độ dài chính chỉ có thể được nhân đôi theo hai cách: mỗi ký tự được nhân đôi hoặc toàn bộ chương trình được lặp lại hai lần.
Quy tắc:
- Mã phải là một chương trình hoặc chức năng đầy đủ.
- Sơ hở tiêu chuẩn bị cấm.
- Phương pháp I / O tiêu chuẩn được cho phép.
- Tất cả các ký tự / byte, bao gồm cả khoảng trắng và dòng mới, được tính theo độ dài của mã và đóng góp vào các đoạn.
- Bạn có thể giả sử rằng đầu vào và hình vuông của nó có thể được biểu thị bằng kiểu int / số nguyên của ngôn ngữ của bạn.
- Bạn không thể giả sử một dòng mới hoặc nhân vật khác.
- Cung cấp kích thước khối của bạn trong tiêu đề sau khi đếm byte.
- Đây là mã golf , vì vậy các chương trình ngắn hơn là tốt hơn! Nếu hai chương trình có cùng độ dài, chương trình nào sử dụng độ dài khối nhỏ hơn sẽ thắng. (Nếu bạn có một chương trình dài hơn sử dụng độ dài đoạn nhỏ hơn, thì cũng đáng để đăng!)
- Nếu chương trình của bạn yêu cầu đầu vào / dòng thứ hai, bạn có thể không đưa ra giả định nào về giá trị của nó. Cụ thể, chương trình của bạn sẽ hoạt động nếu đầu vào thứ hai trống, giống như đầu tiên hoặc một số nguyên khác. Nếu chương trình của bạn không yêu cầu đầu vào / dòng thứ hai, bạn có thể bỏ qua hạn chế này.
5 -> 10
; mã kép : 5 -> 25 25
.
.0
ở cuối) không?