Jadikan program Anda berurutan! [Tutup]

8

Tugas Anda, jika Anda memilih untuk menerimanya, sederhana.

Objektif

Anda harus membuat program yang, ketika dijalankan, mencetak beberapa (sebanyak yang Anda inginkan) istilah dalam urutan yang Anda pilih. Urutan harus merupakan urutan OEIS yang valid . Twist adalah bahwa ketika Anda mengambil karakter dari kode Anda yang membentuk urutan Anda, string mereka bersama-sama dan menjalankan mereka dalam bahasa yang sama , Anda harus mendapatkan rumus untuk n th urutan Anda untuk urutan Anda.

Contoh

Katakanlah saya membuat program ini:

abcdefghij

dan memilih urutan kotak: http://oeis.org/A000290

dan saya memilihnya untuk mencetak 5 syarat pertama dari urutan, hasilnya harus:

1, 4, 9, 16, 25

Catatan: outputnya fleksibel, Anda dapat memilih pembatas apa yang Anda inginkan untuk memisahkan persyaratan, tetapi pembatas harus terlihat sehingga masing-masing persyaratan urutan dapat dibedakan.

Sekarang, karakter pada indeks 1 adalah a. Karakter pada indeks 4 adalah d. Karakter pada indeks 9 adalah i. Jadi program baru saya adalah:

adi

dan itu harus mencetak rumus untuk istilah ke- n untuk urutan saya, yaitu:

n^2

Sederhana!

Hal-hal lain

  • Anda harus mencetak minimal 5 istilah.
  • Anda dapat memilih untuk indeks 0 atau 1.
  • Angka berulang berarti karakter yang berulang.
  • Jika urutan Anda tidak berurutan (misalnya berjalan mundur), maka kode Anda masih mengikutinya (mis. Kode Anda ditulis mundur).
  • Anda harus menggunakan dan hanya menggunakan angka-angka dalam batas jawaban Anda, bahkan jika sudah melampaui batas. Anda tidak dapat menggunakan angka dari urutan yang sama dengan yang tidak Anda cetak.
  • Jika urutan Anda tidak memiliki formula secara resmi, Anda dapat menggunakan 3 huruf pertama dari nama yang tercantum di situs web OEIS (mis. Urutan fibonacci akan dicetak fibdan urutan lucas-lehmer akan dicetak luc).

Ingat, ini adalah , jadi jawaban tersingkat, dalam byte, menang!

Baik
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Martin Ender
Haruskah nama variabelnya n?
ETHproduksi
Saya menunda ini sampai beberapa detail lagi tentang tantangan diselesaikan (lihat ruang obrolan yang tertaut di atas).
Martin Ender
5
Untuk orang-orang yang sudah memberikan suara terbuka kembali. Jika satu jawaban mengasumsikan bahwa Anda harus mengambil nilai sebanyak mungkin dari urutan, dan jawaban lain mengasumsikan bahwa Anda hanya mengambil sebanyak yang Anda cetak dalam program lengkap, maka tantangannya tidak jelas dan perlu ditingkatkan sebelum menambahkan bahkan lebih banyak jawaban . Plus, ini bukan satu-satunya kasus tepi yang belum ditangani (bagaimana seharusnya urutan yang tidak meningkat, atau urutan dengan nilai yang berulang ditangani?).
Martin Ender
Saya benar-benar menyukai tantangan ini, tetapi harus menjadi kontes untuk melihat siapa yang dapat menggunakan formula paling kompleks.
Magic Gurita Guci

Jawaban:

3

05AB1E , 10 byte, A008585

Kode ini menampilkan 11 elemen pertama dari urutan 3n .

3TÝ' §n*»J

Cobalah online!

Penjelasan

3            # push 3
             # STACK: 3
 TÝ          # push range [0 ... 10]
             # STACK: 3, [0,1,2,3,4,5,6,7,8,9,10]
   ' §       # push a space char converted to string
             # STACK: 3, [0,1,2,3,4,5,6,7,8,9,10], " "
      n      # square the string
             # STACK: 3, [0,1,2,3,4,5,6,7,8,9,10]
       *     # multiply the top 2 elements of the stack
             # STACK: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
        »    # join by newlines
         J   # join to string

Mengambil setiap item ke - N (diindeks 0) memberi:

3'nJ

yang menghasilkan 3n

Emigna
sumber
5

Python 2, 35 Bytes

Saya memutuskan untuk menggunakan urutan yang jelas A000027 , yang pada dasarnya memiliki rumus n;) Jika Anda menjalankan kode berikut:

#print'n'
n=1
exec'print n;n+=1;'*8

Anda mendapatkan output:

1
2
3
4
5
6
7
8

Dan jika Anda mengambil 8 karakter dari kode sumber saya (0-diindeks), Anda mendapatkan ini:

print'n'

Yang hanya mencetak n.


Jika Anda mengharapkan jawaban yang lebih menarik, inilah solusi Python 2 untuk n^2, yaitu A000290 :

#p  r    i      n        t          '            n              ^                2                  '
n=1
exec'print n*n;n+=1;'*10
Kade
sumber
4

05AB1E, 7 6 byte, A000027

5L'n s

Cobalah online!

Penjelasan:

5L      # Push [1, 2, 3, 4, 5]
  'n    # Push "n"
        # Do nothing
     s  # Swap (only in original program)
        # Implicit print
Oliver Ni
sumber
4L"n"sjuga merupakan pilihan, atau apakah saya jauh dari markas di sini?
Magic Gurita Guci
Ya itu. Tapi perlu 5tidak4
Oliver Ni
"dan saya memilihnya untuk mencetak 5 syarat pertama dari urutan" - OP
Magic Octopus Urn
1
@carusocomputing Lihat di bagian bawah
Oliver Ni
3

Oktaf, 64 byte A000290

Saya memilih yang n^2satu:

@()(1:5 ).^2 % '        n          ^            2              '

Ambil ketentuan 1, 4, 9, 16, 25, 36, 49, dan 64 untuk mendapatkan:

@()'n^2'

yang mencetak:

n^2
Stewie Griffin
sumber
2

05AB1E , 30 28 byte, A000290

Ini adalah urutan kotak

"  n    ^      2        "5Ln

Output 5 syarat pertama dari urutan dengan rumus n^2:

[1, 4, 9, 16, 25]

Cobalah online!

Ini 1-diindeks. Jadi mengambil karakter dari kode yang menyusun urutan, saya mengerti

"n^2"

Output yang mana

n^2

Cobalah online!

Penjelasan

"  n    ^      2        "              # push this string
                         5             # push 5
                          L            # push range [1, ..., 5]
                            n          # square it
                                       # implicit output
pengguna41805
sumber
1

Bertanya-tanya , 16 byte A005843

 0";2"tk 5gen *2

Ini dulunya DASH, tetapi sekarang telah diubah namanya menjadi Wonder.

Menghasilkan 6 angka genap pertama. Perhatikan ruang terdepan. Menjaga agar indeks 0, 2, 4, 6, dan 8 menghasilkan:

 "2t 

Yang dicetak 2t.

Penjelasan

0";2"

Ini hanya string dan angka.

tk 5gen *2

Ini menghasilkan daftar angka genap tak terbatas mulai dari 0, lalu mengambil 5 item pertama dari daftar itu.

Mama Fun Roll
sumber
1

MATL , 8 byte, A000027

Terima kasih kepada Oliver untuk koreksi menafsirkan tantangan

'n'  5:&

Kode dicetak 1 2 3 4 5. Hanya menyimpan yang pertama memberi karakter yang dicetaknya n.

Cobalah online!

Luis Mendo
sumber
1

Oktaf, 49 byte, A109234

@()  1      :      5     %'floor (n*sin h(1)) ';]

Urutan floor(n*sinh(1))adalah semua angka dari 1dan atas, kecuali 6, 13, 20, 26, 33, 40, 46, _3, _0, _6 ...Jadi, karakter yang digunakan untuk membuat 1 2 3 4 5harus ditempatkan di posisi itu. Posisi yang tersisa digunakan untuk string yang menjelaskan fungsi.

Stewie Griffin
sumber
0

Haystack , 21 10 9 Bytes

Haystack telah memiliki banyak fitur baru yang ditambahkan dalam beberapa hari terakhir :) Tentu saja, saya akan menggunakan A000027 . Inilah program inital:

<"n"o|OR4

Ini akan mencetak:

[1, 2, 3, 4, 5]

Dan jika Anda mengambil karakter 1-5, 0-diindeks, Anda mendapatkan:

"n"o|

Yang dicetak n.


Jika Anda ingin bersenang-senang lagi, inilah solusi untuk A000290 :

^"_(n\D2l^
3keU02/:[W
D5m"5s\ih_
Cr:OF]uAIe
hWd>g|AkuH
/6R>ud*O,\
)G:q$n|4y{
:|v\X:?dP/

Jika Anda hanya ingin melihat karakter yang diperlukan, klik di sini .

Ini akan mencetak 7 kotak pertama, dan karakter terkait di program di atas, diindeks 0, adalah:

"n^2"O|

Yang dicetak n^2.

Kade
sumber