04-ExactlyAThird.scala 917 B

12345678910111213141516171819202122232425262728293031323334
  1. import scala.math.pow
  2. object ExactlyAthrid {
  3. def main(arg: Array[String]) {
  4. val digits = List(1, 2, 3, 4, 5, 6, 7, 8, 9);
  5. for (c <- digits.combinations(4)) {
  6. for(d <- c.permutations) {
  7. // Get the numerator
  8. var numerator = 0;
  9. for((digit, place) <- d.zipWithIndex) {
  10. numerator += digit
  11. * pow(10, place).toInt;
  12. }
  13. // Get the denominator
  14. var denominator = 3 * numerator;
  15. // Check if all digits appear
  16. // exactly once
  17. var cdigits = numerator.toString
  18. + denominator.toString;
  19. var cdigits_list = cdigits.toCharArray.
  20. distinct;
  21. // Print solution
  22. if (cdigits_list.length == 9 &&
  23. !cdigits_list.contains('0')){
  24. println("%d / %d = 1/3".
  25. format(numerator, denominator));
  26. }
  27. }
  28. }
  29. }
  30. }