(([][()]){[{}({}[({})])]{{}()(<()>)}{}([][()])}<>)
Попробуйте онлайн!
Так как каждый публикует свои 50-байтовые решения, здесь мое (у меня есть 48- байтовое решение, но это была простая модификация DjMcMayhem, поэтому я чувствовал, что стоит опубликовать)
объяснение
Этот ответ широко использует отмену значения.
Без гольфа это выглядит как
([][()])({<{}({}[({})])>{<{}>()(<()>)}{}<([][()])>}<>)
Здесь мы вычисляем дельту, пока в стеке не останется один элемент, каждый раз, когда мы накапливаем одно значение из внутреннего цикла, если дельта не равна нулю.
Это довольно простой способ сделать это.
Чтобы сделать этот гольф, мы начинаем отмену стоимости. Первый и тот, который должен быть очевиден для любого закаленного игрока в мозги, - это высота стека. Это хорошо известный факт, что
([])({<{}>...<([])>}{})
такой же как
(([]){[{}]...([])}{})
Когда значения изменяются одним, то же самое сохраняется. Это дает нам
(([][()]){[{}]<({}[({})])>{<{}>()(<()>)}{}([][()])}<>)
Вы можете заметить, что это даже не спасло нас от байтов, но не волнуйтесь, это станет более полезным, когда мы продолжим.
Мы можем выполнить другое сокращение, если вы видите заявление
<(...)>{<{}> ...
вы можете уменьшить его до
[(...)]{{} ...
Это работает, потому что если мы войдем в цикл [(...)]и {}отменим, а если нет, то значение [(...)]уже было нулевым, и его не нужно отменять. Поскольку в нашем коде есть этот шаблон, мы можем уменьшить его.
(([][()]){[{}][({}[({})])]{{}()(<()>)}{}([][()])}<>)
Это сэкономило нам 2 байта, но также поставило две точки рядом друг с другом. Они могут быть объединены, чтобы спасти нас еще 2.
(([][()]){[{}({}[({})])]{{}()(<()>)}{}([][()])}<>)
И это наш код.
Falseравен 0, печатается вместо него?