Program Club

정수 값을 기반으로 n 항목의 배열 만들기

proclub 2020. 12. 6. 22:14
반응형

정수 값을 기반으로 n 항목의 배열 만들기


정수 값이 예를 들어 10.

10 개 요소의 배열을 어떻게 만들 수 [1,2,3,4,5,6,7,8,9,10]있습니까?


범위를 표시 할 수 있습니다.

[*1..10]
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Ruby 1.9는 여러 개의 표시를 허용하며 이는 다소 편리합니다.

[*1..3, *?a..?c]
#=> [1, 2, 3, "a", "b", "c"]

또 다른 까다로운 방법 :

> Array.new(10) {|i| i+1 }
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def array_up_to(i)
    (1..i).to_a
end

이를 통해 다음을 수행 할 수 있습니다.

 > array_up_to(10)
 => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

까다로운 방법이있는 주석 :

require 'benchmark'

Benchmark.bm { |x|
  x.report('[*..] ') do
    [*1000000 .. 9999999]
  end  

  x.report('(..).to_a') do
    (1000000 .. 9999999).to_a
  end

  x.report('Array(..)') do
    Array(1000000 .. 9999999)
  end

  x.report('Array.new(n, &:next)') do
    Array.new(8999999, &:next)
  end

}

이 까다로운 방법 Array.new(n, &:next)은 속도가 느리지 만 다른 세 가지 기본 방법은 동일합니다.

                           user     system      total        real
[*..]                  0.734000   0.110000   0.844000 (  0.843753)
(..).to_a              0.703000   0.062000   0.765000 (  0.843752)
Array(..)              0.750000   0.016000   0.766000 (  0.859374)
Array.new(n, &:next)   1.250000   0.000000   1.250000 (  1.250002)

다음과 같이 할 수 있습니다.

array= Array(0..10)

입력하려면 다음을 사용할 수 있습니다.

puts "Input:"
n=gets.to_i
array= Array(0..n)
puts array.inspect

참고 URL : https://stackoverflow.com/questions/11173173/create-array-of-n-items-based-on-integer-value

반응형