Ẇa6ḌạÐṂ⁸Ṫ
Монадическая ссылка.
Попробуйте онлайн! - Почти нет смысла в этой ссылке (см. Ниже)!
Как?
В стиле настоящего игрока в гольф это действительно неэффективно - в TIO время 365 для тестового примера 365 ! Локально это заканчивается в 37-х годах.
Ẇa6ḌạÐṂ⁸Ṫ - Main link: n
Ẇ - all sublists - this has an implicit make_range on it's input
- so, for example, an input of 3 yields [[1],[2],[3],[1,2],[2,3],[1,2,3]]
- the important things are: that it contains both a list of the length of the
- decimal number, and a list 1 shorter; and that it's lists only contain
- non-zero numbers and are monotonically increasing in length.
6 - literal 6
a - and (vectorises), this changes all the values to 6s
- so, the example above becomes [[6],[6],[6],[6,6],[6,6],[6,6,6]]
Ḍ - convert to decimal (vectorises) [ 6, 6,, 6, 66, 66, 666 ]
⁸ - link's right argument, n
ÐṂ - filter keep those with minimal:
ạ - absolute difference (for 366 this keeps 66 AND 666; same goes for 3666; etc.)
Ṫ - tail - get the rightmost result (for 366 keeps 666, since it's longer)
Патч для запуска того же алгоритма в пределах 60 с для 365 и 366 на TIO состоит в том, чтобы избежать неявной векторизации Ḍ
with Ẇa6Ḍ€ạÐṂ⁸Ṫ
( попробуйте это ), однако теперь это вызовет ошибку сегмента для входа 999 ( Triangle (999) только 499 500, но каждое из них представляет собой список целых чисел, в результате чего общее число тетраэдров (999) = 166 666 500 целых чисел, не потребляющих память, по крайней мере, в Python).