N tamsayısını n kez içeren bir listeye dönüştürün


15

nGirdi olarak bir tamsayı verildiğinde n, tekrarlanan nsüreleri içeren bir liste döndürün . Örneğin, program alıp 5dönüştürür [5,5,5,5,5]. Öğelerin dize değil tamsayı olması gerekir. Görevi gerçekleştiren yerleşik işlevlere izin verilmez.

Bu , bu nedenle standart kurallar geçerlidir.


43
@BrunoE Bu hala nedenini cevaplamıyor . Yerleşikleri yasaklamak için gerçek bir nedeniniz var mı? Xnor'dan alıntı yapmak gerekirse
Lynn

13
@BrunoE, bu düşünceye katılırken, burada ppcg'de objektifliği tercih ediyoruz. Ya bir şeyler geçerlidir ya da geçerli değildir, görüşler denkleme gelmemelidir.
Skidsdev

5
@BrunoE Teknik özellikler , bir girişin geçerli olup olmadığına tartışmasız karar verebilecek şekilde yapılmalıdır . Lütfen mevcut cevaplar hakkındaki düşüncelerinizi paylaşın ve söz konusu olduğunda özellikleri daha objektif hale getirin built-in.
Bay Xcoder

6
Hala bu görev için "yerleşik" olarak sayılan şeylerin kafası karıştı. Python'un *operatörü iyi mi? İyi olmayan yerleşik bir örnek nedir?
Steve Bennett

8
Henüz kimsenin bundan bahsetmediğinden şaşırıyorum, ancak canlı yayına geçmeden önce onlarla ilgili geri bildirim almak için gönderebileceğiniz zorluklar için bir sanal alanımız var . Bu şekilde, diğerleri zaten cevaplarını gönderirken, meydan okuma kurallarını tartışmayı engellemiş olabilirsiniz.
JAD

Yanıtlar:


32

Jöle , 1 bayt

x

Çevrimiçi deneyin!

Bunun “tekrarlama süreleri” nin yerleşik olmadığını unutmayın n n- işlevi bundan daha geneldir. Örneğin, 4,5,6x1,2,3eşittir [4, 5, 5, 6, 6, 6]. Tek argüman göz önüne alındığında, Jelly sadece sol ve sağlanan bağlantı için doğru argüman hem olarak kullanmak olur, ancak bu işlev değil doğasında için x.

Bu sayılmazsa, çeşitli 2 baytlık eğlenceli alternatifler vardır:

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

vb.


10
İyi evet. Her kod golf cevap görevi yerine getiren yerleşik bir koleksiyon. Eğer bu cevabı yasaklayabiliriz x“Tüm iş” yaptı ama kesinlikle değil - link-ayrıştırma ve dizi zorlama mantık böyle olmanı oluyor bir örtük “0 bayt” var repeat([n], n)tam olarak ne diğer cevaplar olan yapmak.
Lynn

8
@ Adám Bu, 2 argüman alan "xy sürelerinin her elemanını tekrarla" işlevidir. Görevi gerçekleştirmesini sağlayan şey, Jelly'in işlevin kendisiyle hiçbir ilgisi olmayan örtük argümanları nasıl ayrıştırdığıdır.
Outgolfer Erik

6
Bu cevap geçersizse, sorunun kısıtlaması "Yerleşik yok" değildir, "1 bayt yanıtı yok" dur, bu da kod golfünde verimsiz görünen son derece keyfi bir sınırlamadır.
Kamil Drakari

8
Bence bu yerleşik olmayan bir argüman Jelly'de aynı şeyi yapan başka iki baytlık cevaplar olması ve bu cevabın üç tanesinden herhangi biri olabileceğidir. "Tekrar n nzamanlar" için 3 yerleşik (umarım) yoktur , bu yüzden TÜM bir "yerleşik" olamaz.
nmjcman101

6
Bu tüm yorum dizisi, yerleşikler kadar öznel bir şeyi yasaklamamak için iyi bir argüman gibi görünüyor.
trichoplax


19

Flashpoint kodlama dili çalışması,  50  46 bayt

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

İle ara:

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

Çıktı:


Sonradan düşüş var mı i--, ve bunun +=içinde?
TheLethalCoder

3
Bunun ekran görüntüleri neden her zaman çorak bir çölde? Ekran görüntüleriniz için harika bir harita kullanmalısınız: S.
Sihirli Ahtapot Urn

2
@MagicOctopusUrn Daha iyi mi?
Steadybox

1
@Steadybox ahaha! Destansı: S. Kasaba soldan ölmüş mü? Birazdan başladığın kiliseye benziyor.
Sihirli Ahtapot Urn

1
Ekran görüntülerinin daha küçük bir resme kırpılması gerektiğini düşünüyorum. Haritayı görmemiz gerekmiyor ve gerçek çıktıdan uzaklaşıyor.
mbomb007

12

APL (Dyalog) , 2 bayt

Beş eşit derecede kısa çözüm. Son ikisi Zacharý'nın izniyle .


⍴⍨

Çevrimiçi deneyin!

 siklik r eshape

 öz


/⍨

Çevrimiçi deneyin!

/ tekrarlamak

 öz


\⍨

Çevrimiçi deneyin!

\ genişletmek

 öz


⌿⍨

Çevrimiçi deneyin!

 ilk (ve yalnızca) eksen boyunca çoğaltma

 öz


⍀⍨

 ilk (ve tek) eksen boyunca genişleme

 öz

Çevrimiçi deneyin!


@Uriel Bir tane daha var…
Adám

1
Hem ⌿⍨ve ⍀⍨çalışması.
Zacharý

2
'Benliğin' bir yüz gibi görünmesi kasıtlı mıydı?
geokavel

1
@geokavel Ben öyle düşünmüyorum, ama aynı zamanda bu yazıyı yazmış gibi fark ettim. Bunu anımsatıcı yapar, değil mi? Aslında, selfie yarı resmi adlarından biridir, bu nedenle Dyalog APL'nin RIDE arayüzüne `` selfie '' yazarak ekleyebilirsiniz .
Adám

1
@sethrin TIO karakterleri (ve varsa UTF-8 baytını) sayar, ancak tek baytlık karakter kümesinde (SBCS) eksik olan karakterleri kullanmadıklarından emin olmak kullanıcıya bağlıdır. APL'ler için buraya bakın.
Adam




9

JavaScript (ES6), 19 bayt

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

Dene

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
Olmayan bir dizi ...- ne olursa olsun ?!
Neil

1
@Neil: Yazarken bile yanlış geldi! : D
Shaggy

7

Pyth , 2 bayt

*]

Test takımı .


*] QQ - Örtük girdili tam program

 ] - Girişi bir listeye dönüştürün.
* - Girişe eşit sayıda tekrarlayın. 

7

Haskell , 13 bayt

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

Çevrimiçi deneyin! Kullanımı: f 5verim [5,5,5,5,5]. İçin n=5, [1..n]listeyi verir [1,2,3,4,5]. n<$bu listedeki her öğeyi ile değiştirir n.


3
Benimki biraz daha uzun, ama yine de beğendim:join replicate
amalloy

@amalloy Bu gerçekten temiz Haskell yolu olurdu. Bununla birlikte, joinPrelude'un bir parçası değildir ve bu nedenle uzun bir süre gerektirir import Control.Monad, bu da nadiren golf için yararlı olur.
Laikoni



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

Try it online!

Explanation:

f is an alias for dab (tail).

s is subtraction, as explained on the wiki: (x, y) → (0, y−x) when x ≤ y.

t maps (a, b, c…) to (b+c+…, a+b+c+…).

f s t maps (a, b, c…) to a. This is our “head” function.

d dips only the head of its argument: (a, b, c…) → (|a−1|, b, c…)

r is the main repetition logic. We map (a, b) to (*r(|a−1|, b), b).

For example, r(4, 7) will evaluate as

  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.

Finally, we define 2, which maps n → (n, n), and define main as f f r 2, computing r(n, n) and chopping off the first two elements.


4

Japt, 2 bytes

ÆU

Test it


Explanation

Implicit input of integer U. Generate an array of integers from 0 to U-1. Fill it with U. Implicit output of resulting array.


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

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.