Kode dan Keluaran yang Dapat Dimodifikasi: Edisi CnR (Polisi)

8

Ini adalah utas Polisi. Utas perampok ada di sini .

Latar Belakang

Boggle adalah permainan papan di mana para pemain harus menemukan kata-kata bahasa Inggris di papan 4-oleh-4 huruf acak. Kata-kata dapat dibangun dengan memilih sel-sel yang berdekatan secara berurutan di papan tulis. ("berdekatan" berarti berdekatan secara horizontal, vertikal atau diagonal.) Juga, sel yang sama tidak dapat digunakan lebih dari sekali dalam sebuah kata.

Berikut ini adalah contoh papan:

I L A W
B N G E
I U A O
A S R L

Di papan ini BINGO,, ORANGEdan WEARSmerupakan kata yang valid, tetapi SURGEdan RUSSIAtidak:

  • SURGE: Tidak ada pasangan yang berdekatan di papan memiliki RG.
  • RUSSIA: Stidak dapat digunakan dua kali.

Modifikasi Boggle adalah versi modifikasi Boggle, dengan aturan berikut:

  • Ukuran papan adalah m-dengan- n, di mana mdan ndapat berupa bilangan bulat positif.
  • Setiap sel dapat berisi satu byte antara 0 dan 255 inklusif.
  • Sel dapat digunakan lebih dari sekali, tetapi tidak dua kali berturut-turut.

Menggunakan contoh papan di atas, sebagai tambahan BINGO, ORANGEdan WEARS, LANGUAGEmenjadi string yang valid (karena Gdigunakan dua kali, tetapi tidak dua kali berturut-turut) tetapi RUSSIAmasih tidak (karena SSberpasangan).

Berikut adalah contoh lain menggunakan fragmen kode. String from itertools import*\ndapat ditemukan di papan berikut, tetapi tidak from itertoosl import*atau from itertools import *:

f   i   ' ' s
r   t   m   l
e   o   o   p
\n  *   t   r

Perhatikan bahwa Anda perlu dua ountuk mencocokkan oourutan.


Tantangan polisi

Tulis program lengkap dalam bahasa pilihan Anda yang memenuhi aturan berikut:

  • Program harus mencetak sesuatu yang konsisten selama beberapa kali proses.
  • Program harus selesai dalam waktu sekitar 5 detik.
  • Program tidak boleh mengambil input apa pun.
  • Baik program dan outputnya harus minimal 2 byte.
  • Apa pun yang terkait dengan fungsi hash, PRNG, atau kriptografi tidak diizinkan.

Kemudian, susun program dan hasil Anda menjadi dua papan boggle yang dimodifikasi . Setiap papan bisa berupa kotak. Perhatikan bahwa papan 1-by-N dan 2-by-N dapat menimbulkan tantangan khusus bagi polisi dan perampok. Jika Anda ingin beberapa sel di papan tidak dapat digunakan (untuk menambah lebih banyak pembatasan), Anda dapat memilih beberapa byte yang tidak berguna dan mengisi lubang dengannya.

Misalnya, jika Anda menginginkan kisi 2x2 dengan gerakan horizontal / vertikal saja, Anda dapat melakukan ini sebagai gantinya:

a b
c d
-----------
X a X
c X b
X d X

Dalam kiriman Anda, tentukan bahasa yang Anda gunakan, panjang kode sumber dan output, dan dua papan boggle. Perhatikan bahwa kode yang lebih pendek dan / atau keluaran yang lebih panjang diperbolehkan untuk perampok , sehingga Anda dapat memilih untuk memberikan ruang untuk jumlah byte (yaitu tentukan kode yang lebih panjang dan / atau keluaran yang lebih pendek dari solusi Anda yang sebenarnya).

Jika papan Anda mengandung beberapa karakter yang tidak dapat dicetak, Anda dapat menentukan papan sebagai nilai byte.

Setelah seminggu seorang polisi diposting, itu dapat ditandai dengan aman oleh poster jika tidak retak sampai saat itu. Polisi masih terbuka untuk perampok sampai benar-benar ditandai aman. Polisi yang aman tidak dapat dipecahkan, dan poster harus mengungkapkan solusi yang dimaksud.

Anda harus mengaburkan papan sebanyak mungkin, karena tantangan perampok adalah untuk memecahkan kiriman Anda dengan menemukan kode dan hasilnya di papan. Jika Anda ingin menjejalkan kode panjang ke papan kecil, jawaban untuk tantangan Modifikasi Boggle asli dapat memberikan beberapa wawasan.

Mencetak angka untuk polisi

Karena sulit untuk mengatakan apakah papan yang lebih besar atau lebih kecil lebih sulit untuk ditembus, setiap pengiriman polisi yang aman dihitung sebagai skor 1. Pengguna dengan skor tertinggi menang. Disarankan untuk berpartisipasi dengan berbagai bahasa dan pendekatan kreatif.

Contoh cop & format

# Japt, code 9 bytes, output 20 bytes

Code board: 2 rows, 2 columns

    `l
    íÏ

As byte values:

    96  108
    237 207

Output board: 3 rows, 3 columns

    175
    120
    643

Skrip verifikasi Kericuhan yang dimodifikasi

Semua skrip di bawah ini memiliki input contoh dengan itu.

Script untuk string karakter (kode / output) & boggle. Ini tidak mendukung string multi-line. Format input adalah

  • satu baris string (baik kode atau output), diikuti oleh
  • papan boggle mentah.

Script untuk string karakter dengan boggle nilai-byte. Gunakan ini jika string target dapat dicetak tetapi memiliki satu atau lebih baris baru di dalamnya. Format input adalah

  • jumlah garis untuk string,
  • string mentah (mungkin multi-line), lalu
  • papan boggle sebagai nilai byte.

Skrip untuk byte-value string & boggle. Gunakan ini jika string target berisi satu atau lebih karakter yang tidak dapat dicetak. Format input adalah

  • satu baris string (baik kode atau output) sebagai nilai byte, diikuti oleh
  • papan boggle sebagai nilai byte.
Bubbler
sumber
Hanya untuk memastikan, baik output dan input byte dapat digunakan kembali, tetapi tidak dapat digunakan dua kali berturut-turut, bukan?
Maks
@maxb Anda benar, kecuali kodenya , bukan input (kode tidak dapat menerima input sama sekali).
Bubbler
Kesalahan saya, maksud saya kodenya. Apakah ada batasan panjang output?
Maks
@maxb Tidak ada batasan, tetapi perhatikan bahwa program Anda akan berakhir dalam 5 detik.
Bubbler
Saya sudah mencoba untuk menghasilkan output non-sepele untuk brainfuck hanya menggunakan []+., tapi saya pikir itu mungkin tidak mungkin. Adakah yang mau mencoba?
Jo King

Jawaban:

3

JavaScript, kode 1443 bytes, 3 bytes output, di- crack oleh @ShieruAsakoto

Papan kode, 3 baris dengan 4 kolom

!![+
+[]]
+]()

Papan keluaran, 1 baris demi 2 kolom

aN

Agak jelas apa outputnya. Ini akan menjadi kode yang menyenangkan untuk dipecahkan. Lupa menyebutkan bahwa itu dimaksudkan untuk menjadi program penuh (dan agak menyiratkan bahwa itu tidak; lihat paragraf di bawah). Untuk tantangan nyata, lihat jawaban saya yang lain .

Saya tidak berpikir ini Node.js, tetapi pengetahuan saya di bidang ini nol. Apa yang bisa saya katakan adalah itu berjalan di konsol saya di Edge dan Chrome.

Khuldraeseth na'Barya
sumber
1
Apa JSF ** k! lmao, dan saya yakin hasilnya adalahNaN
Shieru Asakoto
@ShieruAsakoto Anda memiliki celah yang valid. Saya akan mengembalikan ini ke keadaan semula, dan Anda dapat membatalkan penghapusan jawaban Anda. Saya akan mengirim ulang dengan klarifikasi.
Khuldraeseth na'Barya
dilakukan reverting;) codegolf.stackexchange.com/a/173396/71546
Shieru Asakoto
3

JavaScript (Node.js), kode 53 byte, menghasilkan 41 byte, diretas oleh Arnauld

Papan Kode: 3 baris dengan 6 kolom:

cog(n)
lsn1()
e.+<<;

Papan Keluaran: 4 baris dengan 6 kolom:

481534
270906
602148
53829n

Petunjuk: kode hanya berfungsi pada mesin V8 JS, versi 6.7 atau yang lebih baru

Milik saya console.log(1n+1n+1n<<(1n+1n+1n+1n<<1n+1n+1n+1n+1n));dengan tanda titik koma (jangan tanya mengapa) dan hasilnya adalah ya, 3 * 2**128dengan trailing nmenandai nomor sebagai literal BigInt.

Shieru Asakoto
sumber
2
Jika ini tidak dimulai console.log, saya akan sangat terkesan
Quintec
2
Nomor tunggal saja tidak dapat dicetak sebagai 41 digit. Seharusnya ada cara untuk melemparkan ke string, tetapi ... consoletidak tersedia kecuali saat awal, tidak ada tugas, tidak ada string literal, tidak ada tanda kurung (sehingga tidak ada array literal atau pengindeksan). Saya bahkan memeriksa Node global dan consoleproperti, tetapi tidak ada yang cocok di sana.
Bubbler
Cracked
Arnauld
2

JavaScript (Node.js), kode 88 byte, output 2 byte, diretas oleh Arnauld dengan 27-byte

Papan Kode: 7 baris dengan 9 kolom:

e.i--)=%5
lc;,2s*17
fosn8407%
gnr785138
s(;527067
=);s%1419
4n,i=1832

Papan Keluaran: 1 baris dengan 2 kolom:

0n

Outputnya jelas, tetapi kodenya tidak. ;)

Jawaban asli saya adalah tes LL dari M 127 , yang

for(s=4n,i=125;i;s%=170141183460469231731687303715884105727n,i--)s=s*s-2n;console.log(s)

Jawaban Arnauld menggunakan titik koma untuk menjembatani celah yang lebih pendek, dan saya sama sekali tidak mengharapkan (atau menyadari) s%=sbagian itu:

s=4n;s%=s;7n;console.log(s)

Oh, omong-omong 3 posting saya sama sekali tidak ada hubungannya dengan fungsi hash, PRNGs atau kriptografi. Saya bersumpah ketiga ini hanya tentang manipulasi angka.

ada byte yang tidak digunakan di papan kode

Shieru Asakoto
sumber
Cracked
Arnauld
1

MathGolf, kode 42 byte, menghasilkan 22 byte

Papan Kode: 3 baris dengan 7 kolom

 r5 qÄ 
~←▲↔▼→~
 Äq 5r 

Papan Keluaran: 3 baris dengan 6 kolom:

421
402
135

Ini agak lebih lama, tapi saya akan memberikan sedikit petunjuk: Papan kode seharusnya menyerupai bowtie, dan Anda mungkin perlu "mengikat" itu beberapa kali.

maks
sumber
1

JavaScript, 1443 kode byte, 3 byte output, crack oleh @Bubbler

Program lengkap.

Papan kode, 3 baris dengan 4 kolom

!![+
+[]]
+]()

Papan keluaran, 1 baris demi 2 kolom

aN

Agak jelas apa outputnya. Ini akan menjadi kode yang menyenangkan untuk dipecahkan.

Saya tidak berpikir ini Node.js, tetapi pengetahuan saya di bidang ini nol. Apa yang bisa saya katakan adalah bahwa itu berjalan di Edge dan Chrome. Maksudnya "program penuh" yang saya maksudkan saat dijalankan antara <script>dan </script>di dalam file HTML.

Khuldraeseth na'Barya
sumber
Retak
Bukankah ini identik dengan posting JS Anda yang lain?
Shaggy
@Shaggy Yang pertama tidak menyebutkan program lengkapnya , dan malah dipecahkan sebagai REPL.
Arnauld
1

Python 3, kode 56 byte, keluaran 69 byte, AMAN

Papan Kode: 4 baris dengan 10 kolom:

  print(1,
b; f,)*l(1
 =lamb+a,)
ese d:(-1)

Papan Keluaran: 7 baris dengan 7 kolom:

1466900
3427430
1304212
9653895
0511633
5680228
4437679

Jauh lebih sulit daripada tantangan pertamaku;)

Kode dan Output yang Diharapkan:

Kode:

l=lambda a,b:(a+b)*l(a-1,a*b)if a else b;print(l(11,11))

Keluaran:

421827435070654423113161304555505960246647934329322186026783332352000
Shieru Asakoto
sumber
Saya suka bagaimana Anda tidak dapat membentuk lambda xD
Quintec
Anda bisa, menggunakan kembali surat diperbolehkan, tidak hanya dua kali berturut-turut. (Saya pikir saya memiliki bentuk yang ini, tapi itu sangat tweakable, dan output itu bisa apa saja ... Saya menemukan program 56 byte dengan output 69 byte, tetapi tidak pada papan Boggle.)
Lynn
OK, saya baru sadar bahwa output diperbolehkan lebih lama yang mengubah banyak hal. Tapi saya masih belum melihat cara untuk "mengelabui" (saya yakin ada beberapa cara untuk menghasilkan 10^lots.)
Lynn
1
Aku yakin itu akan terlihat seperti l=lambda a,b:+l(a-1,a*b)if a else b;print(l(11,1))... Tapi aku tidak bisa menemukannya.
tsh
0

MathGolf, kode 7 byte, menghasilkan 12 byte

Hanya tantangan mudah pertama, jika Anda ingin masuk ke MathGolf!

Papan Kode: 2 baris dengan 4 kolom

╒Æ■r
îm4~

Papan Keluaran: 2 baris dengan 3 kolom

140
412
maks
sumber
0

Jelly, kode 17 byte, output 19 byte

Metode umum seharusnya tidak terlalu sulit untuk dipilih.

Papan kode

»V
”;
“;

Papan keluaran

Krgwn
Ubots
RAbbt
dylnan
sumber
0

J (REPL), kode 9 byte, menghasilkan 10.000 byte

Papan kode: 3 baris, 3 kolom

epi
j.r
oI5

Papan keluaran: 3 baris, 2 kolom, sebagai nilai byte

10  10
48  49
32  255

Intinya, \n\n/ 01/ <space><don't use>.

Solusi yang dimaksudkan memberikan output 20008-byte.

Bubbler
sumber