Thử thách
Viết chương trình / hàm không trống p
, được cung cấp một chuỗi đầu vào không trống s
, xuất ra vị trí xuất hiện đầu tiên của mỗi ký tự s
trong mã nguồn của p
.
Ví dụ: nếu chương trình của bạn là
main() { cout << magic << cin }
^0 ^5 ^10 ^15 ^20 ^25
và nó nhận được một đầu vào abcd{
, đầu ra phải là
[1, x, 9, x, 7] (0-based) [2, x, 10, x, 8] (1-based)
Tại đây, x
đại diện cho bất kỳ đầu ra đó không phải là một kết quả hợp lệ cho một vị trí ký tự (ví dụ, một số âm, 0
nếu bạn sử dụng 1 dựa trên lập chỉ mục, NaN
, Inf
, chuỗi potato
, một lớn hơn số hơn chiều dài của chương trình của bạn, vv).
Những hạn chế
Đọc mã nguồn không được phép (như trong một quine thích hợp). Việc sử dụng các bình luận được cho phép, nhưng không được tính vào điểm số của bạn.
Đầu vào và đầu ra có thể được thực hiện ở định dạng hợp lý, nhưng phải rõ ràng (chỉ có các dấu phân cách bổ sung, không có rand
luồng và cho rằng câu trả lời nằm ở đâu đó trong đó), nhất quán (ví dụ: x
từ trên phải luôn có cùng giá trị) và con người- có thể đọc được ; ví dụ: một chuỗi hoặc một mảng ký tự. Bạn có thể giả sử rằng đầu vào là một chuỗi (hoặc mảng) các ký tự ASCII có thể in được; không cần phải xử lý toàn bộ bộ Unicode.
Trang mã tùy chỉnh hoặc ascii không in được trong mã của bạn?
Nếu ngôn ngữ của bạn sử dụng trang mã tùy chỉnh (Jelly, APL, v.v.), bạn phải tính đến điều đó (vì vậy một chương trình €æÆ
phải xuất ra [1, x, 2]
cho đầu vào €%æ
). Chỉ sử dụng các ký tự không phải ASCII để đầu ra -1
luôn (vì đầu vào chỉ có ASCII) không phải là một giải pháp hợp lệ. Bạn có thể cho rằng chương trình của bạn thực sự chấp nhận codepage tùy chỉnh của bạn, nghĩa là, nếu chương trình của bạn có phương thức chuyển đổi một ký tự A
thành một số nguyên 65
(mã hóa ASCII), bạn có thể cho rằng giờ đây nó chuyển đổi ký tự thứ 65 trong codepage của bạn thành 65
.
Lấy cảm hứng từ thử thách sau: Nhận thức vị trí
01030708070
?