Skip to content

Instantly share code, notes, and snippets.

@emiaj
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emiaj/ed7a14f3e4e741a6ba81 to your computer and use it in GitHub Desktop.
Save emiaj/ed7a14f3e4e741a6ba81 to your computer and use it in GitHub Desktop.
module Data.Experiments where
import Math
import Data.Array
import Control.MonadPlus
(..) :: Number -> Number -> [Number]
(..) = range
triples :: Number -> [[Number]]
triples n = do
guard $ n > 0
a <- 1 .. n
b <- a .. n
c <- b .. n
let a2 = pow a 2
let b2 = pow b 2
let c2 = pow c 2
guard $ a2 + b2 == c2
return [a, b, c]
"use strict";
var Prelude = require("Prelude");
var Data_Array = require("Data.Array");
var Control_MonadPlus = require("Control.MonadPlus");
var Math = require("Math");
var $dot$dot = Data_Array.range;
var triples = function (n) {
return Prelude[">>="](Data_Array.bindArray())(Control_MonadPlus.guard(Data_Array.monadPlusArray())(n > 0))(function () {
return Prelude[">>="](Data_Array.bindArray())($dot$dot(1)(n))(function (_16) {
return Prelude[">>="](Data_Array.bindArray())($dot$dot(_16)(n))(function (_15) {
return Prelude[">>="](Data_Array.bindArray())($dot$dot(_15)(n))(function (_14) {
var a2 = Math.pow(_16)(2);
var b2 = Math.pow(_15)(2);
var c2 = Math.pow(_14)(2);
return Prelude[">>="](Data_Array.bindArray())(Control_MonadPlus.guard(Data_Array.monadPlusArray())(a2 + b2 === c2))(function () {
return Prelude["return"](Data_Array.monadArray())([ _16, _15, _14 ]);
});
});
});
});
});
};
module.exports = {
triples: triples,
"..": $dot$dot
};
> Data.Experiments.triples 200
[[3,4,5],[5,12,13],[6,8,10],[7,24,25],[8,15,17],[9,12,15],[9,40,41],[10,24,26],[11,60,61],[12,16,20],[12,35,37],[13,84,85],[14,48,50],[15,20,25],[15,36,39],[15,112,113],[16,30,34],[16,63,65],[17,144,145],[18,24,30],[18,80,82],[19,180,181],[20,21,29],[20,48,52],[20,99,101],[21,28,35],[21,72,75],[22,120,122],[24,32,40],[24,45,51],[24,70,74],[24,143,145],[25,60,65],[26,168,170],[27,36,45],[27,120,123],[28,45,53],[28,96,100],[28,195,197],[30,40,50],[30,72,78],[32,60,68],[32,126,130],[33,44,55],[33,56,65],[33,180,183],[35,84,91],[35,120,125],[36,48,60],[36,77,85],[36,105,111],[36,160,164],[39,52,65],[39,80,89],[40,42,58],[40,75,85],[40,96,104],[42,56,70],[42,144,150],[44,117,125],[45,60,75],[45,108,117],[48,55,73],[48,64,80],[48,90,102],[48,140,148],[48,189,195],[49,168,175],[50,120,130],[51,68,85],[51,140,149],[52,165,173],[54,72,90],[55,132,143],[56,90,106],[56,105,119],[56,192,200],[57,76,95],[57,176,185],[60,63,87],[60,80,100],[60,91,109],[60,144,156],[60,175,185],[63,84,105],[64,120,136],[65,72,97],[65,156,169],[66,88,110],[66,112,130],[69,92,115],[70,168,182],[72,96,120],[72,135,153],[72,154,170],[75,100,125],[75,180,195],[78,104,130],[78,160,178],[80,84,116],[80,150,170],[81,108,135],[84,112,140],[84,135,159],[85,132,157],[87,116,145],[88,105,137],[88,165,187],[90,120,150],[93,124,155],[95,168,193],[96,110,146],[96,128,160],[99,132,165],[99,168,195],[100,105,145],[102,136,170],[104,153,185],[105,140,175],[108,144,180],[111,148,185],[114,152,190],[117,156,195],[119,120,169],[120,126,174],[120,160,200],[130,144,194]]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment