Các số nguyên không âm chán vì luôn có hai * hàng xóm giống nhau, vì vậy họ quyết định trộn lẫn mọi thứ lên một chút. Tuy nhiên, họ cũng lười biếng và muốn ở gần nhất có thể với vị trí ban đầu của họ.
Họ đưa ra thuật toán sau:
- Phần tử đầu tiên là 0.
- Phần tử là số nhỏ nhất chưa có trong chuỗi và không phải là hàng xóm của phần tử .
Điều này tạo ra chuỗi vô hạn sau:
0,2,4,1,3,5,7,9,6,8,10,12,14,11,13,15,17,19,16,18,20,22,24,21,23,25,27,29,26,28 ...
0
là yếu tố đầu tiên. 1
là số nhỏ nhất chưa có trong chuỗi, nhưng nó là hàng xóm của 0
. Số nhỏ nhất tiếp theo là 2
, vì vậy nó là phần tử thứ hai của chuỗi. Bây giờ các số còn lại là 1,3,4,5,6,...
, nhưng vì cả hai 1
và 3
là hàng xóm của 2
, 4
là thành viên thứ ba của chuỗi. Vì 1
không phải là hàng xóm của 4
nó, cuối cùng nó có thể lấy vị trí là yếu tố thứ tư.
Nhiệm vụ
Viết hàm hoặc chương trình càng ít byte càng tốt để tạo chuỗi trên.
Bạn có thể
- đầu ra chuỗi vô tận,
- lấy một đầu vào và trả về phần tử của chuỗi, hoặc
- lấy đầu vào và trả về phần tử đầu tiên của chuỗi.
Cả hai chỉ số 0 hoặc một chỉ mục đều ổn trong trường hợp bạn chọn một trong hai tùy chọn sau.
Bạn không cần phải tuân theo thuật toán được đưa ra ở trên, bất kỳ phương pháp nào tạo ra cùng một chuỗi đều ổn.
Lấy cảm hứng từ Code golf hoán vị tốt nhất . Hóa ra đây là A277618 .
* Zero chỉ có một người hàng xóm và không thực sự quan tâm.