DEV Community

dev.to staff
dev.to staff

Posted on

13

Daily Challenge #194 - Spread Number

Setup

Implement a function that will create an array and fill it with numbers ranging from 1 to n. The numbers will always be positive.

Examples

spreadNumber(1) => [1]

spreadNumber(2) => [1, 2]

spreadNumber(5) => [1, 2, 3, 4, 5]

Tests

spreadNumber(3)

spreadNumber(6)

spreadNumber(9)

Good luck!


This challenge comes from linisnie on CodeWars. Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!

Want to propose a challenge idea for a future post? Email yo+challenge@dev.to with your suggestions!

Top comments (27)

Collapse
 
sag1v profile image
Sagiv ben giat

JavaScript:

const spreadNumber = n => [...Array(n).keys()]
Collapse
 
jeroencornelissen profile image
Jeroen Cornelissen

That creates an Array from 0 to n not from 1 to n ;-)

const spreadNumber = n => Array(n).fill(0).map((_, i) => i+1);

Collapse
 
sag1v profile image
Sagiv ben giat

Yeah, i didnt notice its not zero based

Collapse
 
mellen profile image
Matt Ellen-Tsivintzeli

Another way:

const spreadNumber = n => Array.from({length:n}).map((_, i) => i+1);
Collapse
 
dwilmer profile image
Daan Wilmer

I think you have an off-by-one error: spreadNumber(2) gives [0, 1] instead of [1, 2]. Nice and concise, though!

Collapse
 
sag1v profile image
Sagiv ben giat

Thanks. I didnt notice its zero based

Collapse
 
craigmc08 profile image
Craig McIlwrath

Haskell, many ways

spreadNumber n = [1..n]
spreadNumber = enumFromTo 1
spreadNumber = flip take [1..]

-- The most flexible way
spreadEnum :: Enum a => a -> a
spreadEnum = enumFromTo $ toEnum 1
Collapse
 
craigmc08 profile image
Craig McIlwrath

This challenge was simple, so here's a brainfuck solution too. Only works with characters 1-9 as inputs (I have an idea for reading multidigit numbers as input, but I'm on my phone and don't want to type it out).

,>++++++[-<-------->>++++++++<]<[->>+.<<]
Collapse
 
centanomics profile image
Cent

Javascript, just using a for loop


const spreadNumber = (number) => {
  let returnArray = [];

  for (let i = 0; i < number; i++) {
    returnArray.push(i+1);
  }

  return returnArray;
}

Codepen

Collapse
 
mendoza profile image
David Mendoza (He/Him) • Edited

Python

def spreadNumber(n):
    return range(1,n+1)
Collapse
 
rafaacioly profile image
Rafael Acioly

this will not work, it doesn't include the last digit:

spreadNumber(4) => [1, 2, 3]

you forgot to add +1 on n

Collapse
 
mendoza profile image
David Mendoza (He/Him)

You are right, I didnt take that in consideration, but it just range(1,n+1)

Collapse
 
not_jffrydsr profile image
@nobody • Edited

Clojure short and simple

(ns daily-challenge.one-ninety-four)

(defn spreadNumber [n]
;; precondition check to bound domain
 {:pre [(> 0 n)]}

  (unless (= n 1)
   (vec (range 1 n))
   [1])) 

and some tests...

(deftest one-ninety-four
  (is (= [1 2 3] (spreadNumber 3)))
  (is (= [1 2 3 4 5 6] (spreadNumber 6)))
  (is (= [1 2 3 4 5 6 7 8 9] (spreadNumber 9))))


(run-tests 'daily-challenge.one-ninety-four)

=> Testing daily-challenge.one-ninety-four

Ran 1 tests containing 3 assertions.
0 failures, 0 errors.
{:type :summary, :test 1, :pass 3, :fail 0, :error 0}
Collapse
 
exts profile image
Lamonte • Edited

dart

List<int> spreadNumber(int n) {
  var nums = List<int>();
  for(var x = 1; x <= n.abs(); x++) {
    nums.add(x);
  }
  return nums;
}

lol damn, while this is one way, looking at other solutions. I forgot range was a thing.

List<int> spreadNumber(int n) {
  return List<int>.generate(n.abs(), (n) => n + 1);
}
Collapse
 
madstk1 profile image
Natamo • Edited

Late to the party, as always.

Func<int, int[]> SpreadNumber = (int n) => Enumerable.Range(1, n).ToArray();

Example:

foreach(int i in SpreadNumber(10)) {
    Console.WriteLine(i);
}
Collapse
 
maskedman99 profile image
Rohit Prasad

Python

var = int(input("Enter the number: "))
l = list(range(1,var+1))
print(l)
Collapse
 
sabbin profile image
Sabin Pandelovitch

Simple JS

const spreadNumber = nr => Array.from({ length: nr }, (i, n) => n + 1);
Collapse
 
kzivic profile image
Kosta Zivic

Python, shortest approach

lambda  x: [i+1 for i in range(x)]
Collapse
 
rafaacioly profile image
Rafael Acioly

you could've use just range like this:

lambda x: range(1, x+1)

Feature flag article image

Create a feature flag in your IDE in 5 minutes with LaunchDarkly’s MCP server 🏁

How to create, evaluate, and modify flags from within your IDE or AI client using natural language with LaunchDarkly's new MCP server. Follow along with this tutorial for step by step instructions.

Read full post

👋 Kindness is contagious

Sign in to DEV to enjoy its full potential—unlock a customized interface with dark mode, personal reading preferences, and more.

Okay