Transformer un entier n en une liste le contenant n fois


15

Étant donné un entier nen entrée, renvoyez une liste contenant ndes ntemps répétés . Par exemple, le programme prendrait 5et le transformerait en [5,5,5,5,5]. Les éléments doivent être des entiers, pas des chaînes. Aucune fonction intégrée qui accomplit la tâche n'est autorisée.

Il s'agit de , donc les règles standard s'appliquent.


43
@BrunoE Cela ne répond toujours pas au pourquoi . Avez-vous une raison réelle d'interdire les modules intégrés? Pour citer xnor: En général, si votre défi est trop simple pour être intéressant, il ne sera pas sauvé en interdisant les choses.
Lynn

13
@BrunoE alors que je suis d'accord avec le sentiment, nous préférons l'objectivité ici au ppcg. Soit quelque chose est ou n'est pas valide, les opinions ne devraient pas entrer dans l'équation.
Skidsdev

5
@BrunoE Les spécifications doivent être établies de telle sorte que l'on puisse incontestablement décider si une entrée est valide ou non. Veuillez partager vos réflexions sur les réponses existantes et rendre les spécifications plus objectives en ce qui concerne built-in.
M. Xcoder

6
Je suis toujours confus ce qui compte comme «intégré» pour cette tâche. L' *opérateur de Python est-il correct? Quel est un exemple d'un intégré qui ne va pas?
Steve Bennett

8
Je suis surpris que personne n'ait encore mentionné cela, mais nous avons un bac à sable pour les défis où vous pouvez les publier pour obtenir des commentaires sur eux, avant qu'ils ne soient mis en ligne. De cette façon, vous pourriez avoir empêché de discuter des règles du défi alors que d'autres ont déjà soumis leurs réponses.
JAD

Réponses:


32

Gelée , 1 octet

x

Essayez-le en ligne!

Notez que ce n'est pas le « n ntemps de répétition » intégré - sa fonction est plus générale que cela. Par exemple, c'est 4,5,6x1,2,3égal [4, 5, 5, 6, 6, 6]. Étant donné un seul argument, Jelly l'utilise à la fois comme argument gauche et droit pour le lien fourni, mais cette fonctionnalité n'est pas inhérente à x.

Si cela ne compte pas, il existe différentes alternatives amusantes sur 2 octets:

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

etc.


10
Hé bien oui. Chaque réponse de golf de code est une collection de modules intégrés qui accomplissent la tâche. Vous pourriez interdire cette réponse si vous avez xfait «tout le travail», mais ce n'est certainement pas le cas - il y a un «0 octet» implicite de logique d'analyse de liens et de coercition de tableaux pour transformer cela en repeat([n], n), ce qui est exactement ce que les autres réponses faire.
Lynn

8
@ Adám Il s'agit de la fonction "répéter chaque élément des temps xy", en prenant 2 arguments. Ce qui lui permet d'accomplir la tâche, c'est la façon dont Jelly analyse les arguments implicites, ce qui n'a rien à voir avec la fonction elle-même.
Erik the Outgolfer

6
Si cette réponse n'est pas valide, la contrainte de la question n'est pas "Pas de code intégré", c'est "Aucune réponse à 1 octet", ce qui est une limitation extrêmement arbitraire qui semble contre-productive dans le golf de code.
Kamil Drakari

8
Je pense que l'argument selon lequel ce n'est pas intégré est qu'il y a deux autres réponses de 1 octet dans Jelly qui font la même chose et que cette réponse pourrait donc être l'une des trois. Il n'y a pas 3 intégrés (on pourrait l'espérer) pour les " n ntemps de répétition ", donc ils ne peuvent pas TOUS être "intégrés" pour cela.
nmjcman101

6
Tout ce fil de commentaires semble un bon argument pour ne pas interdire quelque chose d'aussi subjectif que les intrinsèques.
trichoplax


19

Langage de script Operation Flashpoint ,  50  46 octets

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

Appeler avec:

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

Production:


Avez-vous post décrémentation i--, et +=dans ce domaine?
TheLethalCoder

3
Pourquoi les captures d'écran sont-elles toujours dans un désert aride? Vous devriez utiliser une carte sympa pour vos captures d'écran: P.
Urne de poulpe magique

2
@MagicOctopusUrn Est-ce mieux?
Steadybox

1
@Steadybox ahaha! Épique: P. Est-ce la ville de gauche pour les morts? Cela ressemble un peu à l'église dans laquelle vous commencez.
Magic Octopus Urn

1
Je pense que les captures d'écran devraient être publiées recadrées sur une image plus petite. Nous n'avons pas besoin de voir la carte, et elle distrait de la sortie réelle.
mbomb007

12

APL (Dyalog) , 2 octets

Cinq solutions également courtes. Les deux derniers sont une gracieuseté de Zacharý .


⍴⍨

Essayez-le en ligne!

 cyclique r Eshape

 soi


/⍨

Essayez-le en ligne!

/ reproduire

 soi


\⍨

Essayez-le en ligne!

\ développer

 soi


⌿⍨

Essayez-le en ligne!

 répliquer le long du premier (et uniquement) axe

 soi


⍀⍨

 développer le premier (et le seul) axe

 soi

Essayez-le en ligne!


@Uriel Il y en a un de plus…
Adám

1
Les deux ⌿⍨et le ⍀⍨travail.
Zacharý

2
Était-ce intentionnel que «soi» ressemble à un visage?
geokavel

1
@geokavel Je ne pense pas, mais je l'ai également remarqué en tapant ce message. C'est assez mnémonique, non? En fait, selfie est l'un de ses noms semi-officiels, donc dans l'interface RIDE de Dyalog APL, vous pouvez l'insérer en tapant `` selfie .
Adám

1
@sethrin TIO compte les caractères (et les octets UTF-8 le cas échéant), mais il appartient à l'utilisateur de s'assurer qu'il n'utilise aucun caractère manquant dans un jeu de caractères à un octet (SBCS). Pour les APL, voir ici.
Adám



9

Octave, 12 octets

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

Essayez-le en ligne!


Qu'est-ce que le ~ en octave, parce que c'est la seule partie de votre code que je ne comprends pas ..
Michthan

1
@Michthan Désolé pour la réponse tardive. ~est l' notopérateur qui convertit 1: n en un tableau de 0s de taille n. Vous pouvez utiliser à la !place de celui-ci.
rahnema1

9

JavaScript (ES6), 19 octets

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

Essayez-le

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>


3
Un tableau sans ...- quelle que soit la prochaine?!
Neil

1
@Neil: c'était mal même quand je le tapais! : D
Shaggy

7

Pyth , 2 octets

*]

Suite de tests .


*] QQ - Programme complet avec entrée implicite

 ] - Transformez l'entrée en liste.
* - Répétez-le un nombre de fois égal à l'entrée. 

7

Haskell , 13 octets

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

Essayez-le en ligne! Utilisation: f 5rendements [5,5,5,5,5]. Pour n=5, [1..n]donne la liste [1,2,3,4,5]. n<$remplace chaque élément de cette liste par n.


3
Le mien est un peu plus long, mais je l'aime quand même:join replicate
amalloy

@amalloy Ce serait en effet la manière propre à Haskell de le faire. Cependant, joinne fait pas partie de Prelude et nécessite donc une longue durée import Control.Monad, ce qui le rend rarement utile pour le golf.
Laikoni



5

Dodos , 76 octets

	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

Essayez-le en ligne!

Explication:

fest un alias pour dab(queue).

sest une soustraction, comme expliqué sur le wiki: (x, y) → (0, y − x) lorsque x ≤ y .

tmappe (a, b, c…) à (b + c +…, a + b + c +…) .

f s tcorrespond (a, b, c…) à a . C'est notre fonction «tête».

dne plonge que la tête de son argument: (a, b, c…) → (| a − 1 |, b, c…)

rest la principale logique de répétition. Nous mappons (a, b) à (* r (| a − 1 |, b), b) .

Par exemple, r (4, 7) sera évalué comme

  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.

Enfin, nous définissons 2, qui mappe n → (n, n) , et définissons maincomme f f r 2, le calcul de r (n, n) et le découpage des deux premiers éléments.


4

Japt , 2 octets

ÆU

Essaye-le


Explication

Saisie implicite d'entier U. Générez un tableau d'entiers de 0à U-1. Remplissez-le avec U. Sortie implicite du tableau résultant.


4

TeX, 81 octets

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

Usage

\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}

enter image description here


C'est en fait LaTeX. En Tex, ce serait beaucoup plus court.
Un homme d'or le


4

Haskell (14 octets)

replicate>>=id

Grâce à @nimi, je n'ai plus besoin d'importer. Yay!

C'est une fonction qui prend un argument entier; par exemple, les retours suivants [5,5,5,5,5]:

(replicate>>=id) 5

1
Pourquoi pas id=<<replicate? C'est aussi 14 octets mais n'a pas besoin de l'importation.
nimi

@nimi Très bon point! Oublié cette possibilité. (J'ai vraiment besoin de plonger dans la flèche monade plus ...)
tomsmeding

4

Java (OpenJDK 8) , 50 48 octets

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

Essayez-le en ligne!

-2 octets grâce à @Jakob

Inspiré par les commentaires dans le post de @ OlivierGrégoire, et optimisé un peu plus loin. Prend une entrée entière, crée un IntStream d' néléments, puis mappe chaque élément net le renvoie.


Vous pouvez enregistrer 2 octets en commençant par java.util.Arrays.stream(new int[n]).
Jakob

4

Perl 5 , 18 14 octets

-4 octets grâce à @DomHastings

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

Essayez-le en ligne!

Est x une fonction intégrée qui fait la totalité de la tâche? Sorte de? Pas vraiment? Les règles ne sont pas claires?

Edit: Ouais, probablement c'est bien.


Eu à peu près la même chose, mais vous pouvez changer le premier $_[0]en @_! Le second peut aussi être "@_"je pense ...
Dom Hastings

Je dirais que cela ne compte pas comme intégré car il faut contourner le fait qu'il faut deux entrées au lieu d'une.
Brad Gilbert b2gills

Pourquoi pas $_=$_ x$_avec perl -pe?
Thor

@Thor xeffectue la répétition de chaînes, pas la répétition de liste, sauf si l'opérande de gauche est entre parenthèses (ou est un qwopérateur) et xest évalué dans le contexte de la liste. Et bien sûr, $_c'est un scalaire, pas une liste.
aschepler

1
@Thor Je ne considérerais pas cela comme satisfaisant "retourner une liste".
aschepler

3

J, 2 octets

$~

Identique à la réponse APL: façonner réflexivement l'entrée. En d'autres termes:

$~ y
y $ y
NB. y copies of y

3

Brainbash , 39 octets

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

Essayez-le en ligne!

Imprime N Nfois. Fonctionne en générant 32, en prenant l'entrée, puis en dupliquant l'entrée deux fois, puis en sortant la première pour chaque 1 dans la seconde.


3

C (gcc) , 55 octets

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

Essayez-le en ligne!

Renvoie une liste d' kentiers.


1
Ouais "opérateur flèche longue". De plus, je ne pensais pas que gcc utiliserait jamais le registre eaxpour les locaux. Allez comprendre.
aschepler

2
Vous pouvez enregistrer 2 octets en supprimant une comparaison à 0 pour le cycle, sauf si j'ai oublié quelque chose.
Jasmes

Suggérer à la *f(k){int r[k],place deint*f(k){int*r=malloc(k*4),
plafondcat

3

Röda , 10 octets

{[[_]*_1]}

Essayez-le en ligne!

Explication:

{[[_]*_1]}
{        } /* Anonymous function   */
   _       /* The input (_1)       */
  [ ]      /* As a list            */
     *_1   /* Repeated _1 times    */
 [      ]  /* Pushed to the stream */

1
Pourquoi pouvez-vous laisser le 1 dans la première entrée mais pas la seconde?
Conor O'Brien

1
@ ConorO'Brien Chaque trait de soulignement sans numéro a un numéro un plus grand que le précédent: [_]*_= [_1]*_2. Parce que le premier trait de soulignement est le premier, il a automatiquement le numéro 1.
fergusq


3

brainfuck , 16 octets

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

Essayez-le en ligne!

La ventilation:

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

Comme je suis sûr que vous le savez, brainfuck prend les valeurs d'entrée et de sortie sous forme de caractères ASCII. Donc, a !est représenté par la valeur 33.


Votre programme ne prend pas en compte, je ne pense pas. À moins que vous ne parliez d'une valeur restante sur la bande
Conor O'Brien

@ ConorO'Brien L'échelle. Considérez-le comme une fonction plus qu'un programme.
Graviton

3

Coreutils, sed, 14 octets

yes $1|sed $1q

En tant que fonction zsh, 20 19 octets:

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

Essayez-le en ligne!


Je ne pense pas que cette réponse soit valide, car elle ne prend pas d'entrée.
DJMcMayhem

@DJMcMayhem: l'a utilisé dans une fonction
Thor

Pourquoi ne pas simplement en faire un programme yes $1|sed $1q?
Digital Trauma

Bon point @DigitalTrauma, mis à jour
Thor

The rules say it has to be integer elements, not string elements. To satisfy that, a bash/zsh answer would need to use declare -i integer variables. But it also has to be an array. I'm not sure bash even supports an integer array (like eval declare -ia "$1" to use the first function arg as the name of an array return value.) I upvoted this because it follows the spirit of the question; I doubt the question meant to exclude languages that don't really have integer lists / arrays.
Peter Cordes

3

MATL, 4 3 bytes

tY"

Try it online!

Explanation:

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

2

Java (OpenJDK 8), 58 56 bytes

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

Try it online!

-2 bytes thanks to @KevinCruijssen


1
Two bytes shorter: n->{int a[]=new int[n],i=n;for(;i-->0;)a[i]=n;return a;}
Kevin Cruijssen

@KevinCruijssen Ouch, it hurts I didn't think about that... Thanks!
Olivier Grégoire

Happens to the best of us. ;) If you look in my answer history you'll probably also find some answers where I add something along the lines of "bytes saved thanks to ... due to a stupid mistake by myself / something obvious I forgot.." :)
Kevin Cruijssen

I thought about an answer like IntStream.generate(() -> n).limit(n) but decided it wasn't worth typing up and upvoted this instead :)
JollyJoker

1
@JollyJoker You could do it! It's indeed two bytes shorter and would easily beat my answer ;-)
Olivier Grégoire

2

cQuents v0, 3 bytes

::n

Try it online!

Explanation

::    Mode: sequence 2. Given input n, output the sequence n times
  n   Each item in the sequence is n

Note current version uses & instead of ::
Stephen

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.