Zamień liczbę całkowitą n na listę zawierającą ją n razy


15

Biorąc pod uwagę liczbę całkowitą njako dane wejściowe, zwraca listę zawierającą npowtarzane nczasy. Na przykład program wziąłby go 5i przekształcił w [5,5,5,5,5]. Elementy muszą być liczbami całkowitymi, a nie ciągami. Żadne wbudowane funkcje, które wykonują to zadanie, nie są dozwolone.

To jest , więc obowiązują standardowe zasady.


43
@BrunoE To wciąż nie odpowiada dlaczego . Czy masz rzeczywisty powód, aby zakazać wbudowanych? Cytując xnor: Ogólnie rzecz biorąc, jeśli twoje wyzwanie jest zbyt proste, aby było interesujące, nie można go uratować poprzez banowanie różnych rzeczy.
Lynn,

13
@BrunoE, chociaż zgadzam się z tym sentymentem, wolimy obiektywizm tutaj w ppcg. Albo coś jest, albo nie jest ważne, opinie nie powinny wchodzić w równanie.
Skidsdev,

5
@BrunoE Specyfikacje muszą być wykonane w taki sposób, aby można było bezdyskusyjnie zdecydować, czy wpis jest prawidłowy, czy nie. Podziel się przemyśleniami na temat istniejących odpowiedzi i spraw, aby specyfikacje były bardziej obiektywne, jeśli chodzi o built-in.
Pan Xcoder,

6
Nadal jestem zdezorientowany, co liczy się jako „wbudowane” do tego zadania. Czy *operator Pythona jest w porządku? Jaki jest przykład wbudowanego, który nie jest w porządku?
Steve Bennett,

8
Jestem zaskoczony, że nikt jeszcze o tym nie wspominał, ale mamy piaskownicę do wyzwań, w których możesz je opublikować, aby uzyskać opinie na ich temat, zanim zaczną działać. W ten sposób mogłeś zapobiec dyskusji o regułach wyzwania, podczas gdy inni już przesłali swoje odpowiedzi.
JAD,

Odpowiedzi:


32

Galaretka , 1 bajt

x

Wypróbuj online!

Zauważ, że nie jest ton n wbudowane „powtarzanie czasów” - jego funkcja jest bardziej ogólna. Na przykład 4,5,6x1,2,3jest równy [4, 5, 5, 6, 6, 6]. Biorąc pod uwagę tylko jeden argument, Jelly właśnie dzieje się z niego korzystać zarówno z lewej i prawej argumentu dla podanego linku, ale ta funkcjonalność nie jest właściwy do x.

Jeśli to się nie liczy, istnieją różne zabawne 2-bajtowe alternatywy:

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

itp.


10
No tak. Każda odpowiedź na kod golfa jest zbiorem wbudowanych elementów, które spełniają to zadanie. Możesz zablokować tę odpowiedź, jeśli xwykonała „całą pracę”, ale z pewnością nie - nie ma ukrytego „0 bajtów” logiki parsowania linków i logiki koercji tablic repeat([n], n), która zamienia to w to , co dokładnie inne odpowiedzi robić.
Lynn,

8
@ Adám Jest to funkcja „powtarzaj każdy element xy razy”, biorąc 2 argumenty. Zadanie polega na tym, że Jelly analizuje niejawne argumenty, co nie ma nic wspólnego z samą funkcją.
Erik the Outgolfer

6
Jeśli ta odpowiedź jest nieprawidłowa, wówczas ograniczeniem pytania nie jest „Brak wbudowanych”, to „No 1 bajtowe odpowiedzi”, co jest niezwykle arbitralnym ograniczeniem, które wydaje się nieproduktywne w kodzie golfowym.
Kamil Drakari,

8
Myślę, że argument ten nie jest w kierunku wbudowany jest to, że istnieją dwa inne odpowiedzi 1 bajt w galarecie, które robią to samo i tak ta odpowiedź mogłaby być jednym z trzech. Nie ma 3 wbudowanych (można by mieć nadzieję) „powtórzeń n nczasów”, więc nie mogą być WSZYSTKIM „wbudowanymi”.
nmjcman101

6
Cały wątek komentarza wydaje się dobrym argumentem za tym, by nie zakazać czegoś tak subiektywnego jak wbudowane.
trichoplax


19

Operacja Flashpoint język skryptowy ,  50  46 bajtów

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

Zadzwoń z:

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

Wynik:


Czy masz dekrementację i--, i +=w tym?
TheLethalCoder

3
Dlaczego zrzuty ekranu są zawsze na jałowej pustyni? Do zrzutów ekranu należy użyć fajnej mapy: P.
Magic Octopus Urn

2
@MagicOctopusUrn Czy to lepiej?
Steadybox

1
@Steadybox ahaha! Epicki: P. Czy to miasto odeszło na śmierć? To wygląda jak kościół, który zaczynasz.
Magic Octopus Urn

1
Myślę, że zrzuty ekranu powinny być przycięte do mniejszego obrazu. Nie musimy widzieć mapy, która odwraca uwagę od rzeczywistych wyników.
mbomb007

12

APL (Dyalog) , 2 bajty

Pięć równie krótkich rozwiązań. Dwa ostatnie są dzięki uprzejmości Zacharý .


⍴⍨

Wypróbuj online!

 cykliczne R eshape

 samego siebie


/⍨

Wypróbuj online!

/ replika

 samego siebie


\⍨

Wypróbuj online!

\ rozszerzać

 samego siebie


⌿⍨

Wypróbuj online!

 replikacja wzdłuż pierwszej (i tylko) osi

 samego siebie


⍀⍨

 rozwinąć wzdłuż pierwszej (i tylko) osi

 samego siebie

Wypróbuj online!


@Uriel Jest jeszcze jeden…
Adám

1
Zarówno ⌿⍨i ⍀⍨praca.
Zacharý

2
Czy było celowe, że „ja” wygląda jak twarz?
geokavel

1
@geokavel Nie sądzę, ale zauważyłem też, że napisałem ten post. Czyni to całkiem mnemonicznym, nie? W rzeczywistości selfie jest jedną z jego półoficjalnych nazw, więc w interfejsie RIDE do Dyalog APL możesz wstawić , wpisując `` selfie .
Adám

1
@sethrin TIO zlicza znaki (i bajty UTF-8, w stosownych przypadkach), ale od użytkownika zależy, czy nie użyją żadnych znaków, których brakuje w jednobajtowym zestawie znaków (SBCS). Informacje na temat APL można znaleźć tutaj.
Adám



9

Oktawa, 12 bajtów

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

Wypróbuj online!


Co oznacza ~ w oktawie, ponieważ to jedyna część twojego kodu, której nie rozumiem ..
Michthan

1
@Michthan Przepraszamy za opóźnienie w odpowiedzi. ~to notoperator konwertujący 1: n na tablicę 0s rozmiaru n. Możesz użyć !zamiast tego.
rahnema1

9

JavaScript (ES6), 19 bajtów

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

Spróbuj

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
Tablica bez ...- cokolwiek dalej ?!
Neil

1
@Neil: wydawało mi się, że to źle, nawet kiedy to pisałem! : D
Shaggy

7

Pyth , 2 bajty

*]

Zestaw testowy .


*] QQ - Pełny program z niejawnym wejściem

 ] - Zmień dane wejściowe w listę.
* - Powtórz to tyle razy, ile wynosi wartość wejściowa. 

7

Haskell , 13 bajtów

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

Wypróbuj online! Zastosowanie: f 5plony [5,5,5,5,5]. Dlan=5 , [1..n]otrzymuje listę [1,2,3,4,5]. n<$zastępuje każdy element tej listy na n.


3
Mój jest trochę dłuższy, ale i tak mi się podoba:join replicate
amalloy

@amalloy To byłby rzeczywiście czysty sposób Haskella. Jednak joinnie jest częścią Preludium i dlatego wymaga długiego czasu import Control.Monad, co rzadko czyni go przydatnym do gry w golfa.
Laikoni



5

Dodos , 76 bajtów

	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

Wypróbuj online!

Wyjaśnienie:

fto pseudonim dla dab(tail).

sto odejmowanie, jak wyjaśniono na wiki: (x, y) → (0, y-x), gdy x ≤ y .

todwzorowuje (a, b, c…) na (b + c +…, a + b + c +…) .

f s tmapy (a, b, c…) do a . To jest nasza funkcja „głowy”.

dzanurza tylko głowę argumentu: (a, b, c…) → (| a − 1 |, b, c…)

rjest główną logiką powtarzania. Odwzorowujemy (a, b) na (* r (| a-1 |, b), b) .

Na przykład r (4, 7) będzie oceniać jako

  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.

Na koniec definiujemy 2, które mapy n → (n, n) , i definiujemy mainjako f f r 2, obliczając r (n, n) i odcinając pierwsze dwa elementy.


4

Japt , 2 bajty

ÆU

Sprawdź to


Wyjaśnienie

Domniemane wprowadzenie liczby całkowitej U. Wygeneruj tablicę liczb całkowitych od 0do U-1. Wypełnij to U. Niejawne wyjście wynikowej tablicy.


4

TeX, 81 bytes

\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


That's actually LaTeX. In Tex it'd be much shorter.
A Gold Man


4

Haskell (14 bytes)

replicate>>=id

Thanks to @nimi, I don't need any import anymore. Yay!

It's a function that takes an integer argument; for example, the following returns [5,5,5,5,5]:

(replicate>>=id) 5

1
Why not id=<<replicate? It's also 14 bytes but doesn't need the import.
nimi

@nimi Very good point! Overlooked that possibility. (I really need to dive into the arrow monad more...)
tomsmeding

4

Java (OpenJDK 8), 50 48 bytes

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

Try it online!

-2 bytes thanks to @Jakob

Inspired by the comments in @OlivierGrégoire's post, and optimized a little further. Takes an integer input, creates an IntStream of n elements, then maps each element to n and returns it.


You can save 2 bytes by starting with java.util.Arrays.stream(new int[n]).
Jakob

4

Perl 5, 18 14 bytes

-4 bytes thanks to @DomHastings

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

Try it online!

Is x a builtin that does the entire task? Sort of? Not really? Rules unclear?

Edit: Yeah, probably it's fine.


Had pretty much the same, but you can change the first $_[0] to @_! Also the second can be"@_" I think...
Dom Hastings

I would say it doesn't count as a built-in because you have to work around the fact that it takes two inputs instead of one.
Brad Gilbert b2gills

Why not $_=$_ x$_ with perl -pe?
Thor

@Thor x does string repetition, not list repetition, unless the left operand is in parentheses (or is a qw operator) and the x is evaluated in list context. And of course $_ is a scalar, not a list.
aschepler

1
@Thor I wouldn't count that as satisfying "return a list".
aschepler

3

J, 2 bytes

$~

Same as the APL answer: reflexively shape the input. In other words:

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

3

Brainbash, 39 bytes

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

Try it online!

Prints N N times. Works by generating 32, taking input, then duplicating the input twice, then output the first for each 1 in the second.


3

C (gcc), 55 bytes

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

Try it online!

Returns a list of k integers.


1
Yay "long arrow operator". Also, I didn't think gcc would ever use register eax for locals. Go figure.
aschepler

2
You can save 2 bytes by removing a comparison to 0 in for cycle, unless I've overlooked something.
Jasmes

Suggest *f(k){int r[k], instead of int*f(k){int*r=malloc(k*4),
ceilingcat

3

Röda, 10 bytes

{[[_]*_1]}

Try it online!

Explanation:

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

1
Why can you leave off the 1 in the first input but not the second?
Conor O'Brien

1
@ConorO'Brien Each underscore without a number has a number that is one larger than the previous: [_]*_ = [_1]*_2. Because the first underscore is the first, it has automatically the number 1.
fergusq


3

brainfuck, 16 bytes

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

Try it online!

The breakdown:

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

As I'm sure you're aware, brainfuck takes input and output values as ASCII characters. So a ! is represented as the value 33.


Your program doesn't take input, I don't think. Unless you're talking about a value left on the tape
Conor O'Brien

@ConorO'Brien The ladder. Think of it as a function more than a program.
Graviton

3

Coreutils, sed, 14 bytes

yes $1|sed $1q

As a zsh function, 20 19 bytes:

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

Try it online!


I don't think this answer is valid, since it doesn't take input.
James

@DJMcMayhem: used it in a function
Thor

Why not just make it a program yes $1|sed $1q?
Digital Trauma

Good point @DigitalTrauma, updated
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


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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.