Отсортировать по индексу


#1

Здравствуйте, мне нужно отсортировать по индексу (последний индекс = первый и т.д., т.е. поменять местами). Где-то полчаса пытался сделать через .enumerated и .sorted, но так ничего и не вышло. Буду признателен, если кто-нибудь поможет (а если ещё и объяснит, то признателен вдвойне). Спасибо!

var n = 9005
  var result: [(Int, Int)] = []
  for i in 0...10000 {
    for j in 0...10000 {
      if (i - 2*j) * (i + 2*j) == n {
        result.append((i,j))
      }
    }
  }
  print(result)

#2

Навенрое было бы лучше, если бы вы показали текст самой задачи.
Из кода не очень поятно, что за условие такое.


#3

Понял, без проблем, вот задача

Сводка

In mathematics, a Diophantine equation is a polynomial equation, usually with two or more unknowns, such that only the integer solutions are sought or studied.

In this kata we want to find all integers x, y ( x >= 0, y >= 0 ) solutions of a diophantine equation of the form:

x2 - 4 * y2 = n

(where the unknowns are x and y , and n is a given positive number) in decreasing order of the positive xi.

If there is no solution return [] or "[]" or "" . (See “RUN SAMPLE TESTS” for examples of returns).

Examples:

solEquaStr(90005) --> "[[45003, 22501], [9003, 4499], [981, 467], [309, 37]]"
solEquaStr(90002) --> "[]"

Hint:

x2 - 4 * y2 = (x - 2y) * (x + 2y)


#4

Сайт, где я решаю эту задачу требует ответы от большего к меньшему, а у меня по моему коду записываются самые ранние значения, т.е. от меньшего к большему.
Например при n = 9005 у меня будет ответ [(903, 449)(4503, 2251)] , а мне нужно [(4503, 2251), (903, 449)]


#5

Если я правильно понял, можно в конце развернуть массив array.reversed(), либо изначально идти не от 0 к концу, а наоборт с конца к 0.