Tukar Urutannya

9

Tugas Anda adalah menulis beberapa kode yang menghasilkan urutan OEIS, dan berisi nama urutan dalam kode ( A______). Cukup mudah bukan? Nah begini, kode Anda juga harus menampilkan urutan terpisah kedua ketika nama urutan dalam kode diubah menjadi nama urutan kedua.

Input output

Kode Anda dapat berupa fungsi atau program lengkap yang mengambil n melalui metode input standar dan menghasilkan urutan ke- n dari urutan yang diindeks oleh indeks yang disediakan pada halaman OEIS.

Anda harus mendukung semua nilai yang disediakan dalam file OEIS b untuk urutan itu, nomor apa pun yang tidak ada dalam file b tidak perlu didukung.

Mencetak gol

Ini adalah . Skor Anda akan menjadi jumlah byte dalam kode Anda, dengan lebih sedikit byte yang lebih baik.

Contoh

Berikut ini contoh di Haskell yang bekerja untuk A000217 dan A000290.

f x|last"A000217"=='0'=x^2|1>0=sum[1..x]

Cobalah online!

Ad Hoc Garf Hunter
sumber
Untuk memperjelas: Kode Anda harus bekerja untuk dua urutan di mana menempatkan nama urutan di bagian kode akan menampilkan jumlah urutan itu?
HyperNeutrino
@HyperNeutrino Ya. Ketika nama urutan diganti di dalamnya harus mengubah fungsi program menjadi urutan kedua.
Ad Hoc Garf Hunter
1
Apakah urutan dalam kode harus memiliki angka nol di depan.
pppery
@perperry Ya itu seharusnya.
Ad Hoc Garf Hunter
1
Apakah ini Awajib?
Okx

Jawaban:

8

JavaScript (ES6), 16 15 byte

n=>4&~0xA000004

Bekerja dengan A000004 (semua 0s) dan A010709 (semua 4s).

Solusi 17 byte sebelumnya bekerja dengan A010850 hingga A010859 inklusif:

n=>~-0xA010850%36

Solusi 25 byte sebelumnya berfungsi dengan A010850 hingga A010871 inklusif:

n=>"A010850".slice(5)-39
Neil
sumber
Ini hanya pamer (Saya tidak tahu OEIS cukup baik untuk melihat seberapa pintar ini: P)
TheLethalCoder
Aneh - dua jawaban dimulai pada 25 byte dan keduanya di
golf
@pperry Heh, tapi saya bisa port jawaban Anda dan itu akan hanya 15 byte ...
Neil
JS diikat dengan Jelly ?! Dilakukan dengan sangat baik
Shaggy
@Shaggy Nggak; jawaban jeli baru yang lebih pendek telah diposting.
pppery
6

C #, 28 byte

n=>n*n*("A000290"[6]<49?1:n)

Bekerja dengan A000290 (Kotak) dan A000578 (Kubus) .

Cobalah online!

TheLethalCoder
sumber
2
Pekerjaan yang bagus menggunakan urutan yang tidak konstan.
AdmBorkBork
3

Haskell, 28 byte

f x|"A000012"!!6<'3'=1|1<2=x

Urutan kedua adalah A007953. Cobalah online!

nimi
sumber
3

cQuents , 16 byte

=A000007//5#|A:0

Cobalah online! , A000007 ,1,0,0,0,0...

=A000004//5#|A:0

Cobalah online! , A000004 ,0,0,0,0,0...

Penjelasan

                    Implicit input A
=A000007            First item in the sequence equals A * 7
        //5                                                 intdiv 5 = 1
           #|A      n equals A
              :     Mode : (sequence): output nth item (1-based)
               0    Rest of the sequence is 0

                    Implicit input A
=A000004            First item in the sequence equals A * 4
        //5                                                 intdiv 5 = 0
           #|A      n equals A
              :     Mode : (sequence): output nth item (1-based)
               0    Rest of the sequence is 0

Terima kasih kepada Conor O'Brien untuk 4//5 = 0dan 7//5 = 1.

Jika spec lebih fleksibel, itu akan menjadi O7A$dan O4A$.

Stephen
sumber
2

dc , 13 byte

Sunting: Rupanya OEIS mendaftar kekuatan dari 0th ke 30th - Saya baru saja melakukan pencarian pada urutan ini dan ternyata 13solusi byte asli adalah yang paling golf. Tapi saya menemukan solusi lain untuk 1byte lebih yang berfungsi untuk 9urutan.

Solusi untuk A000012 (urutan konstan 1):

?A000012 4%^p

Cobalah online!

Solusi untuk A001477 (bilangan bulat non-negatif):

?A001477 4%^p

Cobalah online!

Solusi untuk A000290 (urutan kuadrat sempurna):

?A000290 4%^p

Cobalah online!

Tidak Terikat / Penjelasan

Solusi ini memanfaatkan fakta bahwa dcmenafsirkan Asebagai 10, sehingga A001477menjadi nilai 10001477. Lebih lanjut ia mengeksploitasi bahwa urutannya n^0, n^1dan n^2yang bertepatan dengan 10000012 % 4 == 0, 10001477 % 4 == 1dan 10000290 % 4 == 2.

Jadi urutan ini xyz(n) = n ^ (xyz % 4).

Command          Description          Example (3) 
?              # Push the input       [3]
 A000290       # Push sequence name   [3,10000290]
         4%    # Top %= 4             [3,2]
           ^   # Pop x,y & push y^x   [9]
            p  # Print the top        [9]

Solusi 14 byte untuk 9 urutan

Idenya masih sama, kali ini kita perlu melakukan % 97, untuk mendapatkan kekuatan yang tepat - itu bekerja untuk urutan A010801 , A010802 , A010803 , A010804 , A010805 , A010806 , A010807 , A010808 dan A010809 (ini adalah urutan n^13, .. ., n^21).

Inilah yang pertama:

?A010801 97%^p

Cobalah online!

ბიმო
sumber
1
+1 untuk mendukung lebih dari dua urutan!
Neil
1

Python 2, 25 17 byte

print'A000012'[5]

Bekerja untuk A000004 dan A000012. (input diabaikan karena urutannya adalah istilah yang konstan).

pppery
sumber
1

Menembus 98, 10 byte

#A000012$q

Juga berfungsi untuk A000004. Output dengan kode keluar.

pppery
sumber
1

Jelly , 17 byte

“A000578”OS%⁵ạ6*@

Cobalah online!

“A000578”OS%⁵ạ6*@  Main link
“A000578”          String
         O         Codepoints
          S        Sum (364 for A000290, 373 for A000578)
           %⁵      Modulo 10 (4 for A000290, 3 for A000578)
             ạ6    Absolute Difference with 6 (2 for A000290, 3 for A000578)
               *@  [left argument] ** [result of last link (right argument)]

Juga berfungsi dengan A000290

HyperNeutrino
sumber
Pekerjaan bagus menggunakan urutan yang tidak konstan.
AdmBorkBork
1

PowerShell , 23 byte

+(0xA000012-eq160mb+18)

Cobalah online!

Menggunakan A000012 (semua urutan) dan A000004 (semua urutan nol).

Memanfaatkan beberapa trik rapi. Kami menggunakan 0xsebagai operator heksadesimal ke urutan yang memberi kami 167772178. Itu dibandingkan untuk melihat apakah yang -equal untuk 160mb+18menggunakan mboperator ( 160mbadalah 167772160). Hasil Boolean tersebut kemudian dilemparkan sebagai int dengan +untuk menghasilkan yang tepat 1atau 0. Perhatikan bahwa urutan apa pun dalam kode selain A000012 akan menghasilkan 0keluaran.

AdmBorkBork
sumber
1

Neim , 10 9 byte

A000012ᛄ>

Penjelasan:

A            Push 42
 000012      Push 4
 or
 A007395     Push 7395
        ᛄ     Modulo 2
         >    Increment

A000012 (semuanya) dan A007395 (semuanya berpasangan)

Fungsi yang mengambil input di atas tumpukan dan meninggalkan output di atas tumpukan.

Cobalah online!

Okx
sumber
0

Gaia , 9 byte

A000012₉/

Bekerja dengan A000012 dan A000004 .

Coba A000012!

Coba A000004!

Penjelasan

A          Undefined (ignored)
 000012    Push 12
       ₉   Push 9
        /  Integer division, results in 1


A          Undefined (ignored)
 000004    Push 4
       ₉   Push 9
        /  Integer division, results in 0
Kucing Bisnis
sumber
Mengapa semua orang terus memposting A00004 dan A00012?
pppery
@ppperry A000004 adalah urutan nol dan A000012 adalah urutannya. Cukup bagi angka dengan 9 dan hasilkan hasilnya selamanya.
Engineer Toast
0

05AB1E , 9 byte

A000004¨θ

Cobalah online!

Bekerja untuk A000004 dan A000012.

Erik the Outgolfer
sumber
0

Jelly , 10 byte

6ị“A000004

Cobalah online!

Bekerja untuk A000004 dan A000012.

Erik the Outgolfer
sumber
0

Pyth, 11 byte

@"A000004"5

Coba di sini.

Mendukung A000004 dan A000012.

Erik the Outgolfer
sumber
0

Sekam , 20 byte

Yang ini mengembalikan urutan yang sedikit lebih menarik, sekali lagi solusi 1-indexed.

Ini berfungsi untuk A000040 (bilangan prima):

!!i→"A000040"e:0İfİp

Cobalah online!

Dan yang ini untuk A000045 (angka-angka Fibonacci):

!!i→"A000045"e:0İfİp

Cobalah online!

Penjelasan

Ini memanfaatkan fakta bahwa digit terakhir dari nama urutan memiliki paritas yang berbeda:

                      -- implicit input N
             e        -- construct a list with:
              :0İf    --   list of Fibonacci numbers (prepend 0)
                  İp  --   list of the prime numbers
  i→"Axxxxx?"         -- get the last character and convert to number,
 !                    -- use it as modular index (0 -> primes, 5 -> Fibonacci)
!                     -- get the value at the Nth index
ბიმო
sumber
0

AHK , 40 byte

a:=SubStr("A000004",6)//9
Loop
Send %a%,

Keluaran: 0,0,0,0,0,0,0,0,0,0,0,0,...

a:=SubStr("A000012",6)//9
Loop
Send %a%,

Keluaran: 1,1,1,1,1,1,1,1,1,1,1,1,...

Ini mungkin bukan kode terpendek tapi saya yakin itu adalah pasangan urutan terpendek yang dapat kita temukan. A000004 adalah urutan nol dan A000012 adalah urutannya. Cukup bagi angka dengan 9 dan hasilkan hasilnya selamanya.

Toast insinyur
sumber
0

QBIC , 28 byte

p=!_s@A000035`,-1|!?:%2+5-p

Ini beralih antara urutan A000034 (1, 2, 1, 2, 1 ...) dan A000035 (0, 1, 0, 1, 0, 1 ...)

Penjelasan

p=                  Set p to 
  !            !    A numeric representation of
   _s         |     a substring of
     @A000035`      our sequence code (either A0035 or A0034)
     ,-1            taking just one character from the right.
?:%2                PRINT <n> MOD 2 (gives us a either 0 or 1)
    +5-p            Plus 1 for seq A24 (5-4), or plus 0 for A35
steenbergh
sumber
0

Sekam , 16 byte

Kedua solusi tersebut 1diindeks.

Ini berfungsi untuk A000351 (kekuatan 5):

!¡*i!6"A000351"1

Cobalah online!

Dan yang ini untuk A000007 (kekuatan 0):

!¡*i!6"A000007"1

Cobalah online!

Penjelasan

Itu membuat nama A000351 , A000007 memuat digit kanan D pada posisi 6, sehingga urutannya adalah D^0,D^1,D^2,...:

                  -- implicit input N
   i!6"AxxxxDx"   -- get the right digit D and convert to number,
 ¡*            1  -- iterate (D*) infinitely beginning with 1,
!                 -- extract the value at Nth position
ბიმო
sumber