Geben Sie n=m^2
eine Liste von Ganzzahlen zurück, die nicht an das m x m
Gitter von Ganzzahlen angrenzen 1 to n
.
Beispiele
n = 1 (m = 1)
Gitter:
[1]
Rückkehr:
[]
n = 4 (m = 2)
Gitter:
[1,2]
[3,4]
Rückkehr:
[]
n = 9 (m = 3)
Gitter:
[1,2,3]
[4,5,6]
[7,8,9]
Rückkehr:
[5]
n = 16 (m = 4)
Gitter:
[ 1, 2, 3, 4]
[ 5, 6, 7, 8]
[ 9,10,11,12]
[13,14,15,16]
Rückkehr:
[6,7,10,11]
Für höhere Werte von m
ist diese Antwort eine großartige Visualisierung.
Regeln:
- Sie können entweder
m
odern
(won = m*m
) aufnehmen.- Wenn
n
Sie aufnehmen, dürfen Sie undefiniertes Verhalten haben, wenn es keinm
für gibtn
(EG 15). n > 0
,m > 0
: Beide müssen ganzzahlige Werte sein.
- Wenn
- Die Ausgabe kann als 1D / 2D-Array, Matrix oder Leerzeichen erfolgen
- Die Ausgabe muss in der Reihenfolge vom kleinsten zum größten erfolgen.
- Wenn als Matrix ausgegeben wird, bedeutet dies, dass es so sein muss, wie es im Raster wäre.
- Dies ist Code-Golf , die niedrigste Anzahl an Bytes gewinnt.
Antworten:
C 50 Bytes
Probieren Sie es online!
quelle
Oktave , 31 Bytes
Gibt eine Matrix zurück.
Probieren Sie es online!
quelle
vec2mat
Funktion gestoßen.Oktave , 26 Bytes
Der Code definiert eine anonyme Funktion, die eingibt
m
einen (möglicherweise leeren) Spaltenvektor und ausgibt.Probieren Sie es online!
Erläuterung
quelle
Gelee , 8 Bytes
Ein monadischer Link,
m
der eine Liste von Listen (die inneren Zeilen) aufnimmt und zurückgibt.Probieren Sie es online!
Wie?
quelle
Pure Bash, 49
Die langweilige Antwort:
Probieren Sie es online aus .
Oder die interessante Antwort für 52:
Probieren Sie es online aus .
quelle
Haskell , 31 Bytes
Probieren Sie es online!
Mathematische Version:
: P
quelle
f(5)
sollte sein7,8,9,12,13,14,17,18,19
R ,
444332 BytesProbieren Sie es online!
Gibt einen Vektor zurück.
quelle
print
Funktion für amatrix
.m
inmatrix(1:m^2,m,m,T)
:matrix(1:m^2,m,,T)
Gelee , 8 Bytes
Probieren Sie es online!
quelle
m
einem könnte man²s⁸ḊṖ$⁺€
auch. (Ich habe auch eine anderem
alternative Methode veröffentlicht.)⁸
:(Proton , 28 Bytes
Probieren Sie es online!
Nimmt m als Eingabe.
Wie?
Filtert die ganzen Zahlen in [k, k 2 - k ) , die, wenn sie durch k dividiert werden , einen Rest ergeben, der höher als 1 ist . Dadurch wird sichergestellt , dass beide Ende werden abgeschnitten, weil die ersten Ausbeuten 0 und die letzte Ausbeute 1 . Es wird auch garantiert, dass für jede gültige Ganzzahl ein höherer Wert zurückgegeben wird, da sie aufeinanderfolgend sind.
quelle
Wolfram Language (Mathematica) , 31 Byte
Probieren Sie es online!
quelle
Bash + GNU-Dienstprogramme, 35
Probieren Sie es online aus .
quelle
05AB1E , 9 Bytes
Probieren Sie es online!
quelle
LItä¦¨ε¦¨
Ist dies in Ordnung, kann die Ausgabe ein 2D-Array sein.Python 2 , 44 Bytes
Probieren Sie es online!
Ich verspreche, dass dies heute meine letzte Antwort (auf diese Herausforderung) ist. Nimmt m als Eingabe.
quelle
Ruby , 32 Bytes
Nimmt
m
, gibt ein eindimensionales Array zurück.Probieren Sie es online!
quelle
MATL , 8 Bytes
Eingabe ist
m
. Die Ausgabe erfolgt in aufsteigender Reihenfolge.Probieren Sie es online!
Erläuterung
Betrachten Sie die Eingabe
4
als Beispiel.quelle
APL (Dyalog Classic) , 14 Byte
Probieren Sie es online!
quelle
Batch, 85 Bytes
Ich kann nicht so einfach von
2
bis durchlaufen ,m-1
also gehe ich von3
bis durchm
und passe die Berechnung an.quelle
Julia 0,6 , 36 Bytes
Probieren Sie es online!
quelle
Pari / GP , 26 Bytes
Probieren Sie es online!
quelle
Japt, 12 Bytes
Ich habe so lange mit der Gewinnung von Elementen verbracht, dass mir die Zeit für das Golfen der Array-Generation ausgegangen ist. Mir ist auch erst jetzt aufgefallen, dass wir stattdessen
n
als Eingabe nehmen können, damit ich dort möglicherweise etwas speichern kann. Wiederbesucht zu werden ...Versuch es
Erläuterung
quelle
J ,
2319 Bytes-4 Bytes dank FrownyFrog!
Probieren Sie es online!
Meine ursprüngliche Lösung:
J , 23 Bytes
Nimmt n als Eingabe und gibt eine Matrix zurück
Wie es funktioniert
1+i.
- erzeugt eine Liste 1..n.-@%:
- findet die Quadratwurzel von n und negiert sie (m)]\
- Erstellt eine Tabelle (Matrix) mxm aus der Liste^:2
- Machen Sie zweimal Folgendes:|:@}:@}.
- Lasse die erste Reihe fallen, dann die letzte Reihe und transponiere dann[:
- Gabel verschließenProbieren Sie es online!
quelle
1}:@}.-@%:}.@}:\1+i.
1 1}:@}.-@%:}:\1+i.
}.
Schale , 9 Bytes
Probieren Sie es online!
Erläuterung
quelle
Japt , 14 Bytes
Nimmt
m
als EingabeErläuterung
Probieren Sie es online!
Die Lösung, die es braucht
n
wird ist ebenfalls 14 Bytes:Probieren Sie es online!
quelle
TI-BASIC,
4443 Bytes (tokenisiert)Lesbare Version:
Leere Listen mussten leider manuell ausgedruckt werden, da TI-BASIC dies normalerweise nicht zulässt. Wenn
m
mehr als zwei angegeben werden, kann der Code auf nur 29 Byte reduziert werden .quelle
Pyth , 10 Bytes
Probieren Sie es hier aus!
Nimmt m als Eingabe.
quelle
Rot ,
6362 BytesProbieren Sie es online!
Dies ist eine rote Portierung der Python 2-Lösung von Haskell / Mr. Xcoder
quelle
Sauber , 45 Bytes
Probieren Sie es online!
Dies ist nur die Haskell-Antwort von totalhuman, aber in Clean.
quelle
Pyt , 13 Bytes
Port of Jonathan Allans Gelee Antwort
Erläuterung:
Probieren Sie es online!
quelle
Python, 111 Bytes
quelle
Java 8 ,
241183170162160132122 BytesProbieren Sie es online!
Java macht es sehr schwierig (viele Bytes), ein Array von etwas "unbekannter" Größe zu erstellen.
quelle
Groovy
, die als Abkürzung für Java bezeichnet wird.int
, Ändern von||
in|
und Entfernen der Klammern des einzeiligen if-Körpers.