In Anbetracht der Folge OEIS A033581 , die die unendliche Folge ist, ist der n -te Term (0-Indexierung) durch die geschlossene Formformel 6 × n 2 gegeben .
Ihre Aufgabe ist es, Code zu schreiben, der alle Teilmengen der Menge von N ersten Zahlen in der Sequenz ausgibt, so dass die Summe der Teilmenge ein perfektes Quadrat ist.
Regeln
- Die Ganzzahl
N
wird als Eingabe angegeben. - Sie können eine bereits in der Summe verwendete Zahl nicht wiederverwenden. (Das heißt, jede Zahl kann höchstens einmal in jeder Teilmenge vorkommen.)
- Die verwendeten Nummern können nicht aufeinanderfolgend sein.
- Code mit der geringsten Größe gewinnt.
Beispiel
Die angegebene Sequenz ist {0,6,24,54,96, ..., 15000}
Eine der erforderlichen Teilmengen ist {6,24,294}, weil
6+24+294 = 324 = 18^2
Sie müssen alle diese Sätze aller möglichen Längen im angegebenen Bereich finden.
code-golf
math
sequence
subsequence
prog_SAHIL
quelle
quelle
Antworten:
05AB1E , 10 Bytes
Probieren Sie es online aus!
Wie?
quelle
Haskell ,
114 104 10386 BytesVielen Dank an Laikoni und Ørjan Johansen für den größten Teil des Golfspiels! :) :)
Probieren Sie es online aus!
Die etwas besser lesbare Version:
quelle
Pyth , 12 Bytes
-2 Bytes dank Mr. Xcoder
Probieren Sie es online aus!
2 weitere Bytes müssen hinzugefügt werden, um
[]
und zu entfernen[0]
, aber sie scheinen mir eine gültige Ausgabe zu sein!Erklärung
quelle
fsI@sT2ym*6*
.Sauber ,
145... 97 BytesProbieren Sie es online aus!
Verwendet die Hilfsfunktion
@
, um die aufn
Terme festgelegte Leistung zu erzeugen, indem jeder Term von[[],[6*n^2],...]
mit jedem Term von[[],[6*(n-1)*2],...]
rekursiv und in umgekehrter Reihenfolge verkettet wird.Die Teilfunktion
f
setzt sich dann zusammen (wobei Zusammensetzung->
bezeichnet wirdo
) als:apply @ -> take the elements where -> the sum -> is a square
Leider ist es nicht möglich, das Literal zu überspringen
f=
und ein Teilfunktionsliteral bereitzustellen , da Prioritätsregeln erfordern, dass es bei Inline-Verwendung Klammern enthält.quelle
Gelee , 12 Bytes
Probieren Sie es online aus!
Die Ausgabe ist eine Liste von Teilmengen, einschließlich
0
s und der leeren Teilmenge.quelle
Wolfram Language (Mathematica) , 49 Bytes
Brute-Force-Ansatz
Probieren Sie es online aus!
quelle
JavaScript (ES7), 107 Byte
Demo
Code-Snippet anzeigen
Kommentiert
quelle
Japt , 15 Bytes
Versuch es
Erläuterung
Generieren Sie ein Array von Ganzzahlen von 0 bis input (
ò
) und durchlaufen Sie jeweils eine Funktion (_ Ã
), quadrieren Sie sie (²
) und multiplizieren Sie sie mit 6 (*6
). Holen Sie sich alle Kombinationen dieses Arrays (à
) und entfernen Sie diejenigen, die truey (k
) zurückgeben, wenn sie eine Funktion (_
) durchlaufen , die ihre Elemente hinzufügt (x
), die Quadratwurzel des Ergebnisses (¬
) erhält und diese um 1 (u1
) modifiziert.quelle