посылка
Однажды ночью я просто размышлял о цифрах. Я узнал о чем-то уникальном о числах, таких как 7, 10, 12, 13 и более. Это квадраты квадратов! Это означает, что в квадрате они состоят из самих квадратов. OEIS называет их квадратами, которые представляют собой десятичное объединение двух или более квадратов.
Примеры таких чисел включают 7 (49 имеет 2 2 и 3 2 ) 13 (169 имеет 4 2 и 3 2 ) и 20 (400 имеет 2 2 и 0 2 ). Другие примеры включают 37, поскольку термин 1369 является термином, так как он может быть разделен как 1, 36 и 9. 1444 (38 2 ) - это термин, так как он может быть разделен как 1, 4, 4, 4. Я спрашивал об этом в Math .SE, и он был назван в честь меня!
Вызов
Разработайте программу, которая печатает номера TanMath. Учитывая число n (начиная с 1), выведите n-е число TanMath, T (n).
В качестве примера кода:
>> 1
>> 7
или
>> 4
>> 13
Ссылка на реализацию Python (спасибо @ MartinBüttner и @ Sp3000!):
from math import sqrt
n = input()
def r(digits, depth):
z = len(digits)
if z < 1:
return (depth > 1)
else:
for i in range(1, z+1):
t = int(digits[:i])
if sqrt(t).is_integer() and r(digits[i:], depth+1):
return True
return False
i=0
t=0
while t < n:
i += 1
if r(str(i**2), 0):
t += 1
print i
Вот список первых 100 номеров:
7 10 12 13 19 20 21 30 35 37 38 40 41 44 50 57 60 65 70 80 90 95 97 100 102 105 107 108 110 112 119 120 121 125 129 130 138 140 150 160 170 180 190 191 200 201 204 205 209 210 212 220 223 230 240 250 253 260 270 280 285 290 300 305 306 310 315 320 325 330 340 342 343 345 348 350 360 369 370 375 379 380 390 397 400 402 405 408 410 413 420 430 440 441 450 460 470 475 480 487
Это код гольф, поэтому выигрывает самый короткий код!
Удачи!
Ответы:
Pyth,
232120 байтСпасибо @isaacg за вывод 1 байта!
Попробуйте онлайн.
Как это работает
источник
t
не нужно, потому^R2Z
что не будет содержать^Z2
. Это то же самое, что диапазон Python, он не включает верхний конец.Юлия,
189145 байтовЭто создает безымянную функцию, которая принимает целое число и возвращает целое число. Чтобы назвать его, дайте ему имя, например
f=n->...
.Ungolfed:
Спасибо Деннису за помощь и идеи, а также спасибо Glen O за сохранение 44 байтов!
источник
JavaScript ES6, 126
127Эталонная реализация, преобразованная в Javascript с некоторыми хитростями в гольф.
Использование eval, чтобы избежать явного возврата.
Протестируйте приведенный ниже фрагмент в браузере, совместимом с EcmaScript 6, с оператором распространения, параметрами по умолчанию и функциями стрелок (я использую Firefox)
источник
JavaScript (ES6), 143 байта
использование
объяснение
источник
Луа, 148 байт
Требуется Lua 5.3
источник
Python 3,
283243 байтаЭто реализация грубой силы. Предложения по игре в гольф приветствуются.
Ungolfed:
источник