## Iterate over `t` Number of Test Case

example:

``````Input:
5
abab
abcd
aabc
daba
saka
``````

Common code for this case:

``````t = gets.to_i

t.times do
string = gets.chomp
# do something with string in each test case, t is needed in here.
end
``````

But, if in the loop you don't need t, you can skip the first line.

``````gets.to_i.times do
string = gets.chomp
# do something with string in each test case.
end
``````

## Prime and Prime Factorization

You could use prime library for the type of problem that related to this case. For example:

``````require "prime"

# testing for primality
Prime.prime?(2) #=> true
Prime.prime?(109873464) #=> false
Prime.prime?(150001633) #=> true

# iterates over a list of prime number starting from 2
Prime.each(100) do |p|
puts p
# puts 2, 3, 5, 7, ...
end

# prime division
Prime.prime_division(34)   #=> [[2, 1], [17, 1]]
``````

## Constructing Array with Fixed Number of Element from STDIN

Here the sample problem:

``````Input:
10
1 2
2 2
1 3
2 1
0 0
0 4
5 5
4 5
3 4
``````

The code:

``````n = gets.to_i
cards = Array.new(n) { gets.split.map(&:to_i) }

# or if you think you wont need n, you can do this instead
cards = Array.new(gets.to_i) { gets.split.map(&:to_i) }
``````

## Memoization Function Using Hash Default Value

You can use hash default value for constructing a recursive function. This is the example of factorial function using hash.

``````factorial = Hash.new {|h, k| h[k] = k * h[k-1] }
factorial[1] = 1

factorial[10] #=> 3628800
factorial[100] #=> 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
``````

Ok, that's all for now... comments and suggestion are welcomed.

•
• +30
•

 » 22 months ago, # |   0 Great start! Please keep on extending it.One addition: Assigning values to multiple values at once is useful when the input parameters are given on a single line, e.g. for three variables:`a,b,c = gets.split.map(&:to_i)`