Ini adalah metode enkripsi sederhana yang menggunakan digit PI untuk menyandikan pesan, metode ini sederhana:
Kuncinya hanyalah bilangan bulat positif yang menunjukkan dari mana jendela dimulai kemudian:
Diberikan string untuk mengenkripsi, hanya berisi huruf kecil, tanpa spasi, Anda mengambil panjangnya, kemudian Anda menemukan digit N dari PI dan kemudian mulai menggeser setiap huruf ke kanan untuk jumlah yang ditunjukkan oleh digit.
Misalnya, jika kuncinya adalah 2
dan saya ingin menyandikan house
, saya mengambil jendela 5 digit dari yang kedua: 14159
dan kemudian menjadi:
h -> i
o -> s
u -> v
s -> x
e -> n
a.- Program / fungsi / algoritma Anda akan menerima dua parameter, string yang hanya terdiri dari huruf kecil tanpa spasi dan kunci, yang akan menjadi bilangan bulat positif antara 1 (1 merujuk ke 3) dan 1000, yang bisa lebih atau kurang karena saya tidak yakin berapa lama waktu yang dibutuhkan untuk menghitung PI dengan akurasi yang disebutkan karena:
b.- Anda harus menghitung PI sendiri dalam kode Anda, berikut adalah laman web yang rapi untuk dibandingkan dengan: Pi Day . Input seharusnya tidak membuat Anda menghitung PI melebihi 1000 digit, yang berarti panjang (pesan) + kunci <= 1000.
Dengan menghitung Pi, maksud saya tidak memasukkan kode itu ke dalam kode Anda (konyol untuk golf kode) atau menggunakan konstanta yang disematkan dalam kode Anda atau identitas trigonometrik (2 * acos (0)) atau referensi web apa pun.
c.- Outputnya hanya berupa string terenkripsi.
Ini adalah pertanyaan kode golf, kode pendek menang!
Saya akan menerima jawaban yang menang pada 14 Juli 2014.
ArcCos(-1)
?Jawaban:
CJam - 51
Input contoh:
Keluaran:
Ini berfungsi untuk (panjang string) + kunci <= 2000, tetapi cukup lambat untuk juru bahasa online (masih cepat dengan juru bahasa java).
Berikut adalah versi yang berfungsi hingga 200 dan Anda dapat mencoba di http://cjam.aditsu.net/ tanpa menunggu terlalu lama:
sumber
Python - 370
Ok, bagus, akhirnya menyelesaikan hal pi berkat link1 dan link2 .
Contoh output:
dan lainnya:
sumber
JavaScript - 167
173176Terima kasih kepada Michael untuk representasi cerdas dari kekuatan 16.
Ini dapat menghitung PI hingga digit ke-16.
Kasus uji:
sumber
m=1
danm<<=4
bukannyam='0x1'
danm+=0
? Menghemat 3 bytePython -
321304288285Sebagian besar versi golf mudah dibaca dan dipahami. Baris terakhir tidak dipisahkan di bawah ini:
EDIT # 1: menyederhanakan modul hitung saya.
EDIT # 2: refactored formula BBP.
sumber
Haskell - 265
267byte (tidak ada IO)p
adalah versi algoritme golf yang dapat ditemukan di http://rosettacode.org/wiki/Pi#Haskelle
adalah fungsi encoding:Itu tidak berputar jika indeks berada di luar alfabet huruf kecil. Ini berarti bahwa beberapa karakter lain dapat masuk ke string yang disandikan:
Sayangnya, dibutuhkan beberapa detik dengan offset lebih besar daripada
10 000
untuk menghitung output. Untungnya, ketika menggunakan offset yang sama beberapa kali, digit hanya harus dihitung pertama kali.Bonus - Decoding
Sekali lagi jika kami uji dengan
isvxn
:sumber
d 2 "isvsn"
seharusnyad 2 "isvxn"
CoffeeScript - 148 Chars / Bytes
Golf Code pertama saya
Sayangnya Ini tidak mendukung pembungkus (Jadi az akan berakhir dengan tanda baca)
Demo di CSSDeck
Disebut dengan:
sumber