Untuk pos polisi, mesin Enigma Cheapo (Polisi)
Pengajuan perampok terdiri dari program / fungsi yang menerima output dari kode polisi dan mengembalikan input untuk semua output yang disediakan oleh kode polisi itu. (Dengan kata lain, Anda harus menulis fungsi terbalik)
Anda tidak dapat menggunakan bawaan yang memiliki tujuan hashing atau enkripsi.
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 berasal dari rentang yang sama (seperti dalam, biner, 1-256, 0-255 atau -128 hingga 127), yang juga harus kisaran yang sama dengan yang digunakan oleh polisi.
Mencetak gol
Rasio jumlah byte polisi ke jumlah byte Anda. Kemenangan skor tertinggi.
Anda dapat mengirimkan upaya perampok terhadap kode polisi Anda sendiri untuk referensi. (Tentu saja kode ini tidak memenuhi syarat untuk menang)
Pemberitahuan
Harap edit jawaban polisi yang sesuai untuk memasukkan jumlah byte baru Anda dan rasio yang sesuai.
sumber
Jawaban:
JavaScript oleh Christoph , 8/25
(kisaran 0-255)
Sayangnya,
f=(y,x)=>y?f(y/2,x^y):x
berfungsi untuk semua nilai kecuali0
.Catatan teknis
Kami menggunakan
y/2
daripaday>>1
menyimpan byte. Ini menyalahgunakan fakta bahwa nilai apa pun paday
akhirnya akan dibulatkan0
karena aritmatika underflow .sumber
JavaScript oleh fəˈnɛtɪk , 13/19
(kisaran 1-256)
sumber
C, oleh Dave ,
64/959285Coba di sini !
C, versi lebih pendek,
64/8971Yang ini lebih spesifik implementasi, tetapi bekerja pada TIO. Panjangnya sama dengan solusi PHP, saya tidak bisa mendapatkannya lebih pendek dari ini.
Coba di sini !
sumber
JavaScript oleh fəˈnɛtɪk, 13/12
Pembalikan multiplikasi lainnya.
sumber
JavaScript , 11/13
Cobalah online!
sumber
Jelly , 22/3 = 7 1/3
Cobalah online!
The penyerahan polisi oleh fənɛtɪk adalah untuk mengembalikan n th ( 0 -indexed) leksikografi diurutkan angka desimal menggunakan domain [0255] .
Saya pertama kali harfiah dibalik operasi dijelaskan,
⁹ḶDÞi⁸‘
- mengambil berbagai menurunkan dari 256 ,⁹Ḷ
danÞ
menginstruksikan untuk mengatasinya dengan fungsi utama dari konversi ke daftar desimal,D
; kemudian temukan indeks,,i
input⁸
, dan kurangi 1 ,‘
(Daftar Jelly berindeks 1 ).Lalu aku bermain golf dengan mengeluarkan daftar yang diurutkan
Ḋ
. Ketika suatu item tidak ditemukani
mengembalikan 0 seperti yang diperlukan untuk elemen pertama yang dihapus ( 0 ), sementara yang lain ditemukan satu indeks sebelumnya, memungkinkan penghapusan penurunan‘
,, yang pada gilirannya memberikani
input implisit di sebelah kanan dari kiri (hanya ) masukan ke tautan monadik.sumber
Javascript oleh Magenta, 32/23
Kode pada dasarnya mengganti bit 4 yang lebih rendah dan atas dan melakukan penambahan modulo pada satu bagian.
sumber
Javascript oleh histocrat, 27/29
Sayangnya dua codings keras diperlukan untuk memecahnya.
Perhatikan bahwa fungsi asli tidak memetakan nilai apa pun ke 130 tetapi memetakan nilai ke 256 .sumber
PHP, Skor 64/71
Untungnya PHP
rand
hanya meneruskan ke stdlib seperti C. Jadi ini berfungsi selama kita menggunakan stdlib yang sama. Ini berarti ini berfungsi pada TIO tetapi tidak pada misalnya sandbox.onlinephpfunctions.com . Versi kode Dave saat ini hanya mengulangi urutan pseudorandom dan mengembalikan nilai unik ke - n jadi saya kira mungkin ada jawaban yang jauh lebih pendek jika bahasa golf juga menggunakan stdlib.Berikut ini adalah implementasi dari kode Dave yang tidak bergantung pada stdlib. Itu mungkin juga membantu.
sumber
srand(1)
? Juga, ini adalah Cobalah secara online!srand(x&&f(x-1))
ini berhenti hanya jikax==0
karena itu akan diunggulkan0
di babak pertama. Tidak yakin mengapa panggilan berikutnya tidak mengubahnya.srand(0)
rusakrand
(lihat di sini ). Saya kirasrand(0)
secara otomatis dipromosikan menjadisrand(1)
. Saya kira jika Anda bisa menggunakan benih yang berbeda setiap kali akan jauh lebih sulit untuk mematahkannya.Oktaf , 16/18
Cobalah online!
sumber
Jelly , 2/5 (tidak bersaing)
Cobalah online untuk melihat seluruh tabel.
sumber
Jelly , 8/5
Cobalah online untuk melihat seluruh tabel.
sumber
Jelly , 16/6
Cobalah online untuk melihat seluruh tabel.
sumber
Jelly , 11/8
Cobalah online untuk melihat seluruh tabel.
Dalam hal pengiriman perampok dalam bahasa yang berbeda tidak diizinkan di masa mendatang, saya akan menghubungi solusi berikut.
sumber
Jelly , 35/7
Cobalah online untuk melihat seluruh tabel.
sumber
C (gcc) oleh Bijan, 32/30
Bersenang-senang bermain golf, terima kasih!
x=
memungkinkan untuk melewatkan kembali dengan gcc dan tcc (Anda mungkin ingin mengubah jawaban Anda untuk memasukkannya).g(--x)*205+51&255
adalah kebalikannya.sumber
Jelly , 37/11
Menggunakan format I / O yang sama dengan polisi. Tidak yakin apakah itu diperlukan.
Cobalah online untuk melihat seluruh tabel.
Bagaimana itu bekerja
Untuk input n , jawaban polisi menghitung f (n): = ((((n + 5)% 256 × 2)% 256 + 2)% 256 × 9)% 256 . Karena
%
merupakan operator linier, ini setara dengan f (n) = (((n + 5) × 7 + 2) × 9)% 256 . Memperluas istilah yang tepat, kita mendapatkan f (n) = (63n + 333)% 256 = (63n + 77)% 256 .Membalikkan ini agak mudah. Untuk membatalkan penambahan, kita cukup mengurangi 77 . Juga, karena 191 × 63% 256 = 12033% 256 = 1 , maka 191 adalah 63 modul terbalik 256 , jadi mengalikan dengan 191 membatalkan mengalikan dengan 63 . Dengan cara ini, g (n) = (n - 77) × 191% 256 mendefinisikan kebalikan dari f .
sumber