Bilangan bulat non-negatif bosan selalu memiliki dua tetangga yang sama, sehingga mereka memutuskan untuk mencampuradukkan sedikit. Namun, mereka juga malas dan ingin tetap sedekat mungkin dengan posisi semula.
Mereka datang dengan algoritma berikut:
- Elemen pertama adalah 0.
- The unsur adalah jumlah terkecil yang belum hadir dalam urutan dan yang bukan merupakan tetangga dari elemen.
Ini menghasilkan urutan tak terbatas berikut:
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
adalah elemen pertama. 1
adalah angka terkecil yang belum berurutan, tetapi merupakan tetangga 0
. Angka terkecil berikutnya adalah 2
, jadi itu adalah elemen kedua dari urutan. Sekarang angka yang tersisa 1,3,4,5,6,...
, tetapi karena keduanya 1
dan 3
tetangga 2
,4
adalah anggota ketiga dari urutan. Karena 1
bukan tetangga4
, ia akhirnya bisa menggantikannya sebagai elemen keempat.
Tugas
Tulis fungsi atau program sesedikit mungkin byte yang menghasilkan urutan di atas.
Kamu boleh
- output urutan yang tak terbatas,
- ambil input dan kembalikan unsur urutan, atau
- mengambil input dan mengembalikan elemen pertama dari urutan.
Indeks nol atau satu indeks baik-baik saja jika Anda memilih salah satu dari dua opsi terakhir.
Anda tidak perlu mengikuti algoritma yang diberikan di atas, metode apa pun yang menghasilkan urutan yang sama baik-baik saja.
Terinspirasi oleh golf Code permutasi terbaik . Ternyata ini adalah A277618 .
* Zero secara harfiah hanya memiliki satu tetangga dan tidak terlalu peduli.
Jawaban:
JavaScript (ES6), 13 byte
Mengembalikan istilah ke-n dari urutan.
Cobalah online!
Bagaimana?
Ini menghitung:
sumber
Python 2 , 20 byte
Cobalah online!
sumber
MathGolf , 5 byte
Cobalah online!
Simetri yang bagus di sini. Mengembalikan
nth
elemen urutan.Penjelasan:
sumber
Jelly , 5 byte
Cobalah online!
Go-go gadget yang tidak jelas built-in!
sumber
Bahasa Wolfram (Mathematica) , 14 byte
Cobalah online!
Mencetak integer ke-n, ke-nol, diindeks dalam urutan.
sumber
R ,
252321 byte-2 byte terima kasih kepada Jo King
Cobalah online!
nth
Elemen output dalam urutan.sumber
dzaima / APL , 9 byte
Jawaban Port of Arnauld.
Cobalah online!
sumber
Pip , 14 byte
Atau, rumus yang digunakan semua orang, selama 12 byte :
sumber
Gangguan Umum , 67 byte
Cobalah online!
sumber
(defun x(n)(+(mod(+ n 2)5)(- n 2)))
, atau(lambda(n)(+(mod(+ n 2)5)(- n 2)))
cukup: mengembalikan istilah ke-n, bukan urutan istilah.Japt , 8 byte
Japt Interpreter
Port langsung dari jawaban Javascript Arnauld. Versi tertaut berjalan melalui elemen n pertama, tetapi jika
-m
flag dihapus itu masih valid dan mencetak elemen n sebagai gantinya.Demi perbandingan ini, di sini adalah versi naif yang mengimplementasikan algoritma yang disediakan dalam pertanyaan:
Saya akan memberikan penjelasan untuk yang ini:
sumber
05AB1E , 5 byte
Port of @ JoKing's MathGolf menjawab .
Cobalah online atau verifikasi 100 nomor pertama .
Penjelasan:
sumber
Bersihkan , 31 byte
Formula yang digunakan semua orang.
Cobalah online!
Bersih , 80 byte
Pendekatan awal saya, mengembalikan
n
item pertama .Cobalah online!
sumber
Pari / GP , 14 byte
Cobalah online!
Pari / GP , 14 byte
Cobalah online!
sumber
J , 30 byte
Cobalah online!
Mengembalikan daftar
n
angka pertamaSolusi ini jelas tidak bersaing, tetapi saya ingin mencoba metode berbasis array.
Penjelasan:
Argumennya adalah
n
2 ,]
- tambahkan 2 ke input()@
- dan gunakan daftar ini untuk:i.
- buat matriksn
x 2 dengan angka di kisaran 0..2n-1:4 0$~]
-~
membalikkan argumen, jadi] $ 4 0 - membuat matriksn
x 2 mengulangi 4 0-
kurangi matriks kedua dari yang pertama, sehingga kolom pertama "tertunda" dengan 2 posisi_5,./\
melintasi matriks dalam kelompok 5 baris yang tidak tumpang tindih dan jahit kolom[:,
lepaskan seluruh array2}.
- jatuhkan 2 angka pertama{.
ambiln
angka pertamaJ , 9 byte
Cobalah online!
Mengembalikan
n
elemen th.Jawaban Port of Arnauld
sumber
K (ngn / k) , 12 byte
Cobalah online!
sumber
-2+x+
->x-2-
Pepe , 65 byte
Cobalah online!
Jawaban Port of Jo King.
sumber
kode mesin x86, 16 byte
Majelis:
Cobalah online!
sumber
Merah , 26 byte
Cobalah online!
Jawaban Port of Arnauld
sumber
Excel, 17 byte
Tidak ada yang pintar. Menerapkan formula umum.
sumber
C (gcc) POSIX, 20 byte
Cobalah online!
sumber
QBasic, 30 byte
Memberikan entri daftar yang terindeks 0 pada pos
x
.Cobalah online! (Catatan yang
?
diperluas kePRINT
karena penerjemah gagal kalau tidak ...)sumber
C # (Visual C # Interactive Compiler) , 14 byte
Cobalah online!
Logika yang sama dari jawaban yang lain: 1 2
sumber
R , 25 byte
Cobalah online!
Jawaban Port of Robert S. (dan hanya dengan menambahkan hanya 4 byte) berkat R yang sangat baik dalam menangani vektor.
Menghasilkan nilai n pertama.
sumber
dc , 9 byte
Cobalah online!
Metode yang sama seperti kebanyakan. Gandakan top-of-stack, tambahkan 2, mod 5, tambahkan ke aslinya (digandakan sebelumnya), kurangi 2, cetak.
sumber
TI-BASIC, 11 byte
Input dia ( n ) .
Ans
.Keluaran
Port sederhana dari jawaban lainnya.
Catatan: TI-BASIC adalah bahasa tokenized. Jumlah karakter tidak sama dengan jumlah byte.
sumber