To jest pytanie towarzyszące do Code Crosswords . Odpowiedzi rabusia przejdź tutaj.
Zobacz, gdzie powinniśmy umieścić złodziei? dla meta-informacji.
To jest pytanie towarzyszące do Code Crosswords . Odpowiedzi rabusia przejdź tutaj.
Zobacz, gdzie powinniśmy umieścić złodziei? dla meta-informacji.
Odpowiedzi:

Musiałem trochę podkręcić 7-Down, powołując się na niezdefiniowane zachowanie. es1024 wskazał, że takie zastosowanie UB było zamierzonym rozwiązaniem. Działa to jednak na komputerach większości ludzi. Wpadłem różnych wyrażeń osiągnięcia pożądanego rezultatu, takie jak -1 << 30, 3 << 30, 6 << 29, i ~(~0U/4), ale wszystkie z nich uniemożliwiało mi dostać 5-Across. Użyłem więc właściwości specyficznej dla architektury Intel, że do określenia wielkości lewego przesunięcia używa się tylko najmniej znaczących 5 bitów. Zauważ, że tak musi być, ~_a nie, ~1aby wielkość przesunięcia nie była stałą czasową kompilacji. Przetestowałem wyrażenia za pomocą następującego kodu:
#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 Tjako niezbędny element twojego rozwiązania. Pozostaje jednak pytanie, dlaczego M -ross działa? Czy zdefiniowanie stałej składającej się z wielu znaków po prostu łączy wartości bajtów? Jeśli tak, nauczyłem się dziś czegoś nowego. :)
int, więc możesz wstawić do czterech bajtów bez utraty informacji.
(To rozwiązanie wymaga kilku spacji, więc nie był to ten, którego szukał profesororfish.)
#K###I#'32
#HDJ*s\ ##
2##2#`#`#-
4Zm*`##L#3
m##6##]`'
f####e#`#'
`#0#'d1+eu
## #!####9
## '{;'"'m
C5(#}####q
To była świetna zabawa. Zauważ, że #pod tym 6kodem znajduje się kod, a nie ciemna komórka. Przejdźmy przez to:
Wskazówka 2: [[4 3]]. To był jeden z trudniejszych, ponieważ naprawdę utknąłem przy próbach 4Z]]`lub podobnych. Okazuje się, że możesz używać produktu kartezjańskiego m*do rzeczy, które nie są tablicą, i stworzy tablicę dla ciebie. Oto on:
4Zm*`
Wskazówka 4: 24717. Do czasu, mam do tego, H, J, si końcowe miejsca były już na miejscu. HRozdawał że mogę chyba tylko ponownie wykorzystać 17i zrobić \na końcu. JPopycha 19i 247 == 13 * 19tak:
HDJ*s\
Wskazówka 7: 32. Istnieje kilka sposobów, aby to zrobić: Y5#, 3 2, ZY, YZ\, 4(2, 2)2, '32. Poszedłem z ostatnim, ponieważ rozpoczęcie od postaci wydawało się obiecujące dla 7-down, a to okazało się słuszne.
Wskazówka 8: E. Już miał 'dkiedy tam, więc to było między wybór 'd1+eu, 'deu1+albo wariant, w którym użyłem )i przestrzeni zamiast 1+(dla osób spoza CJam, to przyjmując dpostać i przyrostu i górnej obudowy je w dowolnej kolejności) . Jednak uostatnia kolumna wyglądała na przydatną dla A-down. Więc wybrałem pierwszy z nich. W końcu też 'd) euby zadziałało.
Wskazówka 9: "". Musiał to być „pusty ciąg, uzyskaj reprezentację ciągu, wciśnij spację”. Ale potrzebowałem również `dla reprezentacji łańcucha w 7-dół, a spacja w A-down również wydawała się przydatna, więc wybrałem
]`'
Zauważ, że ]mógł to być także jeden z nich LMOQR.
Wskazówka B: "m. Po prostu naprawdę musiałem dopasować ten do reszty, ale kilka znaków miało znaczenie. Miałem już {i m. Zamiast używać bloku, zmieniłem {się w postać, odrzuciłem ją, a następnie wypchnąłem dwie wymagane postacie:
'{;'"'m
Podpowiedź: D: 124. Rozwiązałem to razem z C-down, co było najłatwiejsze ze spadkiem na końcu. Więc wypycham 12, 5 i zmniejszam to drugie:
C5(
Wskazówka 1: [2 2 2 3]. To wyglądało zbyt podejrzanie jak na czynniki pierwsze, żeby nie było nim jedno. :)
24mf`
Wskazówka 3: 3010936384. Faktoring pokazał, że tak naprawdę jest to 38 6 . Jedynym pytaniem było, jak uzyskać 38zgodność z 2 -ross. W końcu potrzebowałem *trzeciego, więc podwojenie 19było:
J2*6#
Wskazówka 5: 2017. Dwie postacie na tak dużą liczbę? Wystarczy użyć wbudowanych zmiennych dwucyfrowych:
KH
Wskazówka 6: "18". Myślę, że jest tylko jeden sposób na zrobienie tego w 3 postaciach. Użyj wbudowanego 18, przekonwertuj go na ciąg, a następnie na jego reprezentację ciągu.
Is`
Wskazówka 7: ' "\"\"". Prawdopodobnie najtrudniejsza część układanki. W szczególności potrzebowałem "\"\""tylko trzech znaków. Sztuczka polegała na dwukrotnym uzyskaniu reprezentacji ciągu pustego ciągu. Doprowadziło to do:
' `L``+
THe +nie jest konieczne, ale potrzebne było przez 8-poprzek.
Wskazówka 8: !{}. Blok musiał zostać wpisany w kodzie, aby pozostały tylko dwa znaki !, co oznaczało użycie innego literału:
'!{}
Podpowiedź A: -3u3. Dzięki uswoim miejscu od 8 przekrojowego zaczęłam stawiać -3i 3na rogach, gdzie żadna inna wskazówka troszczyli się o nich. Ale potem potrzebowałem mna dole. Myślę, że istnieje wiele sposobów, aby dostać 3się _m_, ale najprostszym brał pierwiastek kwadratowy z 9:
-3 'u9mq
Podpowiedź C: -1. Miałem już tam dekrement, więc po prostu postawiłem tam, 0gdzie nikt inny się nie przejmował:
0 (
Podpowiedź E: Stack: "". To był najprostszy. Po prostu zadzwoń do debuggera:
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.PIlub Math.PI+5; ale to ostatnie pozostawiłoby „M” i „h” przejście do innych wyrażeń, wydawało się mało prawdopodobne."\x48I".xxxa, czyli do zera, więc -a + a? + -a? 3 + -a? a+-awyglądał najlepiej, ponieważ dał mi coś, co wyglądało jak char w ciągu 1dn.{x:5}xxa'x. Ponieważ zwracana wartość wynosi 5, musi ona wyciągać ją z obiektu {x:5}['a'], co oznacza, że brakujący znak końcowy to również:{a:5}['a']t={}=51i zadziałało. Nie wiedział tego!5xxax"pac"=> "2pac". To musi być 5-a+"pac"jakoś, więc drugim znakiem musi być „.” dla literału zmiennoprzecinkowego.[xx"xxxx], zwracając „90”. Musi to być literał tablicowy z wyciągniętą wartością; mamy miejsce tylko na jedną wartość, więc mamy [xx"xx][0]. Nie ma tu miejsca na dwie struny, ale albo pasują, "9"+0albo 9+"0"pasują.6<<Iokazała się odpowiedzią, pozostawiając +0, aby dodać na końcu.I-I<4, I-6<4itp)-x..]xxx4. „..” rzuciło mnie - istnieje tylko kilka sposobów, które mogą być legalną składnią i dlatego zapytałem, czy ES4 jest tym, co było zamierzone - czy to była jakaś dziwna cecha tej porzuconej specyfikacji? Ale potem zobaczyłem, że to był czerwony śledź; -""jest NaN, więc -"..]"xx4musi być to, co tam jest - porównanie do NaN, zwracające wartość false; „==” zrobi, ale trzeba spojrzeć na ostatnią odpowiedź w celu potwierdzenia ...=-10. Szczerze mówiąc, przyjrzałem się również wcześniejszej wersji 9dn i zdałem sobie sprawę, że to musi być coś =top(aby odzyskać okno). Zmienna przypisana do może być a lub I, to nie ma znaczenia.Podstępna łamigłówka!

Dla wszystkich długich wyrażeń zmiennoprzecinkowych stworzyłem program C ++ do generowania wyrażeń matematycznych w języku Python siłą i ich oceny. Zakłada, że wszystkie liczby są zmiennoprzecinkowe i obsługuje tylko operatory +, -, *, /, //, ** i ~. Użyłem go, aby uzyskać każdą wskazówkę dłuższą niż 5 znaków oprócz a**9*27%bi hash. Przy 6 lub mniej pustych miejscach kończy się w ciągu kilku sekund, podczas gdy trzeba trochę poczekać na 7.
Myślę, że dość dobrze grałem w tę grę, ponieważ jest tam 14 pól.

Ten skrypt testowy:
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);
produkuje następujące dane wyjściowe:
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