Це супутнє запитання для Кодових кросвордів . Відповіді грабіжника йдуть сюди.
Дивіться, куди нам покласти розбійників? для метаінфо.
Це супутнє запитання для Кодових кросвордів . Відповіді грабіжника йдуть сюди.
Дивіться, куди нам покласти розбійників? для метаінфо.
Відповіді:
Мені довелося трохи пограти на 7-Down, викликаючи невизначене поведінку. es1024 вказав, що таке використання UB було запланованим рішенням. Він буде працювати на комп’ютерах більшості людей. Я прийшов з різними виразами досягнення бажаного результату , такі як -1 << 30
, 3 << 30
, 6 << 29
і , ~(~0U/4)
але всі вони зробили це неможливим для мене , щоб отримати 5-Across. Тому я використав властивість архітектури Intel, що для визначення розміру лівого зсуву використовуються лише найменш значущі 5 біт. Зауважте, що вона повинна бути, ~_
а не ~1
такою, щоб сума, яку потрібно перенести, не була константа часу компіляції. Я випробував вирази із наступним кодом:
#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
як необхідний компонент вашого рішення. Однак питання залишається, чому M-через працює? Чи визначає константу з декількома символами просто об'єднувати значення байта? Якщо так, то сьогодні я дізнався щось нове. :)
int
, тому ви можете вводити до чотирьох байтів без втрати інформації.
(Це рішення насправді вимагає декількох просторів, тому це не той професорш, який шукали.)
#K###I#'32
#HDJ*s\ ##
2##2#`#`#-
4Zm*`##L#3
m##6##]`'
f####e#`#'
`#0#'d1+eu
## #!####9
## '{;'"'m
C5(#}####q
Це було чудово весело. Зауважте, що #
внизу 6
код - це насправді код, а не темна комірка. Перейдемо до цього:
Підказка 2: [[4 3]]
. Це було одне з хитріших, бо я справді застряг у спробах 4Z]]`
чи подібних. Виявляється, ви можете використовувати декартовий продукт m*
для речей, які не є масивом, і він створить для вас масив. Отже ось це:
4Zm*`
Підказка 4: 24717
. На той час , коли я добрався до цього H
, J
, s
і замикають простір вже були на місці. Те H
, що я, ймовірно, міг би просто використати 17
та зробити \
в кінці. J
Штовхає 19
і 247 == 13 * 19
, таким чином:
HDJ*s\
Підказка 7: 32
. Є купа способів зробити це: Y5#
, 3 2
, ZY
, YZ\
, 4(2
, 2)2
, '32
. Я пішов з останнім, тому що починати з персонажа здавалося перспективним для 7-вниз, і це виявилося правильним.
Підказка 8: E
. У мене вже було 'd
коли я потрапив туди, тож це було між вибором 'd1+eu
, 'deu1+
або варіантом, де я використовував, )
і пробіл замість 1+
(для людей, які не належать до CJam, це приймає d
характер і приріст, а верхній обріз - у будь-якому порядку) . Однак u
у заключній колонці виглядало корисно для A-down. Тому я вибрав першу з них. Зрештою, 'd) eu
спрацював би теж.
Підказка 9: ""
. Ну, це повинно бути "порожній рядок, отримати представлення рядків, пробіл". Але також знадобилося `для представлення рядків в 7-вниз, і пробіл в A-down теж здався корисним, тому я вибрав
]`'
Зауважте, що, ]
можливо, також був одним із LMOQR
.
Підказка B : "m
. Мені просто справді довелося відповідати цьому одному з рештою, але мало символів, які мали значення. У мене вже були {
і свої m
. Тож замість блоку я перетворився {
на персонажа, відкинув його, а потім висунув два необхідних символи:
'{;'"'m
Підказка D : 124
. Я вирішив це разом із C-down, що було найпростіше з декрементом наприкінці. Тож я натискаю 12, 5 і зменшую останнє:
C5(
Підказка 1: [2 2 2 3]
. Це виглядало занадто підозріло, як основний чинник, щоб він не був. :)
24mf`
Підказка 3: 3010936384
. Факторинг цього показав, що насправді це 38 6 . Єдине питання полягав у тому, як домогтися 38
відповідності 2-поперек. Врешті-решт мені було потрібно *
третє місце, тож подвоєння 19
було:
J2*6#
Підказка 5: 2017
. Два символи для такої великої кількості? Просто використовуйте вбудовані двозначні змінні:
KH
Підказка 6: "18"
. Я думаю, що існує лише один спосіб зробити це в трьох символах. Скористайтеся вбудованим 18, перетворіть його у рядок, а потім у його рядкове подання.
Is`
Підказка 7: ' "\"\""
. Напевно, найважча частина головоломки. Зокрема, мені потрібно було отримати "\"\""
лише три символи. Хитрість полягала в тому, щоб отримати два рази рядкове представлення порожнього рядка. Це призвело до:
' `L``+
THe +
не є необхідною, але була потрібна 8-поперечником.
Підказка 8: !{}
. Блоку потрібно було ввести код, щоб у нього залишилося лише два символи для !
, що означало використання ще одного буквального:
'!{}
Підказка A: -3u3
. Маючи u
місце з 8 поперек, я почав ставити -3
і 3
в кутах, де жоден інший натяк на них не піклувався. Але тоді мені потрібна була m
внизу. Я думаю, що існує кілька способів отримати за 3
допомогою _m_
, але найпростішим було взяти квадратний корінь 9:
-3 'u9mq
Підказка C: -1
. У мене вже був декремент, тому я просто поставив місце, 0
де ніхто більше не піклувався:
0 (
Підказка E : Stack: ""
. Ну, це було найпростіше. Просто зателефонуйте до налагоджувача:
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
або Math.PI+5
; але останній залишив би "M" та "h" перехрестя на інші вирази, здавалося, малоймовірним."\x48I"
.xxxa
, оцінюючи до нуля, так -a + a? a + -a? 3 + -а? a+-a
виглядав найкраще, оскільки він дав мені те, що було схоже на чарівну стрічку в 1дн.{x:5}xxa'x
. Оскільки повернене значення дорівнює 5, його потрібно витягнути з об'єкта, тож {x:5}['a']
, значить, остаточним відсутнім символом є також:{a:5}['a']
t={}=51
, і воно спрацювало. Не знав цього!5xxax"pac"
=> "2pac". Це повинно бути 5-a+"pac"
якось, тому другим символом має бути "." для плаваючої точки буквально.[xx"xxxx]
повертається "90". Отже, це має бути буквальним масивом зі значенням, яке витягується; є лише місце для однієї величини, так що у нас є [xx"xx][0]
. Тут немає місця для двох струн, але вони "9"+0
або 9+"0"
підходять.6<<I
виявилася відповідь, залишивши +0 до кінця.I-I<4
, I-6<4
і т. Д.)-x..]xxx4
. ".." кинуло мене - є лише кілька способів, які можуть бути юридичним синтаксисом, і тому я запитав, чи ES4 - це те, що було призначено - це була якась дивна особливість цієї покинутої специфікації? Але потім я побачив, що це червона оселедець; -""
є NaN, тому -"..]"xx4
повинно бути те, що є - порівняння з NaN, повернення помилковим; '==' буде, але для підтвердження потрібно переглянути останню відповідь ...=-10
. Якщо чесно, я також переглянув попередню версію 9dn і зрозумів, що щось має бути =top
(щоб повернути Вікно). Змінна, призначена може бути a чи I, не має значення.Хитра головоломка!
Для всіх тривалих виразів з плаваючою комою я зробив програму C ++ для створення силових математичних виразів Python та їх оцінювання. Він передбачає, що всі числа є плаваючою комою і підтримують лише оператори +, -, *, /, //, ** і ~. Я використовував його, щоб отримати кожну підказку довше, ніж 5 символів, за винятком a**9*27%b
і хеша. З 6 або меншими заготовками він закінчується протягом декількох секунд, тоді як 7 чекає 7.
Я здогадуюсь, я досить добре пограв у цей гольф, оскільки тут є 14 просторів.
Цей тестовий сценарій:
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);
видає такий вихід:
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