Ini adalah bagian dari tantangan Polisi dan Perampok. Buka di sini untuk bagian polisi.
Untuk tujuan tantangan ini, kami akan mendefinisikan spasi putih sebagai hanya baris baris (0x0A) dan spasi (0x20). Perhatikan bahwa sebagian besar bahasa dan rasa regex mempertimbangkan banyak karakter lain sebagai spasi putih, baik di dalam maupun di luar rentang ASCII sehingga Anda mungkin tidak dapat menggunakan built-in yang sesuai.
Tantangan Perampok
Jawaban polisi dapat di-crack dengan mengubahnya menjadi program atau fungsi yang valid (dalam bahasa yang dipilih), yang melakukan tugas menghilangkan spasi putih dari string input, dengan memasukkan spasi putih ke dalam kode. Misalnya jika Anda menerima input berikut:
H e l l o,
W o r l d!
Program harus menampilkan
Hello,World!
Setelah memasukkan spasi putih, jumlah byte dari solusi tidak boleh melebihi jumlah byte yang dinyatakan dalam jawaban polisi. Anda tidak harus menemukan solusi yang sama persis seperti yang dimaksudkan oleh polisi, asalkan milik Anda valid oleh kendala di atas.
Jika Anda mengelola ini, posting jawaban dengan solusi, tautkan ke jawaban polisi, dan tinggalkan komentar pada jawaban polisi yang menghubungkan kembali ke jawaban Anda.
Perampok yang memecahkan sebagian besar jawaban polisi menang. Ikatan rusak oleh jumlah ukuran jawaban polisi yang retak (mendukung perampok yang retak pengiriman lagi).
Setiap jawaban polisi hanya dapat dipecahkan satu kali, dan tentu saja, Anda tidak diizinkan untuk memecahkan jawaban Anda sendiri. Jika jawaban polisi ternyata tidak valid sebelum atau setelah retak, itu tidak dihitung terhadap skor perampok.
sumber
JavaScript ES6, 199 byte oleh Arnauld
Saya menyadari pemisahan
"SecretCode"
berarti saya sedang mencari 11 angka yang dijumlahkan (saya berasumsi) 33. Ini adalah masalah bintang dan bar di mana jumlah ruang adalah bintang dan huruf-huruf di dalamnya"SecretCode"
adalah bar. Saya melakukan matematika untuk melihat berapa banyak kombinasi yang harus dicoba (1,917,344,783 kombinasi) dan memutuskan untuk memaksakannya, butuh waktu seharian.Mungkin ada cara yang lebih cerdas untuk melakukannya, misalnya memperhatikan bahwa
k
harus33
dan66
untuk indeks 10 dan 21 masing-masing, tapi saya malas.sumber
$/**/=/[ \n]/;s['sp'+'lit']($)
... oh, itu kotor.C, 475 byte oleh rexroni
Saya mungkin mulai menggunakan beberapa definisi ini :)
Setelah pra-prosesor, kode tersebut terlihat seperti ini:
sumber
#defineabo
mengusir saya sebentar. Pada awalnya saya pikir itu harus#define ab o
yang hanya akan menambahkan beberapa;
s, tapi itu tidak berhasil menjelang akhir.Ruby, 86 byte + 1 bendera = 87 oleh histokrat
Ini sangat menyenangkan, setiap karakter dalam string yang diteruskan
eval
diganti dengan kode karakter (ord
) XOR^(...)
terhadap jumlah spasi yang tersisa dalam string. Kode yang dihasilkan adalah:sumber
RprogN, oleh Ataco
Ini tampaknya berhasil
sumber
V, 37 byte, oleh DJMcMayhem
Tidak dapat dicetak:
TryItOnline
ü
Benar - benar melemparkan saya untuk satu putaran, saya terus berharap itu danî
menjadi perintah.Í üî
dalam V diterjemahkan ke:%s/ \|\n//g
dalam vim, yang secara global menghapus semua spasi putih. TheÍ
perintah di wiki, danü
danî
yang|
dann
masing-masing dengan bit set tinggisumber
C, 140 byte oleh betseg
(Saya juga berharap saya melakukan ini dengan benar.)
sumber
MATL, 22 byte oleh Luis Mendo
Meskipun saya tidak yakin mengapa, ini sepertinya berhasil
Saya harus melihat apakah saya bisa mengetahui apa yang dilakukannya. Saya menduga bahwa komentar harus memiliki umpan garis setelah mereka dan kemudian hanya masalah mendapatkan ruang di tempat yang benar.
sumber
MATL,
2221 byte oleh Luis Mendo.Akhirnya ... MickyT memecahkannya ketika saya sedang menulis penjelasan, jadi jawabannya adalah yang "valid". Saya tetap memposting ini, sesuai dengan meta postingan ini .
M
danY
tidak perlu dan dikomentari. Cukup menambahkan 4 karakter spasi, bukan 5.Ini setara dengan yang lebih ringkas :
Penjelasan sebagian:
sumber
1e5
dicetak100000
, atau1e
panggilanreshape
, tapi lalu apa5
? (Saya melihat sekarang bahwa%
ini ada di akhir baris, jadi itu akan menjadi5M
, bukan lima dan satuM
. Juga, saya pikir saya harus memilikiY(
satu baris. Semua dalam semua, tutorial MATL yang sangat bagus :)Befunge-98, 65 bytes oleh ninjalj
Cobalah online!
Ini sangat menyenangkan. Saya menyimpulkan bahwa karena ada beberapa perintah yang mengubah arah dan tidak
^<[]?x
atau serupa, itu harus menggunakan pembungkus. Saya kemudian menulis skrip Python untuk membantu mendapatkan spasi yang tepat untukj
's.Kode berfungsi dengan mengambil input (
~
) dan menggandakannya dua kali (::
). Ini kemudian mengurangi 10 (':'0
atauord(':') - ord('0')
) dan 32 ('[';
atauord('[') - ord(';')
). Kemudian, hasil kedua dinegasikan secara logis (1 jika ruang, 0 sebaliknya) dan 8 didorong.Sekarang tiba bagian yang perlu mencari tahu apa yang harus dilewati. Itu
1+!
dilewati dengan melanjutkan ke baris berikutnya.#
melompati@
. Hasil yang dinegasikan secara logis (0 atau 1) dikalikan dengan 8, dan 1 ditambahkan.Kode kemudian melompati banyak (yaitu 1 atau 9) spasi plus satu ekstra saat IP bergerak. Jika karakter itu bukan spasi itu berakhir di
!
. Kode karakter minus 10 dinegasi secara logis (1 jika baris baru, 0 sebaliknya).j
kemudian melewatkan apa-apa, dan print (,
) dipanggil dan loop dilanjutkan dengan membungkus secara vertikal.Jika karakternya adalah spasi, garis bawah akan berputar lagi dengan
32, 22
bagian bawah tumpukan. Yang pertamaj
melompat 705 spasi. Kemudian garis itu loop untuk ketiga kalinya. Jika ada lebih dari dua 10 yang tersisa di tumpukan (kode hanya meninggalkan yang), yang pertamaj
melompat 100 spasi dan mengulangi lingkaran. Kalau tidak, yang pertamaj
melompat ke!
, nol dinegasikan, yang keduaj
melompati cetakan dan program berlanjut.Saya berhasil menurunkannya menjadi 59 byte.
sumber
C # 6, 201 byte, oleh susu
demo repl.it
trueJoin
tidak didefinisikan, jadi hanyastring.Concat()
tersisa.p
adalah"\n"
.p[0]^32^10
adalah ruang. Akan (sedikit) lebih sulit jika itup[0]^42
atau konstanta serupa lainnya.sumber
reticular, 43 byte, oleh Conor O'Brien
Cobalah online!
Ini lebih sulit bagi saya daripada seharusnya karena saya terlalu bodoh untuk menemukan dokumentasi dan akhirnya harus menebak bagaimana beberapa perintah bekerja. Jadi beberapa penjelasan ini mungkin tidak sepenuhnya akurat, tetapi ini adalah pemahaman dasar saya tentang kode tersebut.
sumber
C #, 159 byte oleh LethalCoder
repl.it
String di akhir baris 1 adalah
" \n"
(spasi + baris baru).sumber
Minkolang v0.15, 88 bytes oleh Kritixi Lithos
Penjelasan
sumber
C
kelalaian akan membingungkan, tetapi pekerjaan yang baik tetap!