Verwandle eine ganze Zahl n in eine Liste, die sie n-mal enthält

15

Wenn Sie eine Ganzzahl nals Eingabe angeben, geben Sie eine Liste zurück n, die wiederholte nMale enthält. Zum Beispiel würde das Programm es in nehmen 5und verwandeln [5,5,5,5,5]. Die Elemente müssen Ganzzahlen sein, keine Zeichenfolgen. Eingebaute Funktionen, die die Aufgabe erfüllen, sind nicht zulässig.

Dies ist , daher gelten die Standardregeln.

Bruno E
quelle
43
@BrunoE Das antwortet immer noch nicht auf das Warum . Haben Sie einen konkreten Grund, Einbauten zu verbieten? Um xnor zu zitieren: Wenn Ihre Herausforderung zu einfach ist, um interessant zu sein, wird sie im Allgemeinen nicht durch das
Lynn
13
@BrunoE Obwohl ich dem Gefühl zustimme, bevorzugen wir Objektivität hier bei ppcg. Entweder ist etwas gültig oder nicht, Meinungen sollten nicht in die Gleichung eingehen.
Skidsdev
5
@BrunoE Die Angaben müssen so gemacht werden, dass man unbestreitbar entscheiden kann, ob ein Eintrag gültig ist oder nicht. Bitte teilen Sie Ihre Gedanken zu den vorhandenen Antworten und machen Sie die Spezifikationen objektiver, wenn es darum geht built-in.
Mr. Xcoder
6
Ich bin immer noch verwirrt, was für diese Aufgabe als "eingebaut" gilt. Ist Pythons *Operator in Ordnung? Was ist ein Beispiel für ein eingebautes Gerät, das nicht in Ordnung ist?
Steve Bennett
8
Ich bin überrascht, dass dies noch niemand erwähnt hat, aber wir haben eine Sandbox für Herausforderungen, in der Sie sie posten können, um Feedback zu ihnen zu erhalten, bevor sie live gehen. Auf diese Weise haben Sie möglicherweise die Diskussion der Regeln der Herausforderung verhindert, während andere bereits ihre Antworten eingereicht haben.
JAD

Antworten:

32

Gelee , 1 Byte

x

Probieren Sie es online!

Beachten Sie, dass dies nicht die n neingebauten Wiederholungszeiten sind - die Funktion ist allgemeiner. Zum Beispiel ist 4,5,6x1,2,3gleich [4, 5, 5, 6, 6, 6]. Gegeben nur ein Argument, geschieht Jelly einfach , es zu benutzen sowohl als linkes und rechtes Argument für den mitgelieferten Link, aber diese Funktionalität ist nicht inhärent zu x.

Wenn dies nicht zählt, gibt es verschiedene lustige 2-Byte-Alternativen:

x` ṁ` Ra Rị R» a€ oR oḶ oṬ oẊ Ḷị Ḷ» Ṭị Ṭ» Ẋị Ẋ» ị€ ṛ€ ȧ€ »€

etc.

Lynn
quelle
10
Nun ja. Jede Code-Golf-Antwort ist eine Sammlung von integrierten Funktionen, die diese Aufgabe erfüllen. Sie könnten diese Antwort verbieten, wenn Sie x"die ganze Arbeit" geleistet haben, aber es ist ganz sicher nicht so - es gibt eine implizite "0 Bytes" von Link-Parsing- und Array-Zwangslogik repeat([n], n), die dies in genau das umwandelt, was andere Antworten sagen tun.
Lynn
8
@ Adám Dies ist die Funktion "Wiederhole jedes Element von xy mal", wobei 2 Argumente verwendet werden. Die Aufgabe wird dadurch gelöst, dass Jelly implizite Argumente analysiert, was nichts mit der Funktion selbst zu tun hat.
Erik der Outgolfer
6
Wenn diese Antwort ungültig ist, lautet die Einschränkung der Frage nicht "No builtins", sondern "No 1 byte answers". Dies ist eine äußerst willkürliche Einschränkung, die im Codegolf als kontraproduktiv erscheint.
Kamil Drakari
8
Ich denke, ein Argument dafür, dass dies nicht eingebaut ist, ist, dass es zwei andere 1-Byte-Antworten in Jelly gibt, die dasselbe tun, und diese Antwort könnte eine der drei sein. Es gibt keine 3 eingebauten (man würde hoffen) für "Wiederholungszeiten n n", daher können sie nicht ALLE "eingebauten" sein.
nmjcman101
6
Dieser ganze Kommentarthread scheint ein gutes Argument dafür zu sein, etwas so Subjektives wie Builtins nicht zu verbieten.
Trichoplax
22

Python 3 , 14 Bytes

lambda k:[k]*k

Probieren Sie es online!

Mr. Xcoder
quelle
Was ist los mit gerade [n]*n?
3
@paxdiablo Das ist ein Ausschnitt. Wir können entweder vollständige Programme oder Funktionen gemäß dem Metakonsens erstellen.
Mr. Xcoder
19

Operation Flammpunkt Skriptsprache,  50  46 Bytes

f={a=[];t=_this;while{count a<t}do{a=a+[t]};a}

Rufen Sie an mit:

hint format["%1", 5 call f]

Ausgabe:

Steadybox
quelle
Haben Sie eine Postdekrementierung i--und +=diesbezüglich?
TheLethalCoder
3
Warum sind die Screenshots dazu immer in einer kargen Wüste? Sie sollten eine coole Karte für Ihre Screenshots verwenden: P.
Magic Octopus Urn
2
@MagicOctopusUrn Ist das besser?
Steadybox
1
@Steadybox ahaha! Epos: P. Ist das die Stadt von links für tot? Das sieht aus wie die Kirche, in der Sie anfangen.
Magic Octopus Urn
1
Ich denke, die Screenshots sollten auf ein kleineres Bild zugeschnitten werden. Wir brauchen die Karte nicht zu sehen und sie lenkt von der tatsächlichen Ausgabe ab.
mbomb007
12

APL (Dyalog) , 2 Bytes

Fünf gleich kurze Lösungen. Die letzten beiden sind mit freundlicher Genehmigung von Zacharý .


⍴⍨

Probieren Sie es online!

 zyklisch r eshape

 selbst


/⍨

Probieren Sie es online!

/ replizieren

 selbst


\⍨

Probieren Sie es online!

\ erweitern

 selbst


⌿⍨

Probieren Sie es online!

 Replizieren entlang der ersten (und einzigen) Achse

 selbst


⍀⍨

 Dehnen Sie entlang der ersten (und einzigen) Achse

 selbst

Probieren Sie es online!

Adam
quelle
@Uriel Es gibt noch einen…
Adám
1
Beides ⌿⍨und ⍀⍨Arbeit.
Zacharý
2
War es beabsichtigt, dass "Selbst" wie ein Gesicht aussieht?
Geokavel
1
@geokavel Ich glaube nicht, aber ich habe es auch als getippten Beitrag bemerkt. Macht es ziemlich mnemonisch, nein? In der Tat, selfie ist eine seiner halb-offiziellen Namen, so in der FAHRT - Schnittstelle zu Dyalog APL, Sie einfügen können durch Eingabe `` selfie .
Adám
1
@sethrin TIO zählt Zeichen (und ggf. UTF-8-Bytes). Der Benutzer muss jedoch sicherstellen, dass keine Zeichen verwendet werden, die in einem Einzelbyte-Zeichensatz (SBCS) fehlen. Informationen zu APLs finden Sie hier.
Adám
11

Mathematica, 10 Bytes

#~Table~#&
J42161217
quelle
10

Proton , 8 Bytes

n=>[n]*n

Probieren Sie es online!

total menschlich
quelle
11
Dies kombiniert das Beste aus der Python-Antwort und der Javascript-Antwort, ich liebe es!
Bruno E
9

Oktave, 12 Bytes

@(n)~(1:n)+n

Probieren Sie es online!

rahnema1
quelle
Was bedeutet die ~ in Oktave, denn das ist der einzige Teil Ihres Codes, den ich nicht verstehe.
Michthan
1
@Michthan Sorry für die späte Antwort. ~ist der notOperator, der 1: n in ein Array von 0s der Größe n konvertiert . Sie können !stattdessen verwenden.
Rahnema1
9

JavaScript (ES6), 19 Byte

n=>Array(n).fill(n)

Versuch es

o.innerText=(f=
n=>Array(n).fill(n)
)(i.value=8);oninput=_=>o.innerText=f(+i.value)
<input id=i type=number><pre id=o>

Zottelig
quelle
3
Ein Array ohne ...- was auch immer als nächstes ?!
Neil
1
@Neil: Es fühlte sich falsch an, obwohl ich es getippt habe! : D
Shaggy
7

Pyth , 2 Bytes

*]

Testsuite .


*] QQ - Volles Programm mit impliziter Eingabe

 ] - Verwandle die Eingabe in eine Liste.
* - Wiederholen Sie die Eingabe so oft wie nötig. 
Mr. Xcoder
quelle
7

Haskell , 13 Bytes

f n=n<$[1..n]

Probieren Sie es online! Verbrauch: f 5Erträge [5,5,5,5,5]. Für n=5, [1..n]ergibt sich die Liste [1,2,3,4,5]. n<$Ersetzt jedes Element dieser Liste durch n.

Laikoni
quelle
3
Meins ist ein bisschen länger, aber ich mag es trotzdem:join replicate
Amalloy
@amalloy Dies wäre in der Tat die saubere Haskell-Methode, um es zu tun. Allerdings joinist nicht Teil des Präludium und somit requiers einen langwierigen import Control.Monad, die selten macht es nützlich für den Golfsport.
Laikoni
6

R , 18 Bytes

array(n<-scan(),n)

Probieren Sie es online!

user2390246
quelle
6
Ist rep(n<-scan(),n)zu nahe an einem eingebauten?
Robin Gertenbach
@RobinGertenbach Vielleicht solltest du es als separate Antwort posten.
Andreï Kostyrka
5

05AB1E , 2 Bytes

Probieren Sie es online!

Emigna
quelle
Schön, besser als .D).
Magic Octopus Urn
@MagicOctopusUrn: Ja, das war mein erster Gedanke.
Emigna
5

Dodos , 76 Bytes

	f f r 2
2
	
	
r
	r d
	f s t f
d
	dip f s t
	f
t
	dot f
	dot
s
	s dip
f
	dab

Probieren Sie es online!

Erläuterung:

f ist ein Alias ​​für dab (Schwanz).

sist Subtraktion, wie im Wiki erklärt: (x, y) → (0, y - x) wenn x ≤ y .

tKarten (a, b, c…) bis (b + c +…, a + b + c +…) .

f s tKarten (a, b, c…) zu a . Dies ist unsere "Kopf" -Funktion.

dtaucht nur den Kopf seines Arguments ein: (a, b, c…) → (| a − 1 |, b, c…)

rist die Hauptwiederholungslogik. Wir ordnen (a, b) zu (* r (| a - 1 |, b), b) ab .

Zum Beispiel wird r (4, 7) als ausgewertet

  r(4, 7)
= r(3, 7), 7
= r(2, 7), 7, 7
= r(1, 7), 7, 7, 7
= r(0, 7), 7, 7, 7, 7
  → This would call r(1, 7), but (1, 7) ≥ (0, 7), so surrender!
= 0, 7, 7, 7, 7, 7.

Schließlich definieren wir 2, die Karten n → (n, n) , und definieren , mainwie die f f r 2Rechen r (n, n) und aus Zerhacken der ersten zwei Elemente.

Lynn
quelle
4

Japt , 2 Bytes

ÆU

Probier es aus


Erläuterung

Implizite Eingabe einer Ganzzahl U. Generieren Sie ein Array von Ganzzahlen von 0bis U-1. Fülle es mit U. Implizite Ausgabe des resultierenden Arrays.

Zottelig
quelle
4

TeX, 81 Bytes

\newcommand{\f}[1]{#1\count0=2\loop,#1\advance\count0 by1\ifnum\count0<#1\repeat}

Verwendung

\documentclass[12pt,a4paper]{article}
\begin{document}
\newcommand{\f}[1]{#1\count0=2\loop,#1\advance\count0 by1\ifnum\count0<#1\repeat}

\f{5}

\f{10}
\end{document}

Bildbeschreibung hier eingeben

Undichte Nonne
quelle
Das ist eigentlich LaTeX. In Tex wäre es viel kürzer.
A Gold Man
4

Haskell (14 Bytes)

replicate>>=id

Dank @nimi brauche ich keinen Import mehr. Yay!

Es ist eine Funktion, die ein ganzzahliges Argument akzeptiert. Folgendes gibt beispielsweise Folgendes zurück [5,5,5,5,5]:

(replicate>>=id) 5
Tomsmeding
quelle
1
Warum nicht id=<<replicate? Es sind ebenfalls 14 Bytes, der Import ist jedoch nicht erforderlich.
nimi
@ nimi Sehr guter Punkt! Übersehen diese Möglichkeit. (Ich muss wirklich mehr in die
Pfeilmonade eintauchen
4

Java (OpenJDK 8) , 50 bis 48 Byte

n->java.util.Arrays.stream(new int[n]).map(i->n)

Probieren Sie es online!

-2 Bytes dank @Jakob

Inspiriert von den Kommentaren in @ OlivierGrégoires Beitrag und etwas weiter optimiert. Übernimmt eine Ganzzahleingabe, erstellt einen IntStream von nElementen, ordnet dann jedes Element zu nund gibt es zurück.

Xanderhall
quelle
Sie können 2 Bytes sparen, indem Sie mit beginnen java.util.Arrays.stream(new int[n]).
Jakob
4

Perl 5 , 18 14 Bytes

-4 Bytes dank @DomHastings

sub{(@_)x"@_"}

Probieren Sie es online!

Ist xein Builtin, das die gesamte Aufgabe erledigt? Art von? Nicht wirklich? Regeln unklar?

Edit: Ja, wahrscheinlich ist es in Ordnung.

aschepler
quelle
Hatte ziemlich das gleiche, aber Sie können das ändern zuerst $_[0]an @_! Auch die zweite kann "@_"ich denken ...
Dom Hastings
Ich würde sagen, dass es nicht als eingebaut gilt, weil man die Tatsache umgehen muss, dass es zwei Eingänge anstelle von einem benötigt.
Brad Gilbert b2gills
Warum nicht $_=$_ x$_mit perl -pe?
Thor
@Thor xwiederholt Zeichenfolgen und nicht Listen, es sei denn, der linke Operand steht in Klammern (oder ist ein qwOperator) und der xwird im Listenkontext ausgewertet. Und natürlich $_ist es ein Skalar, keine Liste.
Aschepler
1
@Thor Ich würde das nicht als befriedigend "eine Liste zurückgeben" zählen.
Aschepler
3

J, 2 Bytes

$~

Entspricht der APL-Antwort: Gestalten Sie die Eingabe reflexartig. Mit anderen Worten:

$~ y
y $ y
NB. y copies of y
Conor O'Brien
quelle
3

Brainbash , 39 Bytes

>-[-[-<]>>+<]>->#[->+>+<<]>>[-<;<<.>>>]

Probieren Sie es online!

Druckt N Nmal. Generiert 32, nimmt die Eingabe, dupliziert sie zweimal und gibt dann die erste für jede 1 in der zweiten aus.

Conor O'Brien
quelle
3

C (gcc) , 55 Bytes

int*f(k){int*r=malloc(k*4),a=k;for(;a-->0;)r[a]=k;k=r;}

Probieren Sie es online!

Gibt eine Liste von kGanzzahlen zurück.

Conor O'Brien
quelle
1
Ja "Langpfeil-Operator". Außerdem hätte ich nicht gedacht, dass gcc jemals ein Register eaxfür Einheimische verwenden würde. Stelle dir das vor.
Aschepler
2
Sie können 2 Bytes einsparen, indem Sie den Vergleich für den Zyklus auf 0 setzen, es sei denn, ich habe etwas übersehen.
Jasmes
Schlagen Sie *f(k){int r[k],stattdessen vorint*f(k){int*r=malloc(k*4),
ceilingcat
3

Röda , 10 Bytes

{[[_]*_1]}

Probieren Sie es online!

Erläuterung:

{[[_]*_1]}
{        } /* Anonymous function   */
   _       /* The input (_1)       */
  [ ]      /* As a list            */
     *_1   /* Repeated _1 times    */
 [      ]  /* Pushed to the stream */
fergusq
quelle
1
Warum können Sie die 1 in der ersten Eingabe weglassen, aber nicht die zweite?
Conor O'Brien
1
@ ConorO'Brien Jeder Unterstrich ohne Zahl hat eine Zahl, die um eins größer ist als die vorherige: [_]*_= [_1]*_2. Da der erste Unterstrich der erste ist, hat er automatisch die Nummer 1.
fergusq
3

Brainfuck , 16 Bytes

[->+>+<<]>[->.<]

Probieren Sie es online!

Die Panne:

[->+>+<<]          Duplicate 'n' into the next 2 cells to the right
         >         Move to the first duplicate
          [->.<]   Print 'n', 'n' times

Wie Sie sicher wissen, verwendet brainfuck Eingabe- und Ausgabewerte als ASCII-Zeichen. A !wird also als Wert 33 dargestellt.

Graviton
quelle
Dein Programm nimmt keine Eingabe, glaube ich nicht. Es sei denn, Sie sprechen von einem Wert auf dem Band
Conor O'Brien
@ ConorO'Brien Die Leiter. Stellen Sie es sich mehr als eine Funktion als ein Programm vor.
Graviton
3

Coreutils, sed, 14 Bytes

yes $1|sed $1q

Als zsh-Funktion 20 bis 19 Bytes:

f(){yes $1|sed $1q}

Probieren Sie es online!

Thor
quelle
Ich glaube nicht, dass diese Antwort gültig ist, da sie keine Eingabe erfordert.
DJMcMayhem
@ DJMcMayhem: verwendet es in einer Funktion
Thor
Warum nicht einfach ein Programm daraus machen yes $1|sed $1q?
Digitales Trauma
Guter Punkt @DigitalTrauma, aktualisiert
Thor
Die Regeln besagen, dass es sich um Ganzzahlelemente und nicht um Zeichenfolgenelemente handeln muss. Um dies zu befriedigen, müsste eine bash / zsh-Antwort declare -iganzzahlige Variablen verwenden. Es muss aber auch ein Array sein. Ich bin mir nicht sicher, ob bash überhaupt ein Integer-Array unterstützt (ich verwende gerne eval declare -ia "$1"die erste Funktion arg als Namen eines Array-Rückgabewerts). Ich bezweifle, dass die Frage Sprachen ausschließen soll, die eigentlich keine ganzzahligen Listen / Arrays haben.
Peter Cordes
3

MATL , 4 3 Bytes

tY"

Probieren Sie es online!

Erläuterung:

t       % duplicate elements
Y"      % replicate elements of array
        % (implicit) convert to string and display
Cinaski
quelle
2

Java (OpenJDK 8) , 58 56 Bytes

n->{int a[]=new int[n],i=n;for(;i-->0;)a[i]=n;return a;}

Probieren Sie es online!

-2 Bytes dank @KevinCruijssen

Olivier Grégoire
quelle
1
Zwei Bytes kürzer:n->{int a[]=new int[n],i=n;for(;i-->0;)a[i]=n;return a;}
Kevin Cruijssen
@ KevinCruijssen Autsch, es tut weh, ich habe nicht darüber nachgedacht ... Danke!
Olivier Grégoire
Passiert den Besten von uns. ;) Wenn du in meinem Antwortverlauf nachschaust, wirst du wahrscheinlich auch einige Antworten finden, bei denen ich etwas in der Art von "Bytes gespeichert dank ... aufgrund eines dummen Fehlers von mir selbst / etwas Offensichtliches, das ich vergessen habe ..." hinzufüge :)
Kevin Cruijssen
Ich dachte über eine Antwort wie nach IntStream.generate(() -> n).limit(n), entschied aber, dass es sich nicht lohnt, sie einzutippen und stimmte stattdessen zu :)
JollyJoker
1
@JollyJoker Du könntest es schaffen ! Es ist in der Tat zwei Bytes kürzer und würde meine Antwort leicht schlagen ;-)
Olivier Grégoire
2

cQuents v0, 3 Bytes

::n

Probieren Sie es online!

Erläuterung

::    Mode: sequence 2. Given input n, output the sequence n times
  n   Each item in the sequence is n
Stephen
quelle
Beachten Sie, dass die aktuelle Version &statt::
Stephen
2

Schnelle 3 , 29 Bytes

{n in(0..<n).map{_ in n}}

Probieren Sie es hier aus!

Schnelle 3 , 30 Bytes

{Array(repeating:$0,count:$0)}

Probieren Sie es hier aus!

Mr. Xcoder
quelle
Ich frage mich, ob wir die Eingabe als dieselbe Variable zweimal wiederholen lassen können. Dann könnten Sie eine 10 - Byte - Lösung haben: Array.init. Weisen Sie es einfach einer Variablen mit einem Typ-Alias ​​zu und starten Sie:let f: (Int, Int) -> [Int] = Array.init; print(f(5, 5))
Alexander - Reinstate Monica
@Alexander Nein, wir können die Eingabe nicht zweimal abrufen.
Mr. Xcoder