1. Куча / Говнокод #12119

    +128

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    right_triangles = [ (a, b, c a b) | b <- [1..], a <- [1..b], isRight a b ]
    	where
    		rc a b = sqrt $ fromIntegral (a^2 + b^2)
    		c a b = round $ rc a b
    		isRight a b = (rc a b) == fromIntegral (c a b)

    Запостил: Fai, 14 Ноября 2012

    Комментарии (8) RSS

    • А где говнокод? Ну кроме того, что это тупой брутфорс по целым числам.
      Ответить
      • Везде говнокод - isRight - говно, (rc, c) - говно и ещё много.
        Ответить
    • >isRight a b = (rc a b) == fromIntegral (c a b)
      Это ты флоаты что-ли на == сравниваешь?
      Ответить
    • right_triangles = [(3*i,4*i,5*i) | i<-[1..]]

      Хотя результат будет не эквивалентен.
      Ответить
      • Это только одно соотношение. А вообще есть и такие тройки:
        (14634,65040,66666)
        Ответить
      • Любая пара натуральных взаимно простых чисел m > n задаёт примитивную пифагорову тройку (m²-n², 2mn, m²+n²). Остальные можно получить из них домножением на то самое i.

        m=2, n=1 => (3, 4, 5)
        m=3, m=2 => (5, 12, 13)
        Ответить
        • Т.е. нужно взять массив кортежей, перебрав m, n и дополнительный множитель?
          Ответить

    Добавить комментарий