Convierte un entero n en una lista que lo contiene n veces

15

Dado un entero ncomo entrada, devuelve una lista que contiene tiempos nrepetidos n. Por ejemplo, el programa lo tomaría 5y lo convertiría [5,5,5,5,5]. Los elementos deben ser enteros, no cadenas. No se permiten funciones integradas que realicen la tarea.

Este es el , por lo que se aplican reglas estándar.

Bruno E
fuente
43
@BrunoE Eso todavía no responde por qué . ¿Tiene una razón real para prohibir los empotrados? Para citar a xnor: en general, si tu desafío es demasiado simple para ser interesante, no se salvará prohibiendo las cosas.
Lynn
13
@BrunoE, aunque estoy de acuerdo con el sentimiento, preferimos la objetividad aquí en ppcg. O algo es o no es válido, las opiniones no deberían entrar en la ecuación.
Skidsdev
55
@BrunoE Las especificaciones deben hacerse de tal manera que uno pueda decidir indiscutiblemente si una entrada es válida o no. Comparta sus pensamientos sobre las respuestas existentes y haga que las especificaciones sean más objetivas cuando se trata de built-in.
Sr. Xcoder
66
Todavía estoy confundido lo que cuenta como un "incorporado" para esta tarea. ¿Está *bien el operador de Python ? ¿Cuál es un ejemplo de un incorporado que no está bien?
Steve Bennett
8
Me sorprende que nadie haya mencionado esto todavía, pero tenemos una caja de arena para desafíos donde puedes publicarlos para obtener comentarios sobre ellos, antes de que se publiquen. De esta manera, es posible que haya evitado discutir las reglas del desafío mientras otros ya enviaron sus respuestas.
JAD

Respuestas:

32

Jalea , 1 byte

x

Pruébalo en línea!

Tenga en cuenta que este no es el " n ntiempo de repetición " incorporado, su función es más general que eso. Por ejemplo 4,5,6x1,2,3igual [4, 5, 5, 6, 6, 6]. Teniendo en cuenta sólo un argumento, jalea sólo pasa a usarlo ya que tanto la izquierda y la derecha argumento para el enlace proporcionado, pero esta funcionalidad no es inherente a x.

Si esto no cuenta, hay varias alternativas divertidas de 2 bytes:

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

etc.

Lynn
fuente
10
Bueno, sí. Cada respuesta de golf de código es una colección de elementos integrados que realizan la tarea. Puede prohibir esta respuesta si xhizo "todo el trabajo", pero ciertamente no lo hace: hay un "0 bytes" implícito de análisis de enlaces y lógica de coerción de matriz para convertir esto repeat([n], n), que es exactamente lo que otras respuestas hacer.
Lynn
8
@ Adám Esta es la función "repetir cada elemento de xy veces", tomando 2 argumentos. Lo que lo hace cumplir la tarea es cómo Jelly analiza los argumentos implícitos, que no tiene nada que ver con la función en sí.
Erik the Outgolfer
66
Si esta respuesta es inválida, entonces la restricción de la pregunta no es "No incluye", es "Respuestas de 1 byte", que es una limitación extremadamente arbitraria que parece contraproducente en el código golf.
Kamil Drakari
8
Creo que un argumento para que esto no se incorpore es que hay otras dos respuestas de 1 byte en Jelly que hacen lo mismo y, por lo tanto, esta respuesta podría ser cualquiera de las tres. No hay 3 incorporados (uno esperaría) para " n ntiempos repetidos ", por lo que TODOS no pueden ser "incorporados" para ello.
nmjcman101
66
Todo este hilo de comentarios parece un buen argumento para no prohibir algo tan subjetivo como los incorporados.
trichoplax
22

Python 3 , 14 bytes

lambda k:[k]*k

Pruébalo en línea!

Sr. Xcoder
fuente
¿Qué hay de malo con solo [n]*n?
3
@paxdiablo Eso es un fragmento. Podemos crear programas completos o funciones según el meta consenso.
Sr. Xcoder
19

Lenguaje de script Operation Flashpoint ,  50  46 bytes

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

Llamar con:

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

Salida:

Steadybox
fuente
¿Tiene post decremento i--, y +=en esto?
TheLethalCoder
3
¿Por qué las capturas de pantalla para esto siempre están en un desierto árido? Deberías usar un mapa genial para tus capturas de pantalla: P.
Urna mágica de pulpo
2
@MagicOctopusUrn ¿Eso es mejor?
Steadybox
1
@Steadybox ahaha! Épica: P. ¿Es esa la ciudad de izquierda por muerta? Se parece a la iglesia en la que comienzas.
Urna mágica del pulpo
1
Creo que las capturas de pantalla deberían publicarse recortadas en una imagen más pequeña. No necesitamos ver el mapa, y distrae de la salida real.
mbomb007
12

APL (Dyalog) , 2 bytes

Cinco soluciones igualmente cortas. Los dos últimos son cortesía de Zacharý .


⍴⍨

Pruébalo en línea!

 cíclicamente r eshape

 yo


/⍨

Pruébalo en línea!

/ reproducir exactamente

 yo


\⍨

Pruébalo en línea!

\ expandir

 yo


⌿⍨

Pruébalo en línea!

 replicar a lo largo del primer (y único) eje

 yo


⍀⍨

 expandirse a lo largo del primer (y único) eje

 yo

Pruébalo en línea!

Adán
fuente
@Uriel Hay uno más ...
Adám
1
Ambos ⌿⍨y ⍀⍨trabajo.
Zacharý
2
¿Fue intencional que el "yo" parezca una cara?
geokavel
1
@geokavel No lo creo, pero también lo noté cuando escribí esta publicación. Lo hace bastante mnemotécnico, ¿no? De hecho, selfie es uno de sus nombres semioficiales, por lo que en la interfaz RIDE de Dyalog APL, puede insertar escribiendo `` selfie .
Adám
1
@sethrin TIO cuenta los caracteres (y los bytes UTF-8 donde corresponda), pero depende del usuario asegurarse de que no use ningún carácter que falte en un conjunto de caracteres de un solo byte (SBCS). Para APL, ver aquí.
Adám
11

Mathematica, 10 bytes

#~Table~#&
J42161217
fuente
10

Protón , 8 bytes

n=>[n]*n

Pruébalo en línea!

totalmente humano
fuente
11
Esto combina lo mejor de la respuesta de Python y la respuesta de JavaScript, ¡me encanta!
Bruno E
9

Octava, 12 bytes

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

Pruébalo en línea!

rahnema1
fuente
¿Qué significa ~ en octava, porque esa es la única parte de su código que no entiendo
Michthan
1
@Michthan Perdón por la respuesta tardía. ~es el notoperador que convierte 1: n en una matriz de 0s de tamaño n. Puedes usar en !lugar de él.
rahnema1
9

JavaScript (ES6), 19 bytes

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

Intentalo

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>

Lanudo
fuente
3
Una matriz sin ...... ¡¿qué sigue ?!
Neil
1
@Neil: ¡me sentí mal incluso cuando lo estaba escribiendo! : D
Shaggy
7

Pyth , 2 bytes

*]

Banco de pruebas .


*] QQ - Programa completo con entrada implícita

 ] - Convierta la entrada en una lista.
* - Repítalo varias veces igual a la entrada. 
Sr. Xcoder
fuente
7

Haskell , 13 bytes

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

Pruébalo en línea! Uso: f 5rendimientos [5,5,5,5,5]. Para n=5, [1..n]produce la lista [1,2,3,4,5]. n<$reemplaza cada elemento de esta lista con n.

Laikoni
fuente
3
El mío es un poco más largo, pero me gusta de todos modos:join replicate
amalloy
@amalloy De hecho, esta sería la forma limpia de Haskell de hacerlo. Sin embargo, joinno es parte de Prelude y, por lo tanto, requiere un tiempo prolongado import Control.Monad, lo que rara vez lo hace útil para jugar al golf.
Laikoni
6

R , 18 bytes

array(n<-scan(),n)

Pruébalo en línea!

usuario2390246
fuente
66
¿Está rep(n<-scan(),n)demasiado cerca de un edificio?
Robin Gertenbach
@RobinGertenbach Tal vez deberías publicarlo como una respuesta separada.
Andreï Kostyrka
5

05AB1E , 2 bytes

Pruébalo en línea!

Emigna
fuente
Bonito, mejor que .D).
Urna mágica del pulpo
@MagicOctopusUrn: Sí, ese fue mi primer pensamiento.
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

Pruébalo en línea!

Explicación:

fes un alias para dab(cola).

ses la resta, como se explica en la wiki: (x, y) → (0, y − x) cuando x ≤ y .

tmapas (a, b, c ...) a (b + c + ..., a + b + c + ...) .

f s tmapas (a, b, c ...) a a . Esta es nuestra función de "cabeza".

dsumerge solo la cabeza de su argumento: (a, b, c…) → (| a − 1 |, b, c…)

rEs la lógica de repetición principal. Mapeamos (a, b) a (* r (| a − 1 |, b), b) .

Por ejemplo, r (4, 7) evaluará como

  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.

Finalmente, definimos 2qué mapas n → (n, n) , y definimos maincomo f f r 2, computar r (n, n) y cortar los primeros dos elementos.

Lynn
fuente
4

Japt , 2 bytes

ÆU

Pruébalo


Explicación

Entrada implícita de entero U. Genere una matriz de enteros de 0a U-1. Llénalo con U. Salida implícita de la matriz resultante.

Lanudo
fuente
4

TeX, 81 bytes

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

Uso

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

ingrese la descripción de la imagen aquí

Monja permeable
fuente
Eso es en realidad LaTeX. En Tex sería mucho más corto.
Un hombre de oro el
4

Haskell (14 bytes)

replicate>>=id

Gracias a @nimi, ya no necesito ninguna importación. ¡Hurra!

Es una función que toma un argumento entero; por ejemplo, los siguientes retornos [5,5,5,5,5]:

(replicate>>=id) 5
tomsmeding
fuente
1
¿Por qué no id=<<replicate? También tiene 14 bytes pero no necesita la importación.
nimi
@nimi Muy buen punto! Pasó por alto esa posibilidad. (Realmente necesito sumergirme más en la flecha mónada ...)
tomsmeding
4

Java (OpenJDK 8) , 50 48 bytes

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

Pruébalo en línea!

-2 bytes gracias a @Jakob

Inspirado por los comentarios en la publicación de @ OlivierGrégoire, y optimizado un poco más. Toma una entrada entera, crea un IntStream de nelementos, luego asigna cada elemento ny lo devuelve.

Xanderhall
fuente
Puede guardar 2 bytes comenzando con java.util.Arrays.stream(new int[n]).
Jakob
4

Perl 5 , 18 14 bytes

-4 bytes gracias a @DomHastings

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

Pruébalo en línea!

¿Es xuna construcción que hace toda la tarea? ¿Algo así como? ¿Realmente no? Reglas poco claras?

Editar: Sí, probablemente esté bien.

aschepler
fuente
Tenía casi lo mismo, pero puedes cambiar el primero $_[0]a @_! También el segundo puede ser "@_", creo ...
Dom Hastings
Diría que no cuenta como una función incorporada porque debe evitar el hecho de que toma dos entradas en lugar de una.
Brad Gilbert b2gills
¿Por qué no $_=$_ x$_con perl -pe?
Thor
@Thor repite las xcadenas, no enumera la repetición, a menos que el operando izquierdo esté entre paréntesis (o sea un qwoperador) y xse evalúe en el contexto de la lista. Y, por supuesto, $_es un escalar, no una lista.
Aschepler
1
@Thor No lo consideraría satisfactorio "devolver una lista".
aschepler
3

J, 2 bytes

$~

Igual que la respuesta APL: da forma reflexiva a la entrada. En otras palabras:

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

Brainbash , 39 bytes

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

Pruébalo en línea!

Imprime N Ntiempos. Funciona generando 32, tomando entradas, luego duplicando la entrada dos veces, luego saca la primera para cada 1 en la segunda.

Conor O'Brien
fuente
3

C (gcc) , 55 bytes

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

Pruébalo en línea!

Devuelve una lista de kenteros.

Conor O'Brien
fuente
1
Yay "operador de flecha larga". Además, no pensé que gcc alguna vez usaría el registro eaxpara locales. Imagínate.
Aschepler
2
Puede guardar 2 bytes eliminando una comparación a 0 en ciclo, a menos que haya pasado por alto algo.
Jasmes
Sugerir en *f(k){int r[k],lugar deint*f(k){int*r=malloc(k*4),
ceilingcat
3

Röda , 10 bytes

{[[_]*_1]}

Pruébalo en línea!

Explicación:

{[[_]*_1]}
{        } /* Anonymous function   */
   _       /* The input (_1)       */
  [ ]      /* As a list            */
     *_1   /* Repeated _1 times    */
 [      ]  /* Pushed to the stream */
fergusq
fuente
1
¿Por qué puedes dejar el 1 en la primera entrada pero no la segunda?
Conor O'Brien
1
@ ConorO'Brien Cada subrayado sin un número tiene un número que es uno más grande que el anterior: [_]*_= [_1]*_2. Como el primer guión bajo es el primero, tiene automáticamente el número 1.
fergusq
3

brainfuck , 16 bytes

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

Pruébalo en línea!

El desglose:

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

Como estoy seguro de que sabe, Brainfuck toma los valores de entrada y salida como caracteres ASCII. Entonces a !se representa como el valor 33.

Graviton
fuente
Su programa no toma entrada, no lo creo. A menos que esté hablando de un valor que queda en la cinta
Conor O'Brien
@ ConorO'Brien La escalera. Piense en ello como una función más que un programa.
Graviton
3

Coreutils, sed, 14 bytes

yes $1|sed $1q

Como una función zsh, 20 19 bytes:

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

Pruébalo en línea!

Thor
fuente
No creo que esta respuesta sea válida, ya que no toma entrada.
DJMcMayhem
@DJMcMayhem: lo usé en una función
Thor
¿Por qué no simplemente convertirlo en un programa yes $1|sed $1q?
Trauma digital
Buen punto @DigitalTrauma, actualizado
Thor
Las reglas dicen que tiene que ser elementos enteros, no elementos de cadena. Para satisfacer eso, una respuesta bash / zsh necesitaría usar declare -ivariables enteras. Pero también tiene que ser una matriz. No estoy seguro de que bash incluso sea compatible con una matriz de enteros (como eval declare -ia "$1"usar la primera función arg como el nombre de un valor de retorno de la matriz). Voté esto porque sigue el espíritu de la pregunta; Dudo que la pregunta pretenda excluir idiomas que realmente no tienen listas / matrices de enteros.
Peter Cordes
3

MATL , 4 3 bytes

tY"

Pruébalo en línea!

Explicación:

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

Java (OpenJDK 8) , 58 56 bytes

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

Pruébalo en línea!

-2 bytes gracias a @KevinCruijssen

Olivier Grégoire
fuente
1
Dos bytes más cortos: n->{int a[]=new int[n],i=n;for(;i-->0;)a[i]=n;return a;}
Kevin Cruijssen
@KevinCruijssen Ay, me duele no haber pensado en eso ... ¡Gracias!
Olivier Grégoire
Le pasa a lo mejor de nosotros. ;) Si miras en mi historial de respuestas, probablemente también encontrarás algunas respuestas donde agrego algo como "bytes guardados gracias a ... debido a un estúpido error por mi parte / algo obvio que olvidé ..." :)
Kevin Cruijssen
Pensé en una respuesta como, IntStream.generate(() -> n).limit(n)pero decidí que no valía la pena escribir y voté por esto :)
JollyJoker
1
@JollyJoker ¡Podrías hacerlo ! De hecho, es dos bytes más corto y fácilmente superaría mi respuesta ;-)
Olivier Grégoire
2

cQuents v0, 3 bytes

::n

Pruébalo en línea!

Explicación

::    Mode: sequence 2. Given input n, output the sequence n times
  n   Each item in the sequence is n
Stephen
fuente
Tenga en cuenta los usos de la versión actual en &lugar de::
Stephen
2

Swift 3 , 29 bytes

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

Pruébalo aquí!

Swift 3 , 30 bytes

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

Pruébalo aquí!

Sr. Xcoder
fuente
Me pregunto si podemos obtener la entrada como la misma variable repetida dos veces. Posteriormente, se podría tener una solución de 10 bytes: Array.init. Simplemente asígnelo a una variable con un alias de tipo y boom:let f: (Int, Int) -> [Int] = Array.init; print(f(5, 5))
Alexander - Restablece a Mónica el
@Alexander No, no podemos obtener la entrada dos veces.
Sr. Xcoder