Це супутнє запитання для Кодових кросвордів . Відповіді грабіжника йдуть сюди.
Дивіться, куди нам покласти розбійників? для метаінфо.
Це супутнє запитання для Кодових кросвордів . Відповіді грабіжника йдуть сюди.
Дивіться, куди нам покласти розбійників? для метаінфо.
Відповіді:

Мені довелося трохи пограти на 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