fork download
  1.  
  2. def gen()
  3. a = rand(20)
  4. b = rand(20)
  5. c = rand(20)
  6. [a, b, c]
  7. end
  8.  
  9. def sol(tc)
  10. ss = tc.zip(0..2).sort
  11. if ss[0][0]+ss[1][0] < ss[2][0] / 2
  12. "Impossible"
  13. else
  14. ans = []
  15. while ss[2][0] > 0
  16. e = [2, ss[2][0]].min
  17. ss[2][0] -= e
  18. ans << "ABC"[ss[2][1]] * e
  19. ans << ""
  20. end
  21. i = 1
  22. 2.times do |k|
  23. while ss[k][0] > 0
  24. ans[i] += "ABC"[ss[k][1]]
  25. ss[k][0] -= 1
  26. i += 2
  27. i = 1 if i >= ans.size
  28. end
  29. end
  30. ans*""
  31. end
  32. end
  33.  
  34. 20.times do
  35. puts "------"
  36. tc = gen
  37. puts tc.to_s
  38. ans = sol(tc)
  39. puts ans
  40. puts [ans.count('A'), ans.count('B'), ans.count('C')].to_s
  41. puts ans.each_char.each_cons(3).all?{|s|s.uniq.size!=1}
  42. end
  43.  
  44.  
Success #stdin #stdout 0s 28216KB
stdin
Standard input is empty
stdout
------
[9, 19, 5]
BBCABBCABBCABBCABBCBBABBABBABBABA
[9, 19, 5]
true
------
[15, 11, 15]
CCBBAACCBBAACCBBACCBAACCBAACCBAACCBAACBAA
[15, 11, 15]
true
------
[13, 13, 3]
BBCAABBCAABBCABBAABBAABBAABAA
[13, 13, 3]
true
------
[7, 15, 17]
CCABBCCABBCCABBCCABBCCABCCABCCABCCBBCBB
[7, 15, 17]
true
------
[4, 13, 19]
CCABCCABCCABCCABCCBBCCBBCCBBCCBCCBCB
[4, 13, 19]
true
------
[19, 6, 19]
CCBAACCBAACCBAACCBAACCBAACCBACCAACCAACCAACAA
[19, 6, 19]
true
------
[17, 0, 7]
Impossible
[0, 0, 0]
true
------
[11, 3, 1]
Impossible
[0, 0, 0]
true
------
[17, 12, 0]
AABBAABBAABBAABAABAABAABAABAB
[17, 12, 0]
true
------
[16, 8, 5]
AACBAACBAACBAACBAACBAABAABAAB
[16, 8, 5]
true
------
[11, 11, 2]
BBCAABBCABBAABBAABBAABAA
[11, 11, 2]
true
------
[17, 4, 0]
Impossible
[0, 0, 0]
true
------
[7, 11, 6]
BBCAABBCABBCABBCABBCABCA
[7, 11, 6]
true
------
[14, 13, 19]
CCBBACCBBACCBBACCBAACCBAACCBAACCBAACCBACCBACBA
[14, 13, 19]
true
------
[12, 6, 3]
AACBAACBAACBAABAABAAB
[12, 6, 3]
true
------
[6, 8, 15]
CCABCCABCCABCCABCCABCCABCCBCB
[6, 8, 15]
true
------
[15, 17, 18]
CCAABBCCAABBCCAABBCCAABBCCAABBCCAABCCABBCCABBCCABB
[15, 17, 18]
true
------
[8, 12, 18]
CCABBCCABBCCABCCABCCABCCABCCABCCABCCBB
[8, 12, 18]
true
------
[6, 5, 13]
CCBACCBACCBACCBACCBCCACA
[6, 5, 13]
true
------
[4, 17, 15]
BBACCBBACBBACBBACBBCCBBCCBBCCBBCCBCC
[4, 17, 15]
true