Prämisse
Eines Nachts habe ich nur über Zahlen nachgedacht. Ich habe etwas Einzigartiges über Zahlen wie 7, 10, 12, 13 und mehr herausgefunden. Sie sind Quadrate von Quadraten! Das heißt, wenn sie quadriert sind, bestehen sie selbst aus Quadraten. Der OEIS nennt sie Quadrate, dh eine dezimale Verkettung von zwei oder mehr Quadraten.
Beispiele für solche Zahlen sind 7 (49 hat 2 2 und 3 2 ) 13 (169 hat 4 2 und 3 2 ) und 20 (400 hat 2 2 und 0 2 ). Andere Beispiele sind 37, da 1369 ein Begriff ist, der als 1, 36 und 9 unterteilt werden kann. 1444 (38 2 ) ist ein Begriff, der als 1, 4, 4, 4 unterteilt werden kann .SE, und es wurde nach mir benannt!
Herausforderung
Entwerfen Sie ein Programm, das TanMath-Zahlen druckt. Geben Sie die n-te TanMath-Zahl T (n) mit der Zahl n (beginnend bei 1) aus.
Als Codebeispiel:
>> 1
>> 7
oder
>> 4
>> 13
Referenz-Python-Implementierung (danke @ MartinBüttner und @ 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
Hier ist eine Liste der ersten 100 Zahlen:
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
Dies ist ein Codegolf, also gewinnt der kürzeste Code!
Viel Glück!
Antworten:
Pyth,
232120 BytesVielen Dank an @isaacg für das Golfen ab 1 Byte!
Probieren Sie es online aus.
Wie es funktioniert
quelle
t
ist unnötig, da^R2Z
nicht enthalten^Z2
. Es ist das gleiche wie bei Python, enthält jedoch nicht das obere Ende.Julia,
189145 BytesDies schafft eine unbenannte Funktion, die eine ganze Zahl annimmt, und gibt eine ganze Zahl ist. Um es zu nennen, geben Sie ihm einen Namen, z
f=n->...
.Ungolfed:
Dank Dennis für etwas Hilfe und Ideen und dank Glen O für das Speichern von 44 Byte!
quelle
JavaScript ES6, 126
127Die Referenzimplementierung, konvertiert nach Javascript mit ein paar Golfticks.
Verwenden von eval, um eine explizite Rückgabe zu vermeiden.
Testen Sie die Ausführung des folgenden Snippets in einem EcmaScript 6-kompatiblen Browser mit Spread-Operator, Standardparametern und Pfeilfunktionen (ich verwende Firefox).
quelle
JavaScript (ES6), 143 Byte
Verwendung
Erläuterung
quelle
Lua, 148 Bytes
Lua 5.3 erforderlich
quelle
Python 3,
283243 BytesDies ist eine Brute-Force-Implementierung. Golfen Vorschläge willkommen.
Ungolfed:
quelle