Wenn Sie eine natürliche Zahl haben, n
schreiben Sie ein Programm oder eine Funktion, um eine Liste aller möglichen Multiplikationen von zwei Faktoren zu erhalten, die verwendet werden können, um zu erreichen n
. Um besser zu verstehen, was vorgetäuscht wird, können Sie unter http://factornumber.com/?page=16777216 nachlesen , wann die folgende Liste angezeigtn
wird 16777216
:
2 × 8388608
4 × 4194304
8 × 2097152
16 × 1048576
32 × 524288
64 × 262144
128 × 131072
256 × 65536
512 × 32768
1024 × 16384
2048 × 8192
4096 × 4096
Es ist nicht nötig, Dinge wie hier hübsch zu drucken. Voraussetzung ist, dass jeder Eintrag (Faktorenpaar) gut voneinander unterschieden ist und in jedem Paar auch der erste Faktor gut voneinander unterschieden ist. Wenn Sie eine Liste / ein Array zurückgeben, kann das inside-Element eine Liste / ein Array mit zwei Elementen oder eine Struktur Ihrer Sprache sein, die ein Paar von Dingen wie C ++ unterstützt std::pair
.
Drucken Sie weder die Multiplikation mit 1 Eintrag aus, noch wiederholen Sie die Einträge mit dem ersten Faktor, der durch den zweiten ersetzt wird, da dies ziemlich nutzlos ist.
Kein Gewinner; Es wird ein Pro-Sprache-Basiscode für Golf sein.
quelle
30
?Antworten:
Java (OpenJDK 8) ,
816665 Bytes++j<=i/j
->j++<i/j
.Probieren Sie es online!
Alte (als Referenz)
Java (OpenJDK 8) , 126 Byte
Probieren Sie es online!
Erste Codegolfeinreichung und erste Lambda-Nutzung. Future Self, bitte vergib mir den Code.
quelle
05AB1E , 8 Bytes
Probieren Sie es online!
quelle
C (gcc) ,
585453 BytesProbieren Sie es online!
quelle
Python 2 , 51 Bytes
Probieren Sie es online!
51 Bytes (Danke an Luis Mendo für ein Byte)
Probieren Sie es online!
51 Bytes
Probieren Sie es online!
quelle
[f]
.lambda n:[(n/k,k)for k in range(1,n)if(k*k<=n)>n%k]
Haskell, 38 Bytes
Probieren Sie es online!
quelle
APL (Dyalog) , 28 Bytes
Probieren Sie es online!
quelle
Perl 6 , 38 Bytes
Versuch es
Erweitert:
quelle
Brachylog , 8 Bytes
Probieren Sie es online!
Erläuterung
Der
~×
Teil nicht enthält 1s in seinem Ausgang, so dass für die Eingabe N gibt es [N] anstelle von [1, N] , das durch später ausgesondert wirdĊ
. Ich bin mir nicht ganz sicher, warum≜
es gebraucht wird ...quelle
≜
wird benötigt, weil es sonst keine Auswahlpunkte gibt fürᵘ
: Eine Liste der Länge 2, deren Produkt die Eingabe ist, ist die einzige Antwort, wenn Sie nicht wirklich nach den Werten der Liste fragen.Japt , 9 Bytes
Online testen! Gibt ein Array von Arrays mit einigen Nullen am Ende zurück.
-R
flag hinzugefügt, um die Ausgabe deutlicher darzustellen.quelle
null
s am Ende herausgefiltert habe.Gelee , 8 Bytes
Ein monadischer Link, der eine Nummer aufnimmt und eine Liste von Listen (Zahlenpaaren) zurückgibt.
Probieren Sie es online! (Timeout bei TIO für die
16777216
Beispiel, da eine Liste von 68,7 Milliarden Paaren erstellt und auf diejenigen mit dem richtigen Produkt heruntergefiltert wird!)Wie?
*
Ḋ
, dequeue, macht implizit einen Bereich einer numerischen Eingabe vor dem Handeln, und die Range-Funktion überlagert implizit ihre Eingabe, so dass zum Beispieln=24
das Ergebnis von½
ist4.898...
; die Reichweite wird[1,2,3,4]
; und das Ergebnis in der Warteschlange ist[2,3,4]
** Ähnlich wie oben
p
macht das kartesische Produkt Bereiche für die numerische Eingabe - hier ist das richtige Argumentn
daher das richtige Argument,[1,2,3,...,n]
bevor das eigentliche kartesische Produkt stattfindet.quelle
Husk , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
JavaScript (ES6), 55 Byte
Demo
Code-Snippet anzeigen
Probieren Sie es online!
quelle
6
?Python 2 , 59 Bytes
Probieren Sie es online!
quelle
range(2,N)
und als Liste zu speichern, der zugewiesene Speicher jedoch nicht ausreicht. Man könnte versuchen, esrange
durchxrange
(Python 2-Bereichsgenerator) zu ersetzen , obwohl dies die maximale Laufzeit von TIO von einer Minute überschreitet. Auf einem Computer mit genügend Speicher und Zeit sollte dieses Programm beendet werden und die richtige Antwort zurückgeben.Gelee , 9 Bytes
Probieren Sie es online!
quelle
Oktave , 42 Bytes
Probieren Sie es online!
quelle
PHP, 70 Bytes
Als Zeichenkette (70 Bytes):
Als Array-Dump (71 Bytes):
(Ich bin mir nicht sicher, ob ich return $ b verwenden kann; anstelle von print_r, da es das Array nicht mehr ausgibt, ansonsten kann ich hier 2 Bytes sparen.)
Das Array liefert folgende Ergebnisse:
quelle
Gelee , 12 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Wolfram Language (Mathematica) , 41 Byte
Probieren Sie es online!
ist derFunction
Operator, der eine unbenannte Funktion mit benannten Parametern einführtn
.quelle
Faktor 58
Nun, in dieser Frage muss es einen Faktor geben!
Es ist ein Zitat.
call
es mit der Zahl auf dem Stapel, lässt einassoc
(ein Array von Paaren) auf dem Stapel.Ich bin mir nie sicher, ob alle Importe zählen oder nicht, da sie Teil der Sprache sind. Dieser verwendet:
(Wenn sie zählen, sollte ich nach einer längeren Lösung mit kürzeren Importen suchen, was irgendwie albern ist.)
Als ein Wort:
quelle
Ruby , 43 Bytes
Probieren Sie es online!
Wie es funktioniert:
Generieren Sie für jede Zahl bis zu sqrt (n) das Paar
[[x, n/x]]
und nehmen Sie dann dasn%x
dritte Element dieses Arrays. Wennn%x==0
ja, ist es[x, n/x]
andersnil
. Wenn Sie fertig sind, entfernen Sie allenil
aus der Liste.quelle
Pari / GP ,
493438 BytesProbieren Sie es online!
Legen Sie die Builder-Notation für alle Paare fest, bei
[d, n/d]
denend
alle Teilerd
vonn
subject tod > 1
and durchlaufen werdend <= n/d
.Riesige Besserung durch Alephalpha.
quelle
n->[[d,n/d]|d<-divisors(n),d<=n/d]
1
.Schale ,
1412 BytesProbieren Sie es online!
Erläuterung
quelle
APL + WIN, 32 Bytes
Erläuterung:
quelle
Add ++ ,
1815 BytesProbieren Sie es online!
Wie es funktioniert
quelle
Mathematica, 53 Bytes
Probieren Sie es online!
quelle
Befunge-93, 56 Bytes
Probieren Sie es online
quelle
Julia 0,6 , 41 Bytes
Probieren Sie es online!
Definiert den eingebauten unären Operator neu
~
und verwendet ein Array-Verständnis, um die Ausgabe zu erstellen.div(x,y)
wird für die Ganzzahldivision benötigt.x/y
Spart 5 Bytes, aber die Ausgabe ist~4=(2,2.0)
.Int(floor(√x))
.quelle
APL NARS 99 Zeichen
9 + 46 + 41 + 3 = 99 Test: (Wo nichts gedruckt wird, wird etwas zurückgegeben, das zurückgegeben wird. Die Liste null muss als "keine Lösung" betrachtet werden.)
quelle
Pyt ,
6765 BytesIch bin mir ziemlich sicher, dass das Golf spielen kann.
Grundsätzlich generiert der Algorithmus eine Liste aller Teiler der Eingabe (nennen wir es n ), erstellt dieselbe Liste, kippt sie jedoch und verschachtelt die beiden (z. B. wenn n = 24, dann hat er an dieser Stelle [ 1,24,2,12,3,8,4,6,6,4,8,3,12,24,1]) und druckt die Elemente von Index 2 bis zur Hälfte der Array-Länge aus, wobei jeweils gedruckt wird Nummer in einer neuen Zeile und mit einer zusätzlichen neuen Zeile zwischen jedem Paar.
Der größte Teil der Arbeit wird in der eigentlichen Verwaltung des Stacks erledigt.
2 Bytes mit der Inkrementierungsfunktion gespeichert.
quelle
Perl 5, 50 Bytes
Ungolfed:
Probieren Sie es online aus .
quelle