Ini adalah pertanyaan pendamping untuk Code Crosswords . Jawaban perampok ada di sini.
Lihat Di mana kita harus menempatkan perampok? untuk meta-info.
Ini adalah pertanyaan pendamping untuk Code Crosswords . Jawaban perampok ada di sini.
Lihat Di mana kita harus menempatkan perampok? untuk meta-info.
Jawaban:
Saya harus sedikit fudge tentang 7-Down dengan menerapkan perilaku yang tidak terdefinisi. es1024 telah mengindikasikan bahwa penggunaan UB ini adalah solusi yang dimaksudkan. Ini akan bekerja pada komputer kebanyakan orang. Saya datang dengan berbagai ekspresi mencapai hasil yang diinginkan seperti -1 << 30
, 3 << 30
, 6 << 29
, dan ~(~0U/4)
tapi semua dari mereka membuat mustahil bagi saya untuk mendapatkan 5-Di. Jadi saya menggunakan properti arsitektur khusus Intel yang hanya 5 bit paling signifikan digunakan untuk menentukan ukuran shift kiri. Perhatikan bahwa itu perlu ~_
dan bukan ~1
agar jumlah yang digeser bukan konstanta waktu kompilasi. Saya menguji ekspresi dengan kode berikut:
#define T(X) _ = c; _ = X; printf("%d\n", _);
z[4] = {9};
int main(c)
{
int _;
T("01"[0])
T(-8)
T(-2)
T(11<-328111)
T(+2+71)
T(9+0)
T(0**z)
T(5;)
T(0<-000)
T(2+~3)
T(!91)
T(!_)
T(2**z)
T('_T;')
T("11"?5*9:2)
T(15<<9)
T(0+22)
T(-211*0-97;)
T(-17*0)
T(3+0<<~_)
T(8+000)
T(+0)
T(42)
T(+!z)
T(~_)
}
#define T
sebagai komponen yang diperlukan untuk solusi Anda. Namun, pertanyaannya tetap, mengapa M-lintas bekerja? Apakah mendefinisikan konstanta multi-karakter hanya menyatukan nilai byte? Jika demikian, saya belajar sesuatu yang baru hari ini. :)
int
, sehingga Anda dapat memasukkan hingga empat byte tanpa kehilangan informasi.
(Solusi ini sebenarnya membutuhkan beberapa ruang, jadi bukan yang dicari professorfish.)
#K###I#'32
#HDJ*s\ ##
2##2#`#`#-
4Zm*`##L#3
m##6##]`'
f####e#`#'
`#0#'d1+eu
## #!####9
## '{;'"'m
C5(#}####q
Itu sangat menyenangkan. Perhatikan bahwa di #
bawahnya 6
sebenarnya kode dan bukan sel gelap. Mari kita lalui ini:
Petunjuk 2: [[4 3]]
. Ini adalah salah satu yang lebih sulit, karena saya benar-benar terjebak dalam mencoba 4Z]]`
atau serupa. Ternyata Anda bisa menggunakan produk Cartesian m*
pada barang-barang yang bukan array, dan itu akan membuat array untuk Anda. Jadi begini:
4Zm*`
Petunjuk 4: 24717
. Pada saat aku sampai ini, H
, J
, s
dan trailing ruang sudah di tempat. The H
menyerahkan bahwa saya mungkin bisa saja menggunakan kembali 17
dan melakukan \
di akhir. The J
mendorong sebuah 19
dan 247 == 13 * 19
, sehingga:
HDJ*s\
Petunjuk 7: 32
. Ada banyak cara untuk melakukan hal ini: Y5#
, 3 2
, ZY
, YZ\
, 4(2
, 2)2
, '32
. Saya pergi dengan yang terakhir, karena memulai dengan karakter sepertinya menjanjikan untuk 7-down, dan itu ternyata benar.
Petunjuk 8: E
. Saya sudah punya 'd
ketika saya sampai di sana, jadi itu antara memilih 'd1+eu
, 'deu1+
atau varian di mana saya menggunakan )
dan ruang bukan 1+
(untuk orang-orang non-CJam, ini mengambil d
karakter dan kenaikan dan casing atas, dalam urutan apa pun) . Namun, u
pada kolom terakhir terlihat berguna untuk A-down. Jadi saya memilih yang pertama. Pada akhirnya, 'd) eu
akan berhasil juga.
Petunjuk 9: ""
. Nah, ini harus menjadi "string kosong, dapatkan representasi string, dorong spasi". Tetapi juga membutuhkan `untuk representasi string dalam 7-down, dan ruang di A-down tampaknya berguna juga, jadi saya memilih
]`'
Perhatikan bahwa ]
mungkin juga salah satunya LMOQR
.
Petunjuk B: "m
. Aku benar-benar harus menyesuaikan yang ini dengan yang lain, tetapi ada beberapa karakter yang penting. Saya sudah punya {
dan m
. Jadi alih-alih menggunakan blok, saya berubah {
menjadi karakter, membuangnya, dan kemudian mendorong dua karakter yang diperlukan:
'{;'"'m
Petunjuk D: 124
. Saya memecahkan yang ini bersama-sama dengan C-down, yang paling mudah dengan penurunan pada akhirnya. Jadi saya mendorong 12, 5, dan mengurangi yang terakhir:
C5(
Petunjuk 1: [2 2 2 3]
. Itu tampak terlalu mencurigakan seperti faktorisasi utama sehingga tidak bisa dijadikan faktor. :)
24mf`
Petunjuk 3: 3010936384
. Anjak piutang ini menunjukkan bahwa sebenarnya 38 6 . Satu-satunya pertanyaan adalah bagaimana mendapatkan 38
kepatuhan dengan 2-lintas. Pada akhirnya saya membutuhkan sebuah *
di tempat ketiga, jadi menggandakan 19
itu adalah:
J2*6#
Petunjuk 5: 2017
. Dua karakter untuk jumlah yang begitu besar? Cukup gunakan variabel dua digit bawaan:
KH
Petunjuk 6: "18"
. Saya pikir hanya ada satu cara untuk melakukan ini dalam 3 karakter. Gunakan bawaan 18, konversikan menjadi string, dan kemudian ke representasi stringnya.
Is`
Petunjuk 7: ' "\"\""
. Mungkin bagian tersulit dari teka-teki. Secara khusus, saya hanya perlu mendapatkan "\"\""
dalam tiga karakter. Caranya adalah dengan mendapatkan representasi string dari string kosong dua kali. Itu menyebabkan:
' `L``+
THe +
tidak perlu, tetapi dibutuhkan oleh 8-di.
Petunjuk 8: !{}
. Blok perlu masuk dalam kode, sehingga hanya menyisakan dua karakter !
, yang berarti menggunakan literal lain:
'!{}
Petunjuk A: -3u3
. Dengan u
di tempat dari 8-seberang, saya mulai menempatkan -3
dan 3
di sudut-sudut di mana tidak ada petunjuk lain yang peduli tentang mereka. Tapi kemudian saya membutuhkan m
di bagian bawah. Saya pikir ada beberapa cara untuk mendapatkan 3
dengan _m_
, tetapi paling sederhana yang mengambil akar kuadrat dari 9:
-3 'u9mq
Petunjuk C: -1
. Saya sudah memiliki decrement di sana, jadi saya hanya menempatkan di 0
mana tidak ada orang lain yang peduli:
0 (
Petunjuk E: Stack: ""
. Ya itu yang paling sederhana. Panggil saja debugger:
ed
COTO, Javascript ES4, 37 Darks
__________
|{}=51###6#|
|a##.#I-9<4|
|:##-##"#<#|
|5+Math.PI#|
|}##+##.#+#|
|["9"+0][0]|
|'##p##"###|
|a+-a#a=-10|
|'##c##=###|
|]##"\x48I"|
¯¯¯¯¯¯¯¯¯¯
5+Math.PI
atau Math.PI+5
; tetapi yang terakhir akan meninggalkan 'M' dan 'h' menyeberang ke ekspresi lain, sepertinya tidak mungkin."\x48I"
.xxxa
, mengevaluasi ke nol, jadi -a + a? a + -a? 3 + -a? a+-a
tampak terbaik karena memberi saya apa yang tampak seperti arang di string di 1dn.{x:5}xxa'x
. Karena nilai yang dikembalikan adalah 5, itu harus menariknya keluar dari objek, jadi {x:5}['a']
, yang berarti karakter yang hilang juga adalah:{a:5}['a']
t={}=51
, dan berhasil. Tidak tahu itu!5xxax"pac"
=> "2pac". Ini pasti 5-a+"pac"
, entah bagaimana, jadi char kedua harus '.' untuk literal floating point.[xx"xxxx]
, mengembalikan "90". Jadi ini harus berupa array literal dengan nilai ditarik keluar; hanya ada ruang untuk satu nilai jadi kami punya [xx"xx][0]
. Tidak ada ruang untuk dua string di sana, tetapi baik "9"+0
atau 9+"0"
pas.6<<I
ternyata jawabannya, meninggalkan +0 untuk menambahkan hingga akhir.I-I<4
, I-6<4
, dll)-x..]xxx4
. ".." melempar saya - hanya ada beberapa cara yang bisa menjadi sintaks hukum dan mengapa saya bertanya apakah ES4 yang dimaksudkan - apakah ini fitur aneh dari spec yang ditinggalkan itu? Tetapi kemudian saya melihat bahwa ini adalah herring merah; -""
adalah NaN, jadi -"..]"xx4
pasti ada apa - perbandingan dengan NaN, menghasilkan false; '==' akan dilakukan, tetapi perlu melihat jawaban terakhir untuk konfirmasi ...=-10
. Sejujurnya saya juga melihat versi 9dn sebelumnya, dan menyadari bahwa itu pasti sesuatu =top
(untuk mendapatkan Window kembali). Variabel yang ditugaskan untuk bisa menjadi atau saya, tidak masalah.Tricky puzzle!
Untuk semua ekspresi floating-point yang panjang, saya membuat program C ++ untuk menghasilkan ekspresi matematika Python secara paksa dan mengevaluasinya. Ini mengasumsikan semua angka adalah floating-point dan hanya mendukung operator +, -, *, /, //, **, dan ~. Saya menggunakannya untuk mendapatkan setiap petunjuk lebih dari 5 karakter kecuali a**9*27%b
dan hash. Dengan 6 atau kurang kosong, selesai dalam beberapa detik, sementara ada sedikit menunggu 7.
Saya kira saya bermain golf ini dengan cukup baik, karena ada 14 ruang.
Skrip tes ini:
g=4;
o=magic(3);
D=@disp;
D(max([ 2]));
D( i^3);
D(o^0);
D(6 -7+eye );
D((i));
D(.1 ^5* g );
D(~2);
D(diag(~o) );
D(asin (1)*i);
D((93+7) +~g);
D( 10e15);
D(2*ones (2));
D(02 ^ 9 );
D(-i );
D(~o);
menghasilkan output berikut:
2
0 - 1.0000i
1 0 0
0 1 0
0 0 1
0
0 + 1.0000i
4.0000e-05
0
0
0
0
0 + 1.5708i
100
1.0000e+16
2 2
2 2
512
0 - 1.0000i
0 0 0
0 0 0
0 0 0