Ini adalah teka - teki polisi dan perampok , utas polisi dapat ditemukan di sini.
Tugas Anda adalah menemukan anagram program yang disediakan di utas polisi yang melakukan kebalikannya.
Setelah Anda memecahkan sebuah jawaban, solusinya sebagai jawaban di bawah ini dan beri tahu penjawab aslinya.
Anda akan dinilai berdasarkan jumlah program yang Anda ikuti terlebih dahulu.
permutations
source-layout
cops-and-robbers
Posting Rock Garf Hunter
sumber
sumber
f=
di awal kode Anda karena tidak diperlukan dan bukan bagian dari fungsi aslinyaPython 2, 225 byte, orlp
Kira saya beruntung setelah menebak pembagi prime acak sepanjang hari ...
(Batas tempat c4.8xlarge default adalah 4, tapi saya berhasil menabraknya menjadi 10 tahun lalu. Harus mengubah konfigurasi FAAS dari 16 slave menjadi 6 slave (+3 mpi, 1 master). 20m polyselect, 12h 50m saringan, 2h 25m linalg, 30m sqrt. Total biaya ~ $ 70. Setidaknya @orlp cukup baik untuk memilih ukuran yang dapat dipecahkan, tapi saya tidak melakukan ini lagi! Terima kasih kepada @IlmariKaronen untuk langkah terakhir, dan ya saya bercanda tentang menebak: P)
sumber
Python 2, 83 byte, orlp
Asli:
Retak:
Cobalah online!
Retak RSA dilakukan oleh Wolfram Alpha . ;)
sumber
~p*~q
lurus lebih pendek dari-~p*-~q
, oops.(p*q-2*(p+q))/4
bagian itu? :)p/2
danq/2
keduanya merupakan bilangan prima yang aneh, dan sekelompok percobaan dan kesalahan untuk menemukan sesuatu yang akan bekerja menggunakan karakter yang tersedia.p
danq
(yang asli, yang ada dalam kode adalahp-1
danq-1
untuk tujuan bermain golf) sedemikian rupa sehingga(p-1)/2
yang utama adalah yang kita milikiφ(φ(pq)) = ((p-1)/2-1)((q-1)/2-1)
. Ini memungkinkan kita untuk menghitung65537
mod invers modularφ(pq)
(apa yang kita butuhkan untuk RSA) menggunakan identitas Euler, membuat jawabannya jauh lebih singkat karena kita tidak perlu mengimplementasikan logika invers modular atau hardcode konstanta besar lainnya. Terlepas dari-~q*-~p
->~q*~p
, Anda menemukan persis fungsi saya :)φ(φ(pq)) = 2((p-1)/2-1)((q-1)/2-1)
untuk bilangan prima yang amanp
danq
, karenaφ(4) = 2
. Tetapiλ(φ(pq)) = lcm(2, (p-1)/2-1, (q-1)/2-1)
paling banyak((p-1)/2-1)((q-1)/2-1)/2
, dan kelipatannya, minus satu, akan berlaku untuk eksponen. :)Python 3, 80 byte, Wolfram
Ini sangat sulit untuk dipecahkan! Saya menggunakan perpustakaan dua bagian , yang termasuk dalam distribusi Python 3. The
bisect
fungsi mengambil daftar diurutkan dan elemen, dan mengembalikan indeks paling kanan di mana elemen dapat dimasukkan untuk menjaga ketertiban. Kami hanya memberikannyaq
daftar panjang kotak mulai dari1
dan elemenq
.sumber
(h+1)
ke-~h
. Kemudian saya menyadari bahwa bukan itu inti dari tantangan ini: P**
memiliki prioritas lebih tinggi daripada~
di Python. Saya kira itu lebih baik daripada di JS, di mana-~2**2
melempar kesalahan sintaksis ("ekspresi unary yang tidak dapat dipersonalisasi tidak dapat muncul di sisi kiri '**'").**
operator, ditambahkan dalam ES2017)Javascript, 21 byte, Arnauld
Asli
Retak
Mengembalikan akar pangkat tiga.
sumber
7, 9 byte, ais523
Karena kekerasan selalu menang, dan 9! hanya 362880
sumber
Memproses.js, 59 byte, Kritixi Lithos
Asli:
Retak:
Yah, itu cukup mudah. Bagian tersulit adalah mencari tahu di mana harus menempel koma dan tanda bintang tambahan. Untungnya, tampaknya Pemrosesan memungkinkan parameter fungsi tambahan yang tidak digunakan serta ekspresi koma gaya-C.
sumber
JavaScript (ES6), 63 byte, SLuck49
Asli:
Retak:
Kode base64 di atas menerjemahkan ke:
Dimana
...
singkatan dari sekelompok sampah acak yang diabaikan oleh penerjemah JS, karena itu dalam komentar.Saya menemukan solusi ini dengan coba-coba. Pada akhirnya, bagian hanya benar-benar rumit adalah dua baris di awal kode, diperlukan untuk membuat garis sisanya dengan benar dan untuk mendapatkan
M
diMath
ke base64-encode menjadi sesuatu yang tersedia di set karakter asli. Saya pertama kali mencoba spasi, tetapi" M"
base64-encode ke"ICBN"
dan saya membutuhkan satu-satunya yang tersediaB
untuk mengkodekan".po"
nanti dalam kode."0+M"
,"1*M"
,"1?M"
Atau awalan no-op serupa lainnya yang dapat saya pikirkan tidak berhasil, tapi baris lakukan.Saya menduga ini mungkin bukan solusi yang dimaksudkan, tetapi apa pun - itu berhasil. :)
Demo:
sumber
Brain-Flak, 26 byte, Wheat Wizard
Asli (tambah 13)
Retak (kurangi 13)
sumber
J, 8 byte, mil
Penukaran sederhana
+:
untuk-:
(dobel untuk separuh).sumber
[:[+:]-:
.Javascript, 15 byte, masukkan nama pengguna di sini
Asli
Retak
sumber
Python 2, 47 byte, Wheat Wizard
sumber
JavaScript (ES6), 46 byte, SLuck49
Asli (menghitung ln (x + 1))
Retak
Saya tidak akan pernah retak ini jika saya tidak menyadari bahwa kebalikannya adalah
Math
built-in .(lg=19979699+55686).toString(9+25)
hanyalah cara berbelit-belit untuk kembali"expm1"
.sumber
expm1
, dan berkata, "Tunggu, itu hal?"J, 10 byte, mil
Saya harus menulis sesuatu di sini karena jawabannya terlalu pendek.
sumber
J, 29 byte, Zgarb
Asli
Retak
Cobalah online!
Setara retak lainnya adalah
Penjelasan
sumber