Странно, что я этого не видел, так как Excel кажется правильным языком для игры в код (несмотря на то, что его «компилятор» не бесплатный).
Excel является своего рода символом в гольфе, он хорошо справляется с задачами средней сложности, а иногда и с более простыми задачами. Чаще всего Excel хорошо справляется с задачами, связанными с манипуляциями со строками и смешанными числами.
Какие общие советы у вас есть для игры в гольф в Excel? Я ищу идеи, которые могут быть применены к проблемам с гольф-кодом в целом, которые, по крайней мере, несколько специфичны для Excel (НЕ VBA). Пожалуйста, один совет за ответ.
Ответы:
Сокращенная ссылка:
Если ваша программа должна принимать несколько входов, вы можете захотеть собрать их все сразу. Чтобы прочитать несколько ячеек как массив, можно сделать, например, такой:
Пример:
=len(A1)+Len(B1)+LEN(C1)
может быть
=SUM(LEN(A1:C1))
=SUM(LEN(A1:C1 A2:C2 A3:C3))
может быть
=SUM(LEN(A1:C3))
=SUM(LEN(A1:A1024))
может быть
=SUM(LEN(A:A))
=SUM(LEN(A:A B:B C:C))
может быть
=SUM(LEN(A:C))
источник
Сокращенная стенография:
CONCATENATE
Функция может быть заменена на&
символ 100% от времени, так долго , как первый аргумент является строкой, или клетку.пример:
=CONCATENATE(A1,B1)
можно сократить до
=A1&B1
источник
Векторизация с массивами
Всякий раз, когда функция принимает массив в качестве аргумента вместо одиночного, эта функция также выводит массив с результирующим значением в соответствующие значения.
Пример:
=LEN(A1)+LEN(B2)+LEN(C3)
можно заменить на
=SUM(LEN({A1,B2,C3}))
источник
Преобразование числа в текст:
Это очень простой совет, но, тем не менее, он может быть полезен для некоторых ...
1&23
).A1
), Измените числовой формат ячейки на текст, чтобы исключить необходимость в дополнительных байтах.Краткая справочная таблица:
источник
Векторизация массивов клеток:
Подсказка Векторизация с массивами Показывает, как можно выполнить функцию с массивом, используя специальное форматирование в массиве. С ячейками можно сделать то же самое, и в конечном итоге вы сэкономите много-много байтов. Скажем, у вас есть следующий лист:
И мы хотим найти самый высокий срок хранения фруктов.
Без векторизации можно использовать две формулы следующим образом:
И это дает правильный ответ, но оценка для этого гольфа является нетрадиционной, и, вероятно, не будет принята так широко. Вдобавок ко всему, здесь используется функция перетаскивания (Ew), которая дает запутанный ответ.
Вместо этого мы можем поместить функцию в столбец D прямо по формуле в E2. Для этого вы заменяете (в данном случае B2 и C2) свои переменные массивами для диапазона, который вы хотите проверить. Таким образом, ваша формула становится:
Это сэкономит вам несколько байтов, а также сделает вашу запись правильно оцененной.
источник
Boolean Shorthand:
Вместо того чтобы использовать
=TRUE()
и=FALSE()
функцию, использование=1=1
и=1=2
.источник
ISBLANK () Сокращение:
Вместо использования
=ISBLANK(A1)
используйте=A1=0
для определения, является ли ячейка (то естьA1
) пустой.Примечание: этот ярлык не будет работать, если ячейка
A1
содержит0
. В этом случае вам нужно будет использовать=A1=""
.источник
Сократить названия листов
Если переименовать
Sheet2
вS
тогда ссылки наSheet2!a0
статьS!a0
.источник