• Source
    1. #!/usr/bin/ruby
    2.  
    3. j =
    4. {"RGY"=>{"2"=>"RGB", "6"=>"BGY", "T"=>"RBY"},
    5. "RYG"=>{"4"=>"RBG", "8"=>"RYB", "D"=>"BYG"},
    6. "RYB"=>{"2"=>"RYG", "6"=>"GYB", "T"=>"RGB"},
    7. "RBY"=>{"4"=>"RGY", "8"=>"RBG", "D"=>"GBY"},
    8. "RBG"=>{"2"=>"RBY", "6"=>"YBG", "T"=>"RYG"},
    9. "RGB"=>{"4"=>"RYB", "8"=>"RGY", "D"=>"YGB"},
    10.  
    11. "GYR"=>{"2"=>"GYB", "6"=>"BYR", "T"=>"GBR"},
    12. "GRY"=>{"4"=>"GBY", "8"=>"GRB", "D"=>"BRY"},
    13. "GBY"=>{"2"=>"GBR", "6"=>"RBY", "T"=>"GRY"},
    14. "GYB"=>{"4"=>"GRB", "8"=>"GYR", "D"=>"RYB"},
    15. "GRB"=>{"2"=>"GRY", "6"=>"YRB", "T"=>"GYB"},
    16. "GBR"=>{"4"=>"GYR", "8"=>"GBY", "D"=>"YBR"},
    17.  
    18. "BRY"=>{"2"=>"BRG", "6"=>"GRY", "T"=>"BGY"},
    19. "BYR"=>{"4"=>"BGR", "8"=>"BYG", "D"=>"GYR"},
    20. "BYG"=>{"2"=>"BYR", "6"=>"RYG", "T"=>"BRG"},
    21. "BGY"=>{"4"=>"BRY", "8"=>"BGR", "D"=>"RGY"},
    22. "BGR"=>{"2"=>"BGY", "6"=>"YGR", "T"=>"BYR"},
    23. "BRG"=>{"4"=>"BYG", "8"=>"BRY", "D"=>"YRG"},
    24.  
    25. "YBR"=>{"2"=>"YBG", "6"=>"GBR", "T"=>"YGR"},
    26. "YRB"=>{"4"=>"YGB", "8"=>"YRG", "D"=>"GRB"},
    27. "YRG"=>{"2"=>"YRB", "6"=>"BRG", "T"=>"YBG"},
    28. "YGR"=>{"4"=>"YBR", "8"=>"YGB", "D"=>"BGR"},
    29. "YGB"=>{"2"=>"YGR", "6"=>"RGB", "T"=>"YRB"},
    30. "YBG"=>{"4"=>"YRG", "8"=>"YBR", "D"=>"RBG"}}
    31.  
    32. while gets
    33. state = "RBG"
    34. print "Y" unless $_.chomp.empty?
    35.  
    36. $_.chomp.each_char do |roll|
    37. print (["Y", "R", "G", "B"] - (state = j[state][roll]).split(//))[0].chr
    38. end
    39. print "\n"
    40. end
    41.