Latar Belakang
Pertimbangkan urutan yang didefinisikan sebagai berikut:
- Elemen pertama adalah 0;
- Elemen kedua adalah 4;
- Dari elemen ketiga dan seterusnya, nilainya dapat dihitung dengan:
- Mengambil himpunan bilangan bulat dari 0 hingga elemen sebelumnya dari urutan (inklusif atau eksklusif, itu tidak masalah);
- Menghapus semua bilangan bulat yang sudah muncul sebelumnya dalam urutan dari set;
- Menambahkan elemen sisa set; itulah nilai yang Anda inginkan.
Menariknya, urutan ini tampaknya belum berada di OEIS .
Tugas
Tulis program atau fungsi yang mengambil integer n sebagai input, dan output elemen ke- n dari urutan.
Uji kasus
Beberapa elemen pertama dari urutan adalah:
- 0
- 4
- 6 (1 + 2 + 3)
- 11 (1 + 2 + 3 + 5)
- 45 (1 + 2 + 3 + 5 + 7 + 8 + 9 + 10)
- 969 (1 + 2 + 3 + 5 + 7 ... 10 + 12 ... 44)
- 468930 (1 + 2 + 3 + 5 + 7 ... 10 + 12 ... 44 + 46 ... 968)
Klarifikasi
- Secara teori, program Anda dapat menangani n sembarang jika dijalankan pada varian bahasa Anda yang memiliki bilangan bulat besar tanpa batas dan akses ke jumlah memori yang tidak terbatas. (Bahasa tanpa bignum tidak mungkin bisa mendapatkan lebih dari 468930, tapi itu bukan alasan untuk menuliskan kode jawaban).
- Anda dapat memilih pengindeksan berbasis-0 atau berbasis-1 untuk urutan (misalnya terserah Anda apakah n = 1 mengembalikan elemen pertama, n = 2 elemen kedua, dan seterusnya; atau apakah n = 0 mengembalikan elemen pertama , n = 1 elemen kedua, dan seterusnya).
- Tidak ada persyaratan pada algoritma yang Anda gunakan, atau pada efisiensinya; Anda dapat mengimplementasikan definisi urutan secara langsung (meskipun itu benar-benar tidak efisien), dan Anda juga dapat menerapkan algoritma berbeda yang mengarah ke hasil yang sama.
Kondisi kemenangan
Ini adalah kode-golf , sehingga program terpendek yang benar, diukur dalam byte, menang.