From c3d2a81f36908417cd973cd1a78592c65605b4b4 Mon Sep 17 00:00:00 2001 From: Yucheng Hu Date: Sat, 29 Dec 2018 19:36:53 -0500 Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E4=BA=8C=E9=A1=B9=E5=BC=8F?= =?UTF-8?q?=E7=B3=BB=E6=95=B0=E5=92=8C=E4=BD=BF=E7=94=A8=20Apache=20Math?= =?UTF-8?q?=20=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 503 +++++++++--------- .../codebank/interview/tests/WayfairTest.java | 37 ++ 2 files changed, 288 insertions(+), 252 deletions(-) diff --git a/pom.xml b/pom.xml index ab0ef42ad2..2ba676322e 100644 --- a/pom.xml +++ b/pom.xml @@ -1,253 +1,252 @@ - - 4.0.0 - com.ossez - codebank-algorithm - 0.0.1 - - - - 1.8 - UTF-8 - UTF-8 - - - 1.7.12 - 2.2 - - - - 4.3.5.Final - - - 4.3.1.Final - - - 7.0.42 - 2.6.8 - 2.3.2 - - - 1.9.0 - - - - - - - - org.apache.logging.log4j - log4j-slf4j-impl - 2.11.0 - - - - - junit - junit - 4.12 - - - - - org.apache.commons - commons-email - 1.5 - - - - - - org.apache.commons - commons-compress - 1.18 - - - - org.apache.commons - commons-math3 - 3.6.1 - - - - antlr - antlr - 2.7.6 - - - - dom4j - dom4j - 1.6.1 - - - commons-cli - commons-cli - 1.2 - - - org.apache.velocity - velocity-tools - 2.0 - - - - jaxen - jaxen - 1.1.6 - - - - javax.persistence - persistence-api - 1.0.2 - - - com.google.guava - guava - 17.0 - - - com.google.gdata - core - 1.47.1 - - - - org.ow2.orchestra.eclipse.birt - org.ow2.orchestra.eclipse.birt.core - 3.7.0 - - - org.ow2.orchestra.eclipse.birt - org.ow2.orchestra.eclipse.birt.report.engine - 3.7.0 - - - commons-net - commons-net - 2.0 - - - - com.mchange - mchange-commons-java - 0.2.9 - - - - - org.jasypt - jasypt - 1.5 - - - - httpunit - httpunit - 1.7 - - - net.sf.jazzy - jazzy - 0.5.2-rtext-1.4.1 - - - net.sf.json-lib - json-lib - 2.4 - jdk15 - - - rome - rome - 0.9 - - - - org.apache.httpcomponents - httpmime - 4.5.1 - - - - org.jsoup - jsoup - 1.7.2 - - - - net.lingala.zip4j - zip4j - 1.3.2 - - - - - - package - - - maven-compiler-plugin - 3.1 - - ${java.version} - ${java.version} - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.12.4 - - true - - - - org.apache.maven.plugins - maven-jar-plugin - 2.6 - - - - com.ossez.reoc.rets.Main - true - lib/ - - - - - - - - org.apache.maven.plugins - maven-assembly-plugin - 2.6 - - - - package - - single - - - src/assembly/zipAssembly.xml - reoc-rets - - - com.ossez.reoc.rets.Main - - - ./ - - - - - - - - - - + + 4.0.0 + com.ossez + codebank-algorithm + 0.0.1 + + + + 1.8 + UTF-8 + UTF-8 + + + 1.7.12 + 2.2 + + + + 4.3.5.Final + + + 4.3.1.Final + + + 7.0.42 + 2.6.8 + 2.3.2 + + + 1.9.0 + + + + + + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.11.0 + + + + + junit + junit + 4.12 + + + + + org.apache.commons + commons-email + 1.5 + + + + + + org.apache.commons + commons-compress + 1.18 + + + + org.apache.commons + commons-math3 + 3.6.1 + + + + antlr + antlr + 2.7.6 + + + + dom4j + dom4j + 1.6.1 + + + commons-cli + commons-cli + 1.2 + + + org.apache.velocity + velocity-tools + 2.0 + + + + jaxen + jaxen + 1.1.6 + + + + javax.persistence + persistence-api + 1.0.2 + + + com.google.guava + guava + 17.0 + + + com.google.gdata + core + 1.47.1 + + + + org.ow2.orchestra.eclipse.birt + org.ow2.orchestra.eclipse.birt.core + 3.7.0 + + + org.ow2.orchestra.eclipse.birt + org.ow2.orchestra.eclipse.birt.report.engine + 3.7.0 + + + commons-net + commons-net + 2.0 + + + + com.mchange + mchange-commons-java + 0.2.9 + + + + + org.jasypt + jasypt + 1.5 + + + + httpunit + httpunit + 1.7 + + + net.sf.jazzy + jazzy + 0.5.2-rtext-1.4.1 + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + rome + rome + 0.9 + + + + org.apache.httpcomponents + httpmime + 4.5.1 + + + + org.jsoup + jsoup + 1.7.2 + + + + net.lingala.zip4j + zip4j + 1.3.2 + + + + + + package + + + maven-compiler-plugin + 3.1 + + ${java.version} + ${java.version} + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.12.4 + + true + + + + org.apache.maven.plugins + maven-jar-plugin + 2.6 + + + + com.ossez.reoc.rets.Main + true + lib/ + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.6 + + + + package + + single + + + src/assembly/zipAssembly.xml + reoc-rets + + + com.ossez.reoc.rets.Main + + + ./ + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java b/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java index bee5b9b61c..2dde74bcd9 100644 --- a/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java +++ b/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java @@ -1,8 +1,10 @@ package com.ossez.codebank.interview.tests; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import org.apache.commons.math3.util.CombinatoricsUtils; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -74,4 +76,39 @@ public class WayfairTest { } + /** + * https://www.cwiki.us/display/ITCLASSIFICATION/Binomial+Coefficient + * + * Binomial Coefficient + */ + @Test + public void testBinomialCoefficient() { + int n = 40; + int k = 20; + + BigDecimal bc = factorial(n).divide(factorial(k).multiply(factorial(n - k))); + // a.compareTo(new BigDecimal(1000000000)) + logger.debug("{}", bc); + logger.debug("Check for Compare To - [{}]", bc.compareTo(new BigDecimal(1000000000))); + logger.debug("Value - [{}]", bc); + + logger.debug("Apache CombinatoricsUtils Factorial - [{}]", CombinatoricsUtils.factorialDouble(20)); + logger.debug("Apache CombinatoricsUtils Binomial Coefficient - [{}]", CombinatoricsUtils.binomialCoefficientDouble(40, 20)); + + } + + /** + * for factorial + * + * @param x + * @return + */ + private static BigDecimal factorial(int x) { + if (x == 1 || x == 0) { + return BigDecimal.valueOf(1); + } else { + return BigDecimal.valueOf(x).multiply(factorial(x - 1)); + } + } + }