fork download
  1.  
  2. ARRAY = gets.split.map &:to_i
  3. p ARRAY
  4.  
  5. def move a, b, c, d
  6. l = a.length
  7. a *= 3
  8. b, c, d = b % l, c % l, d % l
  9. (a[0, b] + a[b + c, d] + a[b, c] + a[b + c + d..-1])[b, l].rotate(-b)
  10. end
  11.  
  12. while gets
  13. values = $_.split.map &:to_i
  14. puts "b = %d, c = %d, d = %d, a = %s" % [*values, move(ARRAY, *values)*""]
  15. end
Success #stdin #stdout 0.01s 6104KB
stdin
0 1 2 3 4 5 6 7 8 9
3 1 5
1 3 1
7 1 5
0 8 1
4 5 4
9 5 4
7 3 1
stdout
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = 3, c = 1, d = 5, a = 0124567839
b = 1, c = 3, d = 1, a = 0412356789
b = 7, c = 1, d = 5, a = 1273456890
b = 0, c = 8, d = 1, a = 8012345679
b = 4, c = 5, d = 4, a = 6783901245
b = 9, c = 5, d = 4, a = 5679012384
b = 7, c = 3, d = 1, a = 9123456078