Skip to content

Instantly share code, notes, and snippets.

View tnoda's full-sized avatar

Takahiro Noda tnoda

View GitHub Profile
@plaster
plaster / pe-9.clj
Created December 15, 2012 07:21
Project Euler Problem 9 solution in Clojure (#mitori_clj)
(use 'clojure.test)
;; ピタゴラス数チェック
(defn pythagorean?
[a b c]
(= (* c c) (+ (* a a) (* b b))))
(is (pythagorean? 3 4 5))
;; 合計が a+b+c かつ 0 < a < b < c になるような組の列挙
@ponkore
ponkore / problem-4-1.clj
Created December 14, 2012 13:35
Project Euler Problem 4
;;;A palindromic number reads the same both ways.
;;;The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 99.
;;;Find the largest palindrome made from the product of two 3-digit numbers.
;;;左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、
;;;最大のものは 9009 = 91 × 99 である。
;;;では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。
(ns projecteuler.problem-4
(:require [clojure.string :as str])
@ypsilon-takai
ypsilon-takai / pe_21.clj
Last active October 14, 2015 01:17
Project euler 21
;; 初めて解いたときのものです。
;; 約数の和を求めるために、素因数分解してそれを利用してます。
;; 思いつきをそのまま実装しちゃってる感じです。
;; Problem 21 : 2011/5/5
;;"Elapsed time: 1260.253748 msecs"
;; prime list
;; まずは素数列を作ってしまいます。
;;; Project Euler #8
;;; http://projecteuler.net/problem=8
;;; http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%208
(use 'clojure.test)
(def input
(str
"73167176531330624919225119674426574742355349194934"
"96983520312774506326239578318016984801869478851843"
@ypsilon-takai
ypsilon-takai / pe_14.clj
Created December 13, 2012 10:36
Project euler 14
;; 去年最初に解いたときのやつ。
;; 「hotpo」というのは half or tripple plus one のアクロニムで、昔読んでいた(日経)サイエンス誌の連載で
;; これが紹介されたときの名前で、英語版Wikipediaには載っていました。
;; 今動かしてみたら、なぜかスタックオーバーフローになってしまう。
;; 1.2だと動くのかなぁ。と思ってやってみたら動く!!
;; なんでだろう。 スタックの深さが1.2の方が大きいのかなぁ。
;; 実行すると、 50秒くらいかかります。
;; "Elapsed time: 48273.476472 msecs"
@tnoda
tnoda / problem_5.clj
Created December 11, 2012 14:50
Project Euler Problem 5 #mitori_clj
(ns tnoda.projecteuler.problem-5
(:import org.apache.commons.math.util.MathUtils) ; [org.apache.commons/commons-math "2.2"]
(:use clojure.test))
(defn- solver*
[n]
(reduce (fn [^long x ^long y] (MathUtils/lcm x y)) (range 1 (inc n))))
(def solver (partial solver* 20))
@ypsilon-takai
ypsilon-takai / pe_7.clj
Created December 11, 2012 12:32
project euler 7
;; 去年最初に解いたとき答え
;;
;; "Elapsed time: 106406.52058 msecs"
;; 今やっても時間が1分40秒もかかってしまうので、だめー。
;; 考えかた
;; ある数Nが素数であるかどうかは、√N以下の素数に割りきれるものがあるかどうかで判定します。
;; そのためには、そこまでに発見した素数を保持する必要があります。
;; あとは、2以上の数について、素数であるかどうかでフィルターします。
;; seq-end-inclusive を割れそうな数の候補
(defn denominators [seq-end-inclusive]
(for [d (range 2 (+ seq-end-inclusive 1))
:while (<= (* d d) seq-end-inclusive)
]
d))
;; end-inclusive 以下の素数列をエラトステネスの篩で
(defn gen-primes [end-inclusive]
(reduce (fn [primes d] (filter #(or (= %1 d)
@plaster
plaster / pe-1.clj
Created December 9, 2012 16:18
Problem 1
(use 'clojure.set)
(defn n-multiples [n end] (set (range 0 end n)))
(defn solve []
(apply + (union (n-multiples 3 1000)
(n-multiples 5 1000))))
@kohyama
kohyama / README.md
Last active October 13, 2015 19:18
Project Euler Problem 10

Project Euler Problem 10 解答とコメント

#clojure 入門者向け勉強会 #mitori_clj 第二週担当分

Project Euler Problem 10
2,000,000 未満の素数の総和を求めよ. とのことです.

結果を出すために手に入るリソースを有効活用するという考えのもとでは --この問題自体の解答を述べている