Ihre Aufgabe ist es, bei zwei positiven ganzen Zahlen, und , die ersten Zahlen in der Reihenfolge der inkrementellen Bereiche zurückzugeben.
Die inkrementelle Bereichssequenz erzeugt zunächst einen Bereich von eins bis einschließlich . Zum Beispiel, wenn war , wäre es die Liste erzeugen . Anschließend werden die letzten Werte, die um erhöht wurden, wiederholt an die vorhandene Liste angehängt und fortgesetzt.
Eine Eingabe von zum Beispiel:
n=3
1. Get range 1 to n. List: [1,2,3]
2. Get the last n values of the list. List: [1,2,3]. Last n=3 values: [1,2,3].
3. Increment the last n values by 1. List: [1,2,3]. Last n values: [2,3,4].
4. Append the last n values incremented to the list. List: [1,2,3,2,3,4]
5. Repeat steps 2-5. 2nd time repeat shown below.
2nd repeat:
2. Get the last n values of the list. List: [1,2,3,2,3,4]. Last n=3 values: [2,3,4]
3. Increment the last n values by 1. List: [1,2,3,2,3,4]. Last n values: [3,4,5].
4. Append the last n values incremented to the list. List: [1,2,3,2,3,4,3,4,5]
Testfälle:
n, x, Output
1, 49, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]
2, 100, [1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51]
3, 13, [1,2,3,2,3,4,3,4,5,4,5,6,5]
/
mit//
Gelee , 4 Bytes
Ein dyadischer Link,
x
der links undn
rechts zwei positive Ganzzahlen akzeptiert und eine Liste positiver Ganzzahlen liefert.Probieren Sie es online!
Wie?
quelle
p
R , 33 Bytes
Probieren Sie es online!
Portiert Jonathan Allans Python-Lösung .
R , 36 Bytes
Probieren Sie es online!
Meine ursprüngliche Lösung; erzeugt einen × x Matrix mit jeder Spalte als Inkremente, dh 1 … n , 2 … n + 1 , … , und nimmt dann die erstenx Einträge (durch die Spalten).
quelle
05AB1E , 6 Bytes
Port of @JonathanAllan 's Jelly antworte , also stelle sicher, dass du ihn positiv bewertest!
Erster Eingang istx , zweiter Eingang istn .
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Mein erster Ansatz war 8 Bytes :
Die erste Eingabe istn , die zweite Eingabe ist x .
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
Perl 6 , 18 Bytes
Probieren Sie es online!
Curry-Funktion
f(x)(n)
.Erläuterung
quelle
Brain-Flak , 100 Bytes
Mit Kommentaren und Formatierungen:
Probieren Sie es online!
quelle
J ,
13-12BytesProbieren Sie es online!
Wie
Wir nehmen
x
als das linke Argument,n
als das rechte. Nehmen wirx = 8
undn = 3
für dieses Beispiel:+/&i.
: Transformieren Sie beide Argumente, indem Sie ganzzahlige Bereiche erstellen, dhi.
das linke Argument wird0 1 2 3 4 5 6 7
und das rechte Argument wird0 1 2
. Nun erstellen wir eine "Additionstabelle"+/
aus diesen beiden:1 +
: Addiere 1 zu jedem Element dieser Tabelle:[: ,
: Flache es,
:[ $
: Form es$
so, dass es die gleiche Anzahl von Elementen hat wie das ursprüngliche, nicht transformierte linke Argument[
, dhx
:quelle
Oktave , 25 Bytes
Anonyme Funktion, die Zahlen
n
undx
einen Zeilenvektor eingibt und ausgibt.Probieren Sie es online!
Wie es funktioniert
Betrachten
n=3
undx=13
.Der Code
(1:n)'
gibt den Spaltenvektor anDann
(0:x)
ergibt sich der ZeilenvektorDer Zusatz
(1:n)'+(0:x)
ist elementweise bei Broadcasts und gibt daher eine Matrix mit allen Summenpaaren:Indizierung mit
(1:x)
ruft die erstenx
Elemente dieser Matrix in der linearen Reihenfolge von Spalte zu Spalte (abwärts, dann quer) als Zeilenvektor ab:quelle
Haskell , 31 Bytes
Probieren Sie es online!
Dies könnte meine Lieblingsrekursion sein. Wir beginnen mit den Werten von 1 bis n und verketten dann dieselben Werte (über Selbstreferenz) +1. dann nehmen wir einfach die ersten x-Werte.
quelle
Viertens (gviertens) , 34 Bytes
Probieren Sie es online!
Code-Erklärung
quelle
MATL ,
16, 10 BytesProbieren Sie es online!
-6 Bytes gespart dank Guiseppe und Luis Mendo!
Erläuterung:
quelle
Gaia , 8 Bytes
Probieren Sie es online!
Funktioniert im Prinzip genauso wie die Antworten von Octave und MATL .
quelle
Gelee , 5 Bytes
Probieren Sie es online!
quelle
Ruby , 32 Bytes
Probieren Sie es online!
quelle
Japt
-m
,127 BytesPort von Jonathans Python-Lösung .
Nimmt
x
als erste Eingabe.Versuch es
quelle
JavaScript, 36 Bytes
Probieren Sie es online!
quelle
alert
oderprint
anstelle von return kann dies auf 34 Bytes reduzieren:n=>g=x=>x&&print(g(--x)|1+x%n+x/n)
Perl 5
-na
, 43 BytesProbieren Sie es online!
quelle
K (oK) ,
17 bis16 BytesProbieren Sie es online!
quelle
Stax , 6 Bytes
Führen Sie es aus und debuggen Sie es
Ausgepackt & erklärt:
quelle
Alchemist , 77 Bytes
Probieren Sie es online!
Erhöht und gibt einen Zähler n-mal aus und subtrahiert dann n-1, bevor er wiederholt wird.
quelle
Kohle , 18 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Ich hatte den Traum, die Liste mit einem Bereich von Null zu versehen und sie dann wieder abzutrennen, aber das war eigentlich 2 Bytes länger. Erläuterung:
quelle
JS, 54 Bytes
Probieren Sie es online!
quelle
f=
. Sie können ein Byte speichern, indem Sie die Parameter (n=>x=>
) und ein anderes durch Verteilen und Zuordnen des Arrays ([...Array(x)].map()
) ändern .Haskell,
3433 BytesProbieren Sie es online!
quelle
Perl 5 , 39 Bytes
Probieren Sie es online!
quelle
C (GCC) ,
4944 BytesVerwenden der Rekursion zum Speichern einiger Bytes.
Probieren Sie es online!
quelle
APL + WIN,
29 2316 BytesIndexursprung = 0 und fordert zur Eingabe von n und x auf
Probieren Sie es online! Mit freundlicher Genehmigung von Dyalog Classic
quelle
C (clang), 843 Bytes
quelle
argc
,argv
undranges
). Außerdem müssen keine Warnmeldungen hinzugefügt werden. Sie können davon ausgehen, dass die Eingabe gültig ist, sofern die Abfrage nichts anderes angibt.Icon , 48 Bytes
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 41 Byte
Probieren Sie es online!
quelle
Faktor 55 Bytes
Probieren Sie es online!
quelle