Hilang dalam terjemahan


15

Ini adalah jika Anda tidak terbiasa dengan format klik tag untuk pergi ke wiki. Tidak akan ada utas perampok untuk pertanyaan ini.

Polisi

Tugas Anda sebagai Polisi adalah memilih dua urutan dari Encyclopedia Online Integer Sequences dan menulis sebuah program yang menggunakan elemen ke-1 dari satu urutan sebagai input dan menampilkan elemen ke-n dari urutan kedua. Anda kemudian membuat jawaban termasuk kode dan menghilangkan urutan yang dipilih. Perampok akan berusaha menemukan urutan yang Anda pilih dan jika seseorang berhasil menemukan urutan yang ada dalam pikiran Anda atau beberapa urutan lain yang programnya Anda harus menandai jawaban Anda sebagai Retak . Jika seorang perampok memberi tahu Anda tentang celah yang Anda yakini tidak valid, Anda dapat memberikan bukti bahwa itu bukan celah. Kalau tidak, Anda harus menandainya begitu.

Sesuai jawaban biasa yang telah dipecahkan selama 7 hari memenuhi syarat untuk ditandai aman. Seorang Cop dapat menandai jawaban mereka dengan aman dengan mengungkapkan urutan yang ada dalam pikiran mereka. Setelah aman jawaban mungkin tidak lagi retak.

Tujuannya adalah untuk meminimalkan jumlah byte program Anda sambil tetap tidak terputus.

Contoh

Kode Python berikut menerjemahkan elemen ke- A dari A000290 (angka kuadrat) menjadi A000217 (angka segitiga):

lambda x:sum(range(0,int(x**.5+1)))

Ketentuan dan Persyaratan

  • Jika Anda memilih urutan yang belum terbukti terbatas, Anda harus menampilkan semua istilah yang mungkin ada, tidak hanya yang tercantum di halaman OEIS

  • Sebagai pengecualian untuk bahasa aturan sebelumnya tanpa bilangan bulat presisi tak terbatas tidak harus mengeluarkan atau memasukkan angka di luar jangkauan mereka.

  • Ukuran urutan input Anda harus tidak terbukti lebih kecil dari urutan output.

  • Urutan input Anda tidak boleh memiliki elemen berulang (jika tidak tugas ini sangat mustahil)

  • OEIS menyertakan indeks pada halaman mereka (angka pertama setelah tajuk "OFFSET") secara default, ini adalah offset Anda untuk n (n sama dengan indeks untuk elemen pertama pada urutan) jika Anda memilih indeks lain, Anda harus menunjukkannya di Jawaban Anda.

  • Jika Anda memilih offset berbeda dari yang tercantum pada OEIS, Anda masih harus memetakan semua elemen dalam urutan input Anda ke elemen yang sesuai dalam urutan output Anda.

  • Jika program Anda menerima input yang tidak ada dalam urutan input, ia dapat melakukan apa pun yang diinginkannya (perilaku tidak terdefinisi). Namun itu mungkin demi kepentingan terbaik Anda untuk masih menghasilkan bilangan bulat.

  • Ini tidak sportif untuk sengaja membuat kode Anda sulit dijalankan, baik dengan membuatnya menghabiskan waktu untuk mengeksekusi atau melalui pemilihan bahasa yang tidak bebas . Sementara saya akan menegakkan yang terakhir saya tidak bisa secara objektif menegakkan yang pertama. Namun saya mohon kepada Anda, demi kesenangan, untuk tidak mencoba yang pertama karena membuat tantangan khusus lebih sulit bagi mereka yang memiliki komputer yang lebih lemah.

Perampok

Tugas Anda sebagai Perampok adalah memilih jawaban yang tidak terpecahkan, tidak aman, dan menemukan urutan urutannya. Jika Anda menemukan solusi, solusi yang berfungsi (tidak harus solusi yang dimaksudkan oleh Polisi) mengomentari urutan jawaban yang sesuai.

Perampok tidak perlu terlalu khawatir tentang memverifikasi bahwa dua urutan tertentu adalah solusi, satu harus memposting solusi jika cocok dengan semua entri pada OEIS. Jika itu bukan urutan yang ada dalam pikiran polisi, polisi dapat menawarkan bukti bahwa itu tidak benar atau menandainya retak jika mereka tidak dapat menemukannya.


3
Bagaimana seorang perampok yakin bahwa jawabannya tepat untuk semua input? Apakah mereka harus membuktikannya secara matematis?
Leo

1
@ Leo Perampok harus memposting solusi jika cocok dengan semua entri pada OEIS. Jika itu bukan urutan yang ada dalam pikiran polisi, mereka mungkin menawarkan bukti bahwa itu tidak benar atau menandainya retak jika mereka tidak dapat menemukannya. Saya akan memperbarui utas perampok.
Posting Rock Garf Hunter

2
Sulit untuk menarik garis antara asumsi umum dan ide yang tidak terbukti. Demi kejelasan, saya katakan Anda harus dapat membuktikan bahwa jawaban Anda berhasil.
Dennis

1
Saya punya perasaan bahwa beberapa solusi yang sangat bagus dapat dipecahkan dengan cara bodoh seperti oeis.org/A000004 -> oeis.org/A000012
Wolfram

2
@ Dennis Saya kira itu poin yang bagus. Sangat menyedihkan bahwa tidak ada cara bagi orang untuk menerima perwakilan untuk menemukan celah karena tampaknya itu cukup rumit untuk tantangan ini.
0

Jawaban:


6

Jelly , 14 byte (Retak oleh @Wolfram)

+66%444µ111<µ¡

Cobalah online!

Seharusnya cukup jelas apa yang dilakukannya. Bahkan, untuk kepentingan pengguna non-Jelly, saya bahkan akan memberikan penjelasan:

Penjelasan

+66%444µ111<µ¡
       µ    µ¡  Run the transformation
+66%444           "add 66, then modulo 444"
        111<    once if 111 is less than the input, zero times otherwise 

Pertanyaannya adalah, mengapa ia melakukan ini?

Retak

Urutan yang dimaksud adalah A201647 dan A201647 . Mereka terbatas, dan hanya berbeda dalam 2 elemen terakhir:

  • 3, 5, 7, 9, 11, 15, 21, 165, 693
  • 3, 5, 7, 9, 11, 15, 21, 231, 315

Jadi, jika inputnya rendah, saya membiarkannya tetap sama, dan saya cukup menyesuaikan fungsi dengan transformasi dari dua yang terakhir.


@ Heatheizard: Jika Anda pikir Anda bisa mendapatkan keuntungan dari itu, lakukan saja Tetapi Anda harus cepat, seolah-olah orang lain mengujinya dengan cache diaktifkan, mereka akan mencemari cache untuk semua orang setelah mereka.

@WheatWizard menonaktifkan cache output memastikan Anda mendapatkan hasil baru dari server, tetapi hasil baru itu masih akan di-cache.
Dennis

1
@WheatWizard Atau tambahkan pemecah cache saat Anda mengujinya: string yang dipilih secara acak sebagai bagian dari komentar atau bidang input yang tidak digunakan.
Dennis

+1 jawaban ini benar-benar sederhana, tetapi masih merupakan tantangan bagi para perampok
Kritixi Lithos


3

Jelly , 7 byte (Cracked oleh @JonathanAllan)

ÆFḅÆdÆẸ

Cobalah online!

Apa yang dilakukannya

ÆFḅÆdÆẸ  Main link. Argument: n

ÆF       Factor n into prime-exponent pairs.
   Æd    Compute σ, the number of divisors of n.
  ḅ      Convert each pair from base σ to integer.
     ÆẸ  Yield the integer whose prime signature (infinite sequence of all prime
         exponents, including zeroes, in order) is equal to the result.

3
Mungkin ada pemetaan yang valid lainnya, tetapi yang saya pikir Anda pikirkan adalah bilangan prima - A000040 hingga 2 ^ (2p + 1), p prime - A100626 .
Jonathan Allan

@JonathanAllan Saya datang ke A000040 -> A100626 juga, meskipun Anda mengalahkan jari
Ahemone

Kita juga dapat melihat bahwa itu akan mengadakan: ketika input adalah perdana, p, ÆFhasil (p,1), dan Ædhasil 2, sehingga membuat kita 2p+1, yang berarti ÆẸakan menghasilkan perdana pertama, 2, pangkat dari hasil itu, 2^(2p+1).
Jonathan Allan

@ Jonathan Allan Ya, itulah tujuan saya.
Dennis

2

Python 3, 256 byte ( Retak! )

from math import*
def p(i,m):
 r=0;d=floor(log(i))
 for y in range(d):r+=(pow(16,d-y-1)%(8*y+m))/(8*y+m)
 o=-1;y=d
 while r!=o:o=r;r+=pow(16,d-y-1)/(8*y+m);y+=1
 return r
def q(n):r=4*p(n,1)-2*p(n,4)-p(n,5)-p(n,6);return floor((1-(-r%1)if r<0 else r%1)*16)

Cobalah online!

Maaf jika kode ini terlihat mengerikan, saya pikir ini adalah golf Python pertama saya. Casting dengan Python membuatnya lebih mudah untuk dikodekan.


Saya menganggap fungsi yang dimaksud adalah q?
Posting Rock Garf Hunter

Juga variabel ktampaknya tidak digunakan sehingga Anda dapat menyimpan beberapa byte dengan menghapusnya.
Posting Rock Garf Hunter


@WheatWizard ya, terima kasih, dan ya.
betseg

2

Memproses , 184 byte, AMAN!

int x(int y){int b=TRIANGLES-MITER;for(int i=OVERLAY/BURN;i>#fffffe;b*=(int)pow(y,(MOVE-HAND+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=QUAD/DARKEST);return b;}

Fungsi yang mengambil int dan mengembalikan int. Selama nomor input masukint jangkauan, program harus bekerja dengan baik.

Ini tidak lambat, hanya tidak bisa dibaca. Semoga berhasil!


Saya terkejut pengiriman ini telah berlangsung selama ini. Oh well, setidaknya ini pengiriman aman pertama :)

A000578 hingga A000290

Dengan kata lain: kubus ke kotak.

Penjelasan

Saat menjawab Tidak ada string (atau angka) terlampir , saya menemukan daftar konstanta Pemrosesan yang mewakili int. Misalnya, CORNERmemiliki nilai 0. Daftar lengkapnya dapat ditemukan di sini . Untuk menemukan nilai konstanta, Anda bisaprint melakukannya.

Menggunakan ini, saya memutuskan untuk menukar angka-angka tertentu dengan kombinasi konstanta ini untuk mengaburkannya. Jadi, inilah yang Anda dapatkan ketika Anda mengganti konstanta dengan nilai int masing-masing.

int x(int y){int b=9-8;for(int i=512/8192;i>#fffffe;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=16/16);return b;}

Bahkan sekarang, kode lengkap yang jelas tidak terungkap. Warnanya tersisa. Dalam Memproses, variabel warna memiliki nilai int, misalnya putih ( #ffffff) adalah -1, #fffffeadalah -2, #fffffdadalah -3, dan seterusnya. Ini dapat ditemukan dengan printwarna. Jadi mari kita sederhanakan warnanya.

int x(int y){int b=9-8;for(int i=512/8192;i>-2;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(-16777216*-1))),i-=16/16);return b;}

Kita hampir setengah jalan :) Untuk memahami nilai-nilai, kita perlu menyederhanakan ekspresi numerik.

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)log(16777216))),i-=1);return b;}

Jauh lebih jelas! Sekarang mari kita sederhanakan logaritma.

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)16.6...)),i-=1);return b;}


int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/16)),i-=1);return b;}

Hampir selesai! Sekarang kita harus mencari (int)sqrt(red(color(-65536))/16))seteguk ini . color(-65536)merah, jadi rgb(255, 0, 0). Sekarang red()fungsi mengembalikan nilai komponen merah dalam argumen (yang merupakan warna). Jadi berapa banyak merah yang ada di merah? Jawabannya adalah 255. Dengan itu kita dapatkan

(int)sqrt(255/16))
(int)sqrt(15)
(int)3.8...
3

Mengganti ini dalam program menghasilkan:

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/3),i-=1);return b;}

Yay, sudah selesai!

int x(int y){                        // y is the cube
  int b=1;                           // variable that holds the final result
  for(int i=0;                       // for-loop that
          i>-2;                      // loops twice
          b*=(int)pow(y,(1.)/3),     // multiply b by the cube root of y
          i-=1);                     // decrement the looping variable
  return b;                          // finally return b
}

Singkatnya, ini mengembalikan kuadrat (dilakukan dengan mengalikan dua kali untuk-loop) dari akar pangkat tiga dari nomor input.


0

Mathematica (atau apa pun) -  Cracked!

f[x_] := Quotient[ 366403414911466530559405368378193383110620062 - 
    755296348522256690003418238667147075159564695 x + 
    525778437135781349270885523650096958873079916 x^2 - 
    156594194215500250033652167655133583167162556 x^3 + 
    20861131421245483787723229627506507062999392 x^4 - 
    1181515772235154077024719095229309394979146 x^5 + 
    29382627265060088525632055454760915985604 x^6 - 
    308672970015057482559939241399297150364 x^7 + 
    1087516675449597417990589334580403666 x^8 - 
    312989984559486345089577524231879 x^9, 
  265451130886621254401938908479744271974400 ]

Saya tahu Mathematica adalah perangkat lunak tidak bebas, tetapi fungsi ini sepele untuk port ke bahasa favorit apa pun yang ingin Anda jalankan dari nilai itu dan nomor 42 digit pada baris terakhir. Misalnya, f[100]evaluasi ke -3024847237.


2
A003173 hingga A165892 . Tapi sebenarnya bukan masalah pemrograman;)
Leo

2
Bagaimanapun, karena Mathematica tidak gratis, saya menulis ini untuk mengubahnya menjadi fungsi python
Leo

@ Leo: Kerja bagus! Ada telur Paskah dalam fungsinya juga; Apakah kamu menemukannya? : D
Greg Martin

Uhhh ... Tidak :(
Leo

Untuk memetakan satu set sembilan elemen ke set sembilan elemen lainnya, saya hanya perlu polinomial derajat 8. Anda bisa menarik kesimpulan (benar) bahwa ada satu lagi nilai input yang saya petakan ke nilai output tertentu. Biarkan saya tahu jika (kapan) Anda menemukannya :)
Greg Martin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.