Untuk pos perampok, mesin Enigma Cheapo (Perampok)
Pengajuan polisi akan terdiri dari program / fungsi yang menerima satu byte data dan mengembalikan satu byte data. Setiap input yang mungkin harus menghasilkan output yang unik. (Dengan kata lain, fungsi Anda harus bijective)
Perampok akan berusaha membuat fungsi terbalik Anda menggunakan kode sesingkat mungkin. Jadi tujuan Anda adalah membuat fungsi Anda sulit untuk dibalik.
Anda tidak dapat menggunakan bawaan yang memiliki tujuan hashing atau enkripsi.
Hitungan byte Anda tidak boleh melebihi 64 byte. Solusi 0-byte tidak memenuhi syarat untuk menang.
Input / Output format
8 bit (0 atau 1), atau integer basis-10 dalam rentang 1-256, 0-255 atau -128 hingga 127. Dapat menggunakan I / O standar atau file I / O. Fungsi juga dapat mengembalikan nilai sebagai output. Input dan output harus berada dalam kisaran yang sama (biner, 1-256, 0-255 atau -128 hingga 127). Perampok juga akan diminta untuk menggunakan rentang ini untuk input dan output.
Mencetak gol
Rasio jumlah byte Anda dengan upaya perampok terbaik melawan Anda. Skor terendah menang.
Anda berhak untuk menang (sebagai polisi) hanya jika perampok telah berusaha untuk mengalahkan Anda. (Perampok ini mungkin Anda)
Contoh
C ++, menggunakan rentang 0-255, 31 byte
int x;
cin>>x;
cout<<(x+1)%256;
Kemungkinan pengiriman robber dalam C ++, 32 byte
int f(int x)
{return x?x-1:255;}
Menggunakan bahasa yang sama atau algoritma serupa bukanlah suatu keharusan
Ini memberikan skor 31/32 = 0,97 untuk polisi dan perampok.
sumber
Jawaban:
Javascript,
118 bytes, Score: 8/5Implementasi sederhana dari kode abu-abu. Decoding biasanya membutuhkan seluruh loop. Mari kita lihat siapa yang menghasilkan yang terkecil atau bahkan tanpa loop!
sumber
x^x/4
akan lebih sulit karena seharusnya tidak ada builtin untuk itu ...^
adalah bitwise xor, bukan eksponensial. Pokoknya itu terlihat ajaibC, 64 byte, Skor 64/71 = 0,901
Mengambil input dalam kisaran [0 255].
Cobalah online! - pada TIO (menggunakan GCC), ini menghasilkan:
Perhatikan bahwa pada sistem lain, mungkin menghasilkan output yang berbeda (tetapi masih valid), karena C tidak mengamanatkan
rand
implementasi tertentu . Kiriman saya adalah versi khusus yang berjalan pada TIO (sebagaimana ditautkan).Saya cukup kecewa bahwa saya tidak bisa mendapatkan versi seperti asli saya (
f(x){return rand(srand(x*229))/229%256;}
) untuk bekerja di TIO, karena saya pikir itu jauh lebih elegan. Karena itu hanya bekerja pada Dentang berjalan pada OS X, itu tidak adil untuk kompetisi. Yang ini masih agak canggung untuk berbalik, jadi kurasa sudah cukup.sumber
srand()
, jadi Anda harus memutuskan apakah itu dapat diterima dalam formulir ini.Jelly , 2/5
Cobalah online untuk melihat seluruh tabel.
sumber
JavaScript, 44 byte 22/3
Menggunakan pengurutan leksikografis (Javascript Default) untuk mengatur ulang semua angka dari 0-255
Cobalah online!
sumber
C (gcc) ,
3227/30 byteBerkat christoph untuk bermain golf 5 byte.
Cobalah online!
sumber
f(x){x=x?f(x*5+1&255)+1:0;}
for a score of27/30
.Javascript, 11/8 bytes
Domain/range is 1 through 256.
sumber
x**3
andx**5
should work.JavaScript, 13 bytes 13/12
Input and output are both in the range 1->256
Try it online!
sumber
Javascript, 27/29 bytes
Edit: Range/Domain is 1..256. Generated via brute force, more or less.
sumber
Octave, 16/6
Try it online!
sumber
Java, 35 bytes
Domain/Range are 0-255
sumber
Ruby, 23 bytes
Range and domain is 0..255. Concatenate 228 to itself x times, then take the result modulo 257 (0 maps to 0). 228 is the first magic number after 9 that works for this range (gives distinct values that don't include 256).
sumber
Python 3, 55 bytes
Domain/Range is 0-255.
sumber
Python 3, 32 bytes 32/23
Domain/Range is 0-255.
Flips the first four bytes with the last four, and adds a three to the first bytes.
sumber
Mathematica, 13 bytes
Uses the range [1..256], although it's equally valid on the range [0..255]. To see the entire table, copy/paste one of the following lines of code into the Wolfram sandbox:
sumber
brainfuck, 37/11
Try it online!
Not very good but range of 0-255
sumber