Przesłanka
Pewnej nocy zastanawiałem się nad liczbami. Dowiedziałem się czegoś wyjątkowego o liczbach 7, 10, 12, 13 i innych. Są to kwadraty kwadratów! Oznacza to, że gdy są podniesione do kwadratu, składają się z samych kwadratów. OEIS nazywa je kwadratami, które są dziesiętną konkatenacją dwóch lub więcej kwadratów.
Przykłady takich liczb obejmują 7 (49 ma 2 2 i 3 2 ) 13 (169 ma 4 2 i 3 2 ) i 20 (400 ma 2 2 i 0 2 ). Inne przykłady obejmują 37, ponieważ 1369 to termin, ponieważ można go podzielić na 1, 36 i 9. 1444 (38 2 ) to termin, ponieważ można go podzielić na 1, 4, 4, 4. Zapytałem o to na Matematyki .SE, a nazwa pochodzi ode mnie!
Wyzwanie
Zaprojektuj program, który drukuje liczby TanMath. Biorąc pod uwagę liczbę n (od 1), wydrukuj n-ty numer TanMath, T (n).
Jako przykład kodu:
>> 1
>> 7
lub
>> 4
>> 13
Odwołanie do implementacji Python (dzięki @ MartinBüttner i @ 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
Oto lista pierwszych 100 liczb:
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 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
To jest golf golfowy, więc wygrywa najkrótszy kod!
Powodzenia!
Odpowiedzi:
Pyth,
232120 bajtówDzięki @isaacg za grę w golfa na 1 bajcie!
Wypróbuj online.
Jak to działa
źródło
t
to niepotrzebne, ponieważ^R2Z
nie będzie zawierało^Z2
. Jest taki sam, jak zakres Pythona, nie obejmuje górnego końca.Julia,
189145 bajtówTworzy to nienazwaną funkcję, która akceptuje liczbę całkowitą i zwraca liczbę całkowitą. Aby to nazwać, nadaj mu nazwę, np
f=n->...
.Nie golfowany:
Podziękowania dla Dennisa za pomoc i pomysły oraz dzięki Glen O za uratowanie 44 bajtów!
źródło
JavaScript ES6, 126
127Implementacja referencyjna, przekonwertowana na JavaScript z pewnymi sztuczkami golfowymi.
Używanie eval, aby uniknąć jawnego powrotu.
Przetestuj poniższy fragment kodu w przeglądarce zgodnej z EcmaScript 6, z operatorem rozprzestrzeniania, parametrami domyślnymi i funkcjami strzałek (używam Firefoksa)
źródło
JavaScript (ES6), 143 bajty
Stosowanie
Wyjaśnienie
źródło
Lua, 148 bajtów
Wymagany jest Lua 5.3
źródło
Python 3,
283243 bajtówTo implementacja brutalnej siły. Sugestie dotyczące gry w golfa mile widziane.
Nie golfowany:
źródło