Sunting: Akan ada bonus -20 untuk masking acak
Halo sesama Pelapor dan pembawa pengetahuan rahasia.
Saya akan diwawancarai melalui surat dan saya - tentu saja - tidak dapat menyebutkan nama tertentu secara lengkap. Tetapi karena saya ingin mengungkapkannya dengan cara yang agak tidak terlalu jelas saya membutuhkan bantuan Anda.
Saya akan memberikan nama-nama ini dalam bentuk
"evil_company_that_makes_me_shiver"
tapi tentu saja saya tidak ingin mengejanya sepenuhnya. Tugas Anda untuk membantu saya dan seluruh dunia adalah Anda menyediakan program yang bagus yang mengubah hal di atas menjadi
"ev**************************"
atau
"**il************************"
atau bahkan
"****_c**********************"
Saya pikir Anda mengerti. Tapi ada satu kelemahan: Saya ingin mengungkapkan nama secara total, jadi saya perlu menyampaikan jumlah kemunculan dan kata itu sendiri ke skrip dan itu akan mengungkapkan huruf sedikit demi sedikit. Contohnya bisa
~$ ./whistle NSA 3
> "N**"
> "**A"
> "*S*"
atau
~$ ./whistle nuclear 3
> "nu*****"
> "***lea*"
> "**c***r"
atau
~$ ./whistle nuclear 2
> "nuc****"
> "***lear"
Saya harap Anda dapat membantu saya dan seperti yang kita ketahui bahwa ukuran penting kode menang. Bantu menjadikan dunia ini tempat yang lebih baik!
Jawaban:
GolfScript, 26 karakter
Karena tidak ada cara pengungkapan khusus yang ditentukan, saya memutuskan untuk mengambil jalan terpendek:
Anda dapat bereksperimen dengan kode ini secara online .
Contoh:
Kode yang dikomentari:
sumber
PHP - 80 byte
Penggunaan sampel:
sumber
Python (
157149139138-20 = 118):Python keju (
5535):Anda tidak memberi tahu saya distribusi yang diperlukan;)
Python seragam (
129123122):Keluaran:
memberi
sumber
g=lambda a,b:[a]+["*"*len(a)]*(b-1)
. : Pdisclose the letters bit by bit
juga bisa berartifirst, disclose the first bit (that just happens to be the entire thing), repeat until the b is met
. Ini juga dapat terjadi untuk jawaban pertama, jadi klaim saja Anda menggunakan yang itu, dan cukup senang untuk menghasilkan hasil ini. (Saya baru sadar bahwa Anda juga dapat menuliskannya["*"*len(a)]*(b-1)+[a]
, sehingga Anda mulai dengan mengungkapkan bit yang kebetulan mengandung 0 byte informasi aktual, dan pada baris terakhir, Anda mengungkapkan bit lain.) Namun saya menyadari, bahwa ini membentang ke max.Bash, 80 byte
Dalam aksi:
sumber
C #, 226
Ini dapat dipangkas jika Anda mengganti hal-hal acak dengan distribusi yang lebih sederhana (pikirkan modulus) tetapi keacakan itulah yang membuat saya tertarik. =)
Ngomong-ngomong, menempatkan semuanya pada satu baris saja, saya mendapatkan 226 karakter. Dalam kode yang mudah dibaca terlihat seperti ini:
Output sampel:
sumber
i
Anda mungkin bisa berakhir dengan***/test
.Perl, 24
Membutuhkan
-p
sakelar, yang menyumbang dua byte. Baca dari STDIN.Bagaimana itu bekerja
Karena
-p
switch, Perl membaca kebohongan input pertama dan menyimpan isinya$_
.Perintah
$_ x=<>;
menduplikasi baris input pertama berapa kali baris input kedua (<>
) menentukan.Perintah
s/(.|\n)./\1*/g;
mengkonsumsi dua karakter dan menggantikan yang kedua (yang tidak bisa menjadi baris baru) dengan tanda bintang. Ini melakukan ini sampai telah menghabiskan seluruh konten$_
.Karena baris baru dihitung sebagai karakter pertama, ini akan mengaburkan semua karakter genap di baris pertama dan semua karakter aneh di baris yang tersisa.
Karena
-p
beralih, Perl mencetak konten$_
.Contoh input
Contoh output
sumber
could
memungkinkan Anda melalui :-)Since newlines count as the first character, this will obfuscate all even characters on the first line and all odd characters on the remaining lines.
Sepertinya itu akan gagalcodegolf\n1
Jawa - 490
Ya, tidak benar-benar bermain golf atau apa pun. Oh well, ini dia:
Dalam format yang bagus dan dapat dibaca:
Penggunaan sampel (Saat dijalankan dari kelas yang dikompilasi)
sumber
import java.util.*
Juga,ArrayList<String> = new ArrayList<>();
akan berhasil. Anda juga dapat menghapus banyak ruang. Dan sebagian besar waktu, Anda dapat menggunakanList
bukanArrayList
.Python 3 - 187 (-20 = 167)
Butuh waktu beberapa saat untuk menulis, mungkin bisa bermain golf lebih banyak.
Penggunaan sampel:
Sebagai fungsi - 161 (-20 = 141)
sumber
sys.argv
dalam tugas, dan inisialisasix
sebagaix=['']*int(b[2])
(denganb[2]
diganti oleh apa pun yang Anda nama variabel yang Anda gunakan dalam membongkar).C # 184
Non-golf
Sampel:
sumber
Perl 6 (77 byte)
Ini mungkin dianggap sebagai kecurangan, tetapi ini memecahkan masalah (tidak mencetak keseluruhan string).
Dan output sampel.
sumber
JavaScript - 170
Cepat, istirahat jika Anda memberikan nama dan meminta lebih banyak potongan daripada karakter, tetapi bekerja sampai titik itu dan turun ke 1. Bisa jadi golf lebih saya anggap, jadi dapat merevisi atau mengambil saran, karena itu sedikit berantakan.
Sunting: Diputar lebih jauh (dari 187) dengan menghilangkan tanda kurung (@Synthetica) dan penggantian Math.floor dari @toothbrush. Untuk perubahan loop seperti yang disarankan menghasilkan kesalahan dalam output.
sumber
function s(d,a){o="";b=d.length;x=Math.floor(b/a);y=b-x*a;for(c=1;c<=a;c++)r="*",o+=Array((c-1)*x+1).join(r)+d.substr(c*x-x,c==a?x+y:x)+Array(c<a?b-c*x+1:0).join(r)+"\n";return o};
closure-compiler.appspot.com/home mampu mencukur 8 karakter;)breaks if you supply a name and ask for more pieces than characters
x=b/e|0
sebagai gantix=Math.floor(b/e)
. Juga,for(c=1;c<=e;c++)
bisa disingkat menjadifor(c=1;c++<=e;)
.R, (120-20) = 100 byte (2 solusi berbeda dengan panjang yang sama)
Selain keringkasannya, R pastinya menampilkan penghasil angka acak terbaik! :) Berikut solusi pertama panjang 120:
Jika fungsi ini dinamai f , outputnya terlihat seperti:
Dan di sini solusi ke-2, lagi dengan masking acak, dan lagi 120 byte panjang:
sumber
Scala (1) 177 byte
Setelah solusi di RI juga menemukan satu di Scala, ini dia:
Scala (2) 129 byte
Setelah penelitian singkat saya menemukan metode zipWithIndex . Hebat :)
Di sini solusinya:
sumber
Javascript - 166
Menggunakan regex.
Sampel
sumber
k [50-20 = 30 karakter]
Penjelasan
Contoh
Keluaran
sumber
JavaScript - 139-20 = 119
Output penggunaan dan sampel:
Karena maskingnya acak, hasilnya juga akan terlihat seperti ini:
sumber
Julia 56-20 = 36 (sering bekerja)
Mencoba untuk mencari solusi acak yang lebih pendek, saya memutuskan untuk mengorbankan fungsi yang dijamin untuk solusi yang lebih pendek. Ini benar-benar bukan solusi yang sangat bagus.
sumber
F # -
818075Ini cukup mirip dengan yang lain yang telah ditawarkan:
Sampel:
Sebagai aplikasi yang lengkap dan berdiri sendiri, ia menghasilkan
160155156 karakter:sumber