To jest pytanie towarzyszące do Code Crosswords . Odpowiedzi rabusia przejdź tutaj.
Zobacz, gdzie powinniśmy umieścić złodziei? dla meta-informacji.
źródło
To jest pytanie towarzyszące do Code Crosswords . Odpowiedzi rabusia przejdź tutaj.
Zobacz, gdzie powinniśmy umieścić złodziei? dla meta-informacji.
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, ~1
aby 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 T
jako 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.professorfish, CJam, 41 ciemności
(To rozwiązanie wymaga kilku spacji, więc nie był to ten, którego szukał profesororfish.)
To była świetna zabawa. Zauważ, że
#
pod tym6
kodem znajduje się kod, a nie ciemna komórka. Przejdźmy przez to:Przez
Wskazówka 2:
[[4 3]]
. To był jeden z trudniejszych, ponieważ naprawdę utknąłem przy próbach4Z]]`
lub podobnych. Okazuje się, że możesz używać produktu kartezjańskiegom*
do rzeczy, które nie są tablicą, i stworzy tablicę dla ciebie. Oto on:Wskazówka 4:
24717
. Do czasu, mam do tego,H
,J
,s
i końcowe miejsca były już na miejscu.H
Rozdawał że mogę chyba tylko ponownie wykorzystać17
i zrobić\
na końcu.J
Popycha19
i247 == 13 * 19
tak: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ł'd
kiedy tam, więc to było między wybór'd1+eu
,'deu1+
albo wariant, w którym użyłem)
i przestrzeni zamiast1+
(dla osób spoza CJam, to przyjmującd
postać i przyrostu i górnej obudowy je w dowolnej kolejności) . Jednaku
ostatnia kolumna wyglądała na przydatną dla A-down. Więc wybrałem pierwszy z nich. W końcu też'd) eu
by 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łemZauważ, że
]
mógł to być także jeden z nichLMOQR
.Wskazówka B:
"m
. Po prostu naprawdę musiałem dopasować ten do reszty, ale kilka znaków miało znaczenie. Miałem już{
im
. Zamiast używać bloku, zmieniłem{
się w postać, odrzuciłem ją, a następnie wypchnąłem dwie wymagane postacie: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:Na dół
Wskazówka 1:
[2 2 2 3]
. To wyglądało zbyt podejrzanie jak na czynniki pierwsze, żeby nie było nim jedno. :)Wskazówka 3:
3010936384
. Faktoring pokazał, że tak naprawdę jest to 38 6 . Jedynym pytaniem było, jak uzyskać38
zgodność z 2 -ross. W końcu potrzebowałem*
trzeciego, więc podwojenie19
było:Wskazówka 5:
2017
. Dwie postacie na tak dużą liczbę? Wystarczy użyć wbudowanych zmiennych dwucyfrowych: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.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: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ękiu
swoim miejscu od 8 przekrojowego zaczęłam stawiać-3
i3
na rogach, gdzie żadna inna wskazówka troszczyli się o nich. Ale potem potrzebowałemm
na dole. Myślę, że istnieje wiele sposobów, aby dostać3
się_m_
, ale najprostszym brał pierwiastek kwadratowy z 9:Podpowiedź C:
-1
. Miałem już tam dekrement, więc po prostu postawiłem tam,0
gdzie nikt inny się nie przejmował:Podpowiedź E:
Stack: ""
. To był najprostszy. Po prostu zadzwoń do debuggera:źródło
COTO, Javascript ES4, 37 Darks
5+Math.PI
lubMath.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+-a
wyglą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={}=51
i 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"+0
albo9+"0"
pasują.6<<I
okazała się odpowiedzią, pozostawiając +0, aby dodać na końcu.I-I<4
,I-6<4
itp)-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-"..]"xx4
musi 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!
źródło
Układanka Python grc
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%b
i hash. Przy 6 lub mniej pustych miejscach kończy się w ciągu kilku sekund, podczas gdy trzeba trochę poczekać na 7.źródło
Rozwiązanie łamigłówki MATLAB firmy COTO
Myślę, że dość dobrze grałem w tę grę, ponieważ jest tam 14 pól.
Ten skrypt testowy:
produkuje następujące dane wyjściowe:
źródło