pengantar
Menempatkan semua angka positif dalam urutan regulernya (1, 2, 3, ...) agak membosankan, bukan? Jadi di sini adalah serangkaian tantangan seputar permutasi (perombakan) dari semua angka positif.
Tantangan pertama dalam seri ini adalah untuk output a (n) untuk n yang diberikan sebagai input, di mana a (n) adalah A064413 , juga dikenal sebagai urutan EKG karena grafik nilainya menyerupai elektrokardiogram (maka " Bagaimana ini rasakan " referensi). Properti menarik dari urutan ini adalah bahwa semua bilangan bulat positif muncul tepat sekali. Fitur penting lainnya adalah bahwa semua bilangan prima terjadi dalam urutan yang meningkat.
Tugas
Diberikan input integer n, output a (n).
didefinisikan sebagai:
- untuk , adalah angka terkecil yang belum digunakan yang berbagi faktor dengan
Catatan: pengindeksan berbasis 1 diasumsikan di sini; Anda dapat menggunakan pengindeksan berbasis 0, jadi , dll. Sebutkan ini dalam jawaban Anda jika Anda memilih untuk menggunakan ini.
Uji kasus
Input | Output
--------------
1 | 1
5 | 3
20 | 11
50 | 49
123 | 132
1234 | 1296
3000 | 3122
9999 | 10374
Aturan
- Input dan output adalah bilangan bulat (program Anda setidaknya harus mendukung input dan output dalam kisaran 1 hingga 32767)
- Input yang tidak valid (float, string, nilai negatif, dll.) Dapat menyebabkan output yang tidak terduga, kesalahan atau (tidak) perilaku yang didefinisikan.
- Standar I / O aturan berlaku.
- Celah default dilarang.
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang
Catatan akhir
Lihat pertanyaan PP&CG terkait ini .
#>¹↑¡§ḟȯ←⌋→`-Nḣ2
dan di sini!¡§ḟȯ←⌋→`-Nḣ2
akan lakukan ( Cobalah ). Definisi "duplikat" bukan "sama persis dengan". Saya akan menyerahkannya kepada orang lain untuk memutuskan karena saya tidak ingin menutup ini karena saya mungkin melewatkan sesuatu.a(n)
saham faktor selain 1 dengana(n-1)
, karena setiap nomor saham 1 sebagai faktor. Juga, dapatkah jawaban saya 'diindeks 2', di manaa(2)
1,a(3)
2, dan seterusnya?Jawaban:
05AB1E , 25 byte
Diindeks 0
Penjelasan:
sumber
Haskell ,
66 6564 byteCobalah online!
sumber
Haskell , 60 byte
Cobalah online!
Diindeks nol; dapat menyimpan empat byte jika seri dimulai dengan 2 (agak (-1) -indexed, tetapi tanpa nilai untuk -1 yang didefinisikan). Buat daftar tanpa batas dengan malas memelihara daftar nomor yang tidak digunakan.
sumber
Data.List
dan penggunaandelete x
bukanfilter(/=x)
. Jika ini perlu untuk argumen besar, optimasi seperti itu dengan cepat akan diperlukan.delete
adalah hal yang wajar untuk dilakukan di sini, tetapi dalam kode-golf kami tidak peduli. Saya kadang-kadang menyebutkan varian yang lebih efisien, ketika perbedaannya spektakuler, atau sebaliknya menarik. Di sini, itu tidak terlalu buruk: TIO dapat menghitung semua kasus uji dalam waktu kurang dari 10 detik.Python 2 , 104 byte
Ini menggunakan pengindeksan berbasis 0.
Cobalah online!
sumber
Ruby, 86 byte
Ini berjalan selamanya untuk input serendah 10, meskipun.
Ini adalah versi dengan memoisasi dengan 102 byte yang berjalan dalam waktu yang dapat diterima:
sumber
MESIN BAHASA (X86, 32 bit) + fungsi perpustakaan C malloc () / free (), byte 325
Di atas gcd dan fungsinya ... Kode perakitan di bawah ini menghasilkan fungsi dan program pengujian:
hasil:
Mungkin saja bug dan salinan salah melewati ...
sumber
Perl 6,
848073695049 byte(Diindeks 0)
Berkat jawaban ini untuk beberapa trik.
Berkat ASCII-only karena telah mencukur satu byte.
sumber
...
? Itu membuat urutan hal-hal seperti ini jauh lebih mudah. Misalnya, Andamy@a=1,2;push @a,operation while condition
bisa1,2,{operation}...condition
. Dengan beberapa golf lain, ini bisa serendah 49 byte.first
.APL (NARS), karakter 119, byte 238
tes ini dibutuhkan 1m: 49d di sini:
sumber
Java (JDK) ,
161155152151 byteMenyimpan byte dengan mengalihkan
int[]
pelacakan untuk memanfaatkan yang adaBigInteger
!Cobalah online!
sumber
Gaia , 27 byte
Cobalah online!
Pengindeksan berbasis 1.
Berjalan agak lambat, karena mencoba setiap bilangan bulat sampai menemukannya
a(n)
.sumber