Poliglot Anagram Utas Polisi


44

Tantangan ini memiliki dua utas. Ini adalah utas polisi. Utas perampok terletak di sini .

Tantangan Anda adalah memilih urutan OEIS dan menulis dua program lengkap dalam dua bahasa berbeda yang menghasilkan item ke-n dalam urutan ketika diberi dan melalui STDIN, atau bentuk lain dari input standar, di mana n adalah angka positif. Namun kedua program Anda harus berupa anagram, artinya masing-masing dapat disusun ulang dari surat yang lain.

Program harus menampilkan desimal angka yang diikuti oleh spasi kosong opsional ke STDOUT. Program dapat menghasilkan STDERR namun harus diabaikan dan jika kasing tersembunyi harus dinyatakan dengan jelas bahwa inilah kasingnya.

Jika mau, Anda juga dapat menampilkan berdasarkan kode karakter. Namun jika Anda melakukannya di solusi tersembunyi Anda, Anda harus menyatakan seperti itu di tubuh kiriman Anda.

Anda kemudian akan menampilkan nomor OEIS, kode sumber untuk dan nama satu bahasa yang digunakan.

Perampok akan memecahkan kiriman Anda jika mereka menemukan sebuah anagram dari kiriman asli yang berjalan dalam bahasa selain yang sudah Anda sajikan. Untuk memecahkan sebuah jawaban, mereka hanya harus menemukan bahasa dan program apa pun yang menghasilkan urutan dan merupakan anagram dari aslinya, belum tentu jawaban yang Anda pikirkan.

Dengan demikian Anda diberi insentif untuk membuatnya sesulit mungkin untuk menemukan bahasa apa pun yang melakukan tugas menggunakan daftar simbol mereka.

Mencetak gol

Ini adalah sehingga program un-crack terpendek adalah pemenangnya.

Bahasa

Bahasa akan dianggap berbeda jika dua solusi yang diusulkan tidak menyelesaikan tugas dalam kedua bahasa. Ini akan mencakup versi yang berbeda dari bahasa yang sama selama solusi polisi atau solusi perampok tidak menghasilkan output yang benar dalam bahasa yang lain.

yaitu jika ada dua solusi 1 dan 2 yang dalam bahasa A dan B masing-masing solusi 2 tidak harus menghasilkan output yang benar dalam bahasa A dan solusi 1 tidak harus menghasilkan output yang benar dalam bahasa B.

Keamanan

Setelah kiriman Anda dilacak selama seminggu, Anda dapat memposting solusi Anda dan menyatakan kiriman Anda aman. Jika setelah seminggu Anda memilih untuk tidak memposting solusi, jawaban Anda mungkin masih retak.


4
Untuk menelusuri urutan OEIS acak untuk ide-ide, pergi ke oeis.org/webcam
mbomb007

Bagaimana cara kerjanya dengan bahasa yang suka menggunakan bendera untuk penerjemah, seperti perl? Apakah mereka didiskualifikasi? Apakah bendera dihitung sebagai bagian dari kode? Apakah bendera "gratis" (tidak termasuk dalam kode atau dibocorkan sama sekali)?
Emigna

Bisakah program tersembunyi keluar dengan kesalahan (setelah menghasilkan output)? Haruskah itu ditunjukkan dalam jawaban?
Luis Mendo

1
Tidak yakin apakah ini akan membantu orang lain tetapi ini menyoroti sisa karakter yang hilang atau yang digandakan: codepen.io/anon/pen/BQjxRK
Dom Hastings

1
Akan lebih baik jika ada potongan stack untuk menunjukkan jawaban yang tidak terputus, terlama dulu.
mbomb007

Jawaban:


15

Python 2, 118 byte, A042545 Retak

i=input();s=1/(801**.5-28);a=[0,1]
for p in range(i):a+=[a[-2]+a[-1]*int(s)];s=1/(s-int(s))
print a[i]#,,,.//000fhlmo|

Saya tidak merasa ingin menerapkan urutan yang sepele, jadi saya memutuskan untuk menggunakan ID pengguna PPCG saya. Saya menulis ini dalam bahasa lain terlebih dahulu, yang seharusnya memberi Anda petunjuk tentang apa bahasa itu, meskipun saya berani bertaruh 100 dolar bahwa ini akan retak dalam bahasa golf sebelum retak dalam bahasa lain yang dimaksud.

Catatan: Karena kesalahan presisi floating-point, ini hanya akurat hingga input 14. Solusi yang dimaksud adalah cara yang sama.

Solusi yang dimaksudkan, JavaScript (ES7)

for(i=prompt(),s=1/(801**.5-28),a=[1,0];i--;s=1/(s-n))
  n=s|0,a.unshift(a[1]+a[0]*n);
alert(a[0])  //#+2:[]giiiiinnpt

Bekerja dengan cara yang hampir sama dengan solusi Python, meskipun urutannya disimpan terbesar-pertama daripada terkecil-pertama karena fakta bahwa JS tidak mendukung pengindeksan negatif.


2
Saya tidak bisa menggunakan case A042545 (15). OEIS mengatakan bahwa ini adalah 53000053, tetapi program Anda mengatakan bahwa itu adalah 27666361 (setidaknya di komputer saya).
boboquack

@ Boboquack Output untuk 16sebenarnya 53000053, tetapi setelah itu sepertinya tidak ada istilah yang cocok. Saya ingin tahu mengapa ...
ETHproduksi

Mungkin kesalahan floating point yang semakin memburuk?
boboquack


1
Sial, aku benar! :( Ini sedekat yang saya dapatkan: gist.github.com/dom111/bd9be933cb8ccd0e303601bf73d525b6 Terima kasih atas latihannya, saya membutuhkan |()tetapi tidak bisa mendapatkannya!
Dom Hastings

10

Brain-Flak, 24 byte, A000290 , Aman

Namun solusi persegi lain. Kali ini tidak ada apa-apa selain tanda kurung

({(({}[()])()){}[()]}{})

Solusi yang dimaksud adalah di Brain-Flueue , versi brain-flak yang menggunakan antrian alih-alih tumpukan. Programnya adalah:

({(({})[()]){}}{})[()()]

Bahasa dianggap berbeda karena tidak satu pun dari kedua program tersebut berhenti ketika dijalankan dalam bahasa lain.


Ini akan bekerja di Glypho jika input / output menggunakan kode karakter diperbolehkan ...
jimmy23013

@ jimmy23013 apa itu Glypho?
Wheat Wizard

6
esolangs.org/wiki/Glypho ((([{}{}{]]}[)))((){))(}
jimmy23013

@WheatWizard Jika retak, dapatkah Anda mengedit jawaban untuk menunjukkan itu?
mbomb007

@ mbomb007 Tidak retak
Wheat Wizard


7

CJam , 7 byte, A005843 Retak!

ri2*e#^

Ini adalah 2*nurutan dasar .

Penjelasan:

r          e# read input
 i         e# convert to integer
  2*       e# multiply it by 2
    e#^    e# this is a comment that is ignored by the interpreter

Cobalah online!


Solusi Asli, Wortel

#^i*2er

Wortel adalah esolang yang dibuat oleh saya. Saya sudah berhenti mengembangkannya sejak lama. Alasan saya memilih ini adalah karena saya berharap akan sulit bagi bahasa lain untuk berkomentar tentang bagian kode yang tidak perlu.

Penjelasan:

#^            This pushes the input to the stack (anything before the ^ is the stack)
  i           Convert stack to integer
   *2         Multiply it by 2
     er       These are ignored because they are not Carrot commands
              Implicit output

Cobalah online!


1
ri#e^*2akan bekerja di Jelly jika *multiplikasi bukan eksponensial. Begitu dekat ...
ETHproduksi

3
Retak :).
Adnan

Saya memiliki segalanya kecuali rdi pyth. Menyenangkan melihat kode asli untuk yang satu ini.
Emigna

1
@ Emigna Saya menambahkan kode asli
Kritixi Lithos


5

Brain-Flak, 44 byte, A000290 Retak

<({({})({}[()])}{}))()()()turpentine/"*"*4splint>

Cobalah online!


Solusi asli, Python 2

print(input()**(len(set("{}{}{}[]()<>"))/4))


Sekarang saya benar-benar penasaran. Apa solusi awal yang Anda maksudkan? Saya bisa tahu itu python karena saya melihat len set inputdan print(dan karena saya tahu Anda suka python) tapi saya tidak tahu bagaimana itu kuadrat angka
DJMcMayhem

@DrMcMoylex menambahkan
Wheat Wizard


5

Python 2, 25 byte, A000583 , sudah di- crack

Y=input("");print`Y**4`,X

Program ini keluar dengan kesalahan setelah mencetak output.


Kode tersembunyi saya (jauh berbeda dari solusi yang di-crack!):

Sebenarnya , 25 byte

4,n`*`Y")ii(*nppruttY;="X

Cobalah online!

Penjelasan:

4,n`*`Y")ii(*nppruttY;="X
4,n                        input, repeat 4 times
   `*`Y                    do * until the stack stops changing (fixed-point combinator)
       ")ii(*nppruttY;="X  push this string and immediately pop and discard it


5

Python, 118 byte, A042545 , Aman

i=int(input());s=pow(801.0,0.5);a=[0|0,1]
for Moshprtflmah in range(i):s=1./(s%1);a+=[a[-2]+a[-1]*int(s)];
print(a[i])

Kali ini berfungsi dalam 2 dan 3. Dan tidak ada komentar! Apa yang akan kamu lakukan?

Catatan: Seperti solusi lama, ini kehilangan presisi setelah 15 istilah pertama karena kesalahan aritmatika floating-point.

Solusi yang dimaksudkan, JavaScript (ES6)

giiiiinnnnprt:
i=prompt([n=+2]);s=Math.pow(801,.5);for(a=[1,0];i--;a.unshift(a[1]+a[0]*(s|0)))s=1/(s%1)
alert(a[0])   

Meskipun saya menyimpan beberapa versi lama, saya entah bagaimana berhasil kehilangan salinan ini , tetapi untungnya mengumpulkannya bersama yang lain tidak terlalu sulit. Saya melihat sekarang bahwa saya memiliki tambahan prtdi kedua program yang bisa bermain golf. Baiklah.


Saya pikir saya akan mengingatkan Anda bahwa Anda dapat menandai ini sebagai aman jika Anda mau.
Wheat Wizard

@WheatWizard Terima kasih, saya telah menambahkan solusi yang saya maksudkan.
ETHproduksi

5

Python 2, 124 byte, A144945 , [Aman]

Memecahkan ini akan memberi Anda hadiah 500 rep! Sangat terlambat!

Jumlah cara untuk menempatkan 2 ratu pada papan catur sehingga mereka saling serang.

Saya harap itu tidak terlalu mudah. Saya mengatur kode saya sehingga ruang kosong terlihat jelas. Itu hanya spasi dan baris baru.

Catatan: output solusi yang dimaksud melalui kode karakter

n=input();print((3+2)*n*n+~0*6*n+1)*n/3;            +6;



























+7+7+7+7+7+7+7+7+7;+++++++++++++++9+9*9*9

Cobalah online

Solusi yang Dimaksud, Headecks :

r2=ni***p**
(


p((0 ;3+++3;+;/


)





i+++nn
 +)7
n

n+++ 


17+~
 +)7;97++++7


69+9n+ ++7+n 69
 +7+ ++7


**7+++tut

Ini setara dengan program BF berikut:

>>,[->>>+>>>+>>>+++++<<<<<<<<<]>>>->>>>>>-<<<[[>+<-]>[>>[<<<+>>+>-]<[>+<-]<-]<<<<]>>+++>[-<-[<+<<]<[+[->+<]<+<<]>>>>>]<<<.,.

4

Fuzzy Octo Guacamole, 26 bytes, A070627 [Aman]

49++*5^pm#]%:"?:.=:#,|"1:@

Kasus uji:

1 -> 1
3 -> 23
5 -> 1

Larutan:

^::::|*?1=#@]","%.#49++5pm

Bekerja di Magistack.


Halo! Hanya mengingatkan Anda bahwa jawaban ini dapat ditandai sebagai aman. Tidak perlu terburu-buru tetapi tidak ada yang memecahkannya dalam seminggu. Kerja bagus, saya ingin sekali melihat solusinya
Wheat Wizard

Keren, aku akan melakukannya dan yang lainnya sekali ketika aku pulang.
R

3

Pyth, 75 byte, A004526 Retak, susu

Lebih dari tes main-main dari apa pun, tetapi:

/Q/////////////////****22222 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;;;;;

Cobalah online!

Solusi Milk (Cembung):

2/Q2 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2*2*2*; 2*;                 2; 2; 2;

Cobalah online

Solusi yang dimaksudkan (///):

/*///;2/;// ///22/Q//2;///;//;***2222222222222222222222                    

Cobalah online

Mengambil input dalam bentuk 2 sebelum titik koma terakhir dan menampilkan jumlah Q yang benar.

Urutannya adalah 0-diindeks (yaitu 0 adalah 0, 1 adalah 0, 2 adalah 1, ...)

Ditemukan sedikit kesalahan sintaksis di ///, jadi edit semua solusi.



3

MATL, 7 byte, A000217 , retak

:sp{1}x

Urutannya adalah n(n+1)/2(angka segitiga), mulai dari masukan n=1seperti yang ditentukan oleh tantangan: 1, 3, 6, 10, ... (Output untuk input 0tidak dijamin sama di dua program).

Program dalam bahasa lain keluar dengan kesalahan (setelah menghasilkan output yang benar dalam STDOUT).

Cobalah online!

:            % Push [1 2 ... n], where n is implicit input
 s           % Sum of that array. Gives the desired result
   p         % Product of that. Gives the same number
    {1}      % Push a cell array containing number 1
       x     % Delete it


@ StevenH.Baik dilakukan! Solusi asli saya adalahx:ps{}1
Luis Mendo


3

Python 3, 27 byte, A000012 , Retak

Tidak ada input saat ini!

if 1:
    if 1:
        print( '1' )

Indentasi adalah tab, tetapi tidak untuk menyimpan byte - mereka diperlukan untuk spasi putih.

Saya pikir itu tidak memerlukan tautan atau penjelasan TIO!

(Mungkin tidak akan lama untuk retak dalam beberapa cara)

Jawaban yang dimaksudkan (Whitespace):

-Start-


    if1:if1:print('1')
-End-

(Mulai dan akhiri bukan bagian dari program)

Maaf, saya lupa menambahkan bahwa ia mencetak ke STDERR:

Cobalah online!


1

Saya merasa seperti ini seharusnya Whitespace, tapi itu akan mencetak kesalahan ke STDERR karena tidak memiliki baris baris yang dibutuhkan untuk diakhiri dengan [LF] [LF] [LF].
Martin Ender

1
@milk Tidak lagi! : D
boboquack

1
@boboquack Itu berhasil, tetapi tidak mencetak ke stderr (yang dapat Anda lihat dengan mengaktifkan modus Debug pada TIO), dan tantangan mengatakan bahwa jawaban harus menentukan apakah menulis bahasa tersembunyi untuk stderr.
Martin Ender


3

Fuzzy Octo Guacamole , 11 byte, A001844 [Aman!]

hha02^d+**+

Retak yang semacam itu bekerja dh*h++^2*0a, di Pyth. Ini bukan format output yang tepat.

Kode saya masih di luar sana! (dan itu tidak di Pyth)

Kasus uji:

0 -> 1
1 -> 5

Larutan:

^++d0ah*2*h

Di Jolf.


1
Aku bersumpah, ini sepertinya dibuat untuk Jolf, tapi aku tidak tahu d...
ETHproduksi

Cracked (Saya harap ...)
ETHproduk

@ EHProduk ah, bagus. Tidak yakin apakah itu diperhitungkan? Lihat edit.
Rɪᴋᴇʀ

Kode saya mencetak baris baru, tetapi tidak ada ruang. Sama dengan kode yang valid.
Rɪᴋᴇʀ

@ EasterlyIrk Meskipun apa yang saya katakan saya tidak menganggap jawaban yang diberikan sedikit. Saya semua yang saya katakan masih berlaku tetapi saya tidak mempertimbangkan memimpin output yang valid spasi putih dan saya akan mengubah pertanyaan untuk mencerminkan itu.
Wheat Wizard


2

JavaScript ES6, 38 byte, A000290 , Retak

J=>eval(Array(J).fill(J).join`+`)|2-2;

Kereta persegi ini cukup bagus, tetapi tidak cepat kemana-mana. (Dapatkan itu? Kereta persegi ? Seperti di dalam, roda? Tidak? Oke, baiklah. Kritik .)


Jawaban yang dimaksudkan: Reticular ( Coba online! ),

in2Jo;=>eval(Array(J).fill(J).j`+`)|-2
in      take input, convert to number
  2J    raise to the second power
    o;  output and terminate; ignores following chars

2
Kode Anda mencoba meyakinkan saya bahwa bahasa lainnya adalah J: P
ETHproduk


2

MATL , 13 byte, A002275 Retak!

i:"@ax'1']
v!

Cobalah online!

Penjelasan:

i           % Grab input
 :          % Push (range(1,input))
  "         % For each element in this range:
   @        %   Push it
    a       %   Is is truthy?
     x      %   Delete it
      '1'   %   Push '1'
         ]  %   End loop
v           % Join all of these '1's together
 !          % Transpose and display

1
Saya merasa seperti ini di Vim tetapi untuk kehidupan saya, saya tidak bisa memecahkannya
Wheat Wizard


2

2sable , 13 byte, A002378 , Retak!

Berharap saya tidak melewatkan sesuatu. Menghitung a (n) = n × (n + 1) :

>*?"!&)<=@\\}

Versi saya:

?"\>@&*})<\=!

Atau versi yang tidak dilipat:

  ? " \
 > @ & *
} ) < \ =
 ! . . .
  . . .

Perhatikan bahwa >di sudut kiri atas tidak digunakan (kecuali untuk program 2sable). Saya melakukan ini untuk membingungkan para perampok (tapi itu jelas tidak berhasil haha).

Cobalah online!



@ MartinEnder Kerja bagus! Saya akan memperbarui jawaban saya dengan kiriman asli :).
Adnan


2

Befunge 93 , 14 bytes, A121377 , Retak karena susu !

&52* %68*+ .@Q

Fakta menyenangkan: Solusi yang dimaksudkan untuk ini adalah pertama kalinya saya menggunakan bahasa itu.

Solusi saya di Pyth. & @ cetak kesalahan, tetapi STDERR yang menurut OP diabaikan.

+%Q*5 2*6 8.&@


2

Python 2, 35 byte, A048735 , Aman

print(lambda u:u&u<<1)(input())>>1

Solusi asli adalah dalam bahasa pemrograman saya sendiri Wise .

:<<>&>print(lambda uuu1)(input())1

Sebagian besar karakter adalah no-ops yang tidak relevan. Karakter penting adalah enam pertama. :membuat dua salinan dari item pertama di tumpukan. <<>bit bergeser dua kali ke kiri dan sekali ke kanan yang setara dengan menggeser satu kali ke kiri. &mengambil bitwise dan item teratas dan kedua (salinan asli dan bit bergeser). >Bit terakhir bergeser satu kali ke kanan.


2

05AB1E, 5 byte, A000012 , Aman

$;$1?

Urutan 1. Cobalah online

Solusi yang Dimaksudkan: Arcyou

1;$$?

Cobalah online . Saya tidak dapat menemukan dokumentasi untuk bahasa ini, jadi tidak memiliki penjelasan tentang cara kerjanya.


Titik koma bodoh ... Aku hampir bisa menggunakan Retina, tapi aku tidak bisa memiliki keduanya 1dan ;.
mbomb007

1
Ini belum retak
Wisaya Gandum

Sepertinya jawaban ini sekarang dapat ditandai sebagai aman. Karena saya menghabiskan banyak waktu untuk mencoba memecahkan yang ini, saya sangat ingin melihat jawaban yang dimaksud.
Wheat Wizard

Bukankah seharusnya jawaban ini ditandai sebagai "diterima" sekarang?
mbomb007

1

Python 2, 70 Bytes, A000217 Retak!

Saya merasa ini tidak akan retak dalam bahasa yang saya gunakan untuk versi lain, kita akan lihat :)

o=input()
v=0
i=1
while o:
 v+=i
 i+=1
print v


#|  d00->1@@@++-^,,[

Saya menyadari setelah itu saya salah mengaburkan kode (itu tidak mengubah validitas jawaban yang diposting). Berikut kode yang saya mulai dengan di Haystack:

v
0
v
0
i
1
-
>      d0[v
^-1@+@d+1@?,,o|


1

05AB1E , 9 byte, A000042 Retak!

1×,1*-^$)

Ini adalah representasi bilangan asli Unary (OEIS). Jadi jika inputnya 3, misalnya, maka output akan menjadi 111.

Penjelasan:

                    # implicit input
1                   # pushes 1 to the stack   
 ×                  # pushes "1" × (the input)
  ,                 # outputs the stack
   1*-^$)           # irrelevant

Cobalah online!


Solusi Asli, Wortel

1^*$-1×^)

Penjelasan

1^             Push "1" to the stack
  *            Multiply the string by
   $-1         ...the input (as an integer) minus 1 times
      ×,)      Ignored by the interpreter

The *mengalikan string dengan (n+1)kali, sehingga a^*3menghasilkan aaaadan tidak aaa. Jadi itu sebabnya saya mengurangi 1input.

Baru sekarang saya menyadari bahwa )keduanya tidak relevan di kedua bahasa: D

Cobalah online!



Apa bahasa tersembunyi aslinya?
Wheat Wizard

@WheatWizard Whoops, terima kasih telah menemukan itu. Saya menambahkan bahasa sekarang
Kritixi Lithos

1

J, 2 byte, A000290 , Retak

*~

Yah, sebaiknya mulai untuk dua byters itu. Menghasilkan n × n , atau n 2 .

solusi yang dimaksudkan, Jolf, 2 byte

*~

Baik. Ya. Ini adalah bahasa saya sendiri dan saya pikir itu berfungsi karena ~mencari karakter yang diperluas, tetapi tidak menemukan satu, jadi itu hanya mengabaikannya. ¯ \ _ (ツ) _ / ¯ Ups.



@ SevenH. pekerjaan yang baik! Saya mengedit dengan solusi yang dimaksudkan.
Conor O'Brien

@ ConorO'Brien solusi yang Anda maksudkan bukan solusi yang valid. Agar bahasa dianggap berbeda, tidak ada yang asli atau solusinya dapat menjadi polyglot di kedua bahasa
Wheat Wizard

@WheatWizard Oh. Itu aneh.
Conor O'Brien



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.