2008-12-01から1ヶ月間の記事一覧

Problem 163

http://projecteuler.net/index.php?section=problems&id=163 三角形の数を数える簡単なお仕事。 そんなに簡単ではないが。 m = 36 layer n = tail.concat $ [map (<+>(6*n-k,k)) grid| k<-[0,6..6*n]]++[[(6*(n+1),0)]] where grid = [(4,-2),(0,3),(0,6),(…

Problem 164

http://projecteuler.net/index.php?section=problems&id=164 これは簡単。表を埋めるだけの簡単なお仕事。 import Data.Array m = 20 f = listArray ((1,0,0),(m,9,9)).map g.range $ ((1,0,0),(m,9,9)) where g (1,a,b) = 10 - (a+b) g (n+1,a,b) = sum[f!…

Problem 161 (C++で)

C++だと実行時間はどう変わるのか 同じアルゴリズムで実装してみた #include <iostream> #include <map> using namespace std; int h=12,w=9; int area[][3]={{0,w,w+1},{0,w,w-1},{0,w+1,1},{0,w,1},{0,w,2*w},{0,1,2}}; bool inBoard(int x,int t){ switch(t){ case 1: re</map></iostream>…

Problem 161

http://projecteuler.net/index.php?section=problems&id=161 やっと解けた。 import java.util.*; public class P161{ static Map<Board,Long> memo; static Board board; static int h=12,w=9; static long solve(int x){ if(memo.containsKey(board))return memo.get(</board,long>…

Problem 161 (解けない)

http://projecteuler.net/index.php?section=problems&id=161 解けない。今の方針は ブロックに分割(e.g. 4x3 -> {1x3,3x3},{2x3,2x3}..) 各ブロックで分割不能なタイリング数をもとめる(結果を覚え、再利用) 総数を考える 計算が終わらない… とりあえず分…

Problem 162

http://projecteuler.net/index.php?section=problems&id=162 組み合わせの問題だが簡単でしょ。 それよりもProblem 161 が解けない。 import Numeric import Data.Char f k = 15*16^(k-1) - (15^k+2*14*15^(k-1)-(2*14^k+13*14^(k-1))+13^k) main = putStrL…

Problem 160 (階乗の非零末尾数字)

http://projecteuler.net/index.php?section=problems&id=160 階乗の非零末尾の数字をk個求める。 n!に含まれる5の数をp(n)とすると n!/10^p(n) mod (10^k) が分かればよい。 まず、n!/10^p(n) = 0 (mod 2^k) であるから n!/10^p(n) mod (5^k) を求めて、あ…

Problem 159

http://projecteuler.net/index.php?section=problems&id=159 mdrs(n) = max_{m*d=n}(mdrs(m) + mdrs(d)) まぁ、成り立つでしょ。 import Control.Monad import Data.Array.IO lim = 10^6 main = do drs <- newListArray (2,lim-1).tail.cycle$[1..9] :: IO …

Problem 158

http://projecteuler.net/index.php?section=problems&id=158 組み合わせの問題 choose n r = div (product [n-r+1..n]) $ product [1..r] p m n = (2^n-(n+1))*choose m n main = print.maximum.map (p 26) $ [0..26] 要素数mの順序集合からn個選び出し、降…

Problem 157

http://projecteuler.net/index.php?section=problems&id=157 150番あたりの問題にしては簡単。 import Control.Monad import Number import Data.List divisor100 n = [2^x*5^y | x <-[0..2*n], y <- [0..2*n]] primitiveSolutions n = filter (uncurry (<=…

コマンドプロンプトのフォント変更

http://pooh.gr.jp/item-229.html#top

Problem 156

http://projecteuler.net/index.php?section=problems&id=156 import Data.Char import Data.List count :: Int -> [Int] -> Integer count d = genericLength.filter(==d) listToInt :: [Int] -> Integer listToInt = foldl' add 0 where add a b = a*10+to…

Meadow フォント

;;; フォントの設定 (w32-add-font "Osaka 16" '*1 *2 *3 *4 *5 *1:spec ((:char-spec ascii :height any) strict (w32-logfont "Osaka−等幅" 0 -16 400 0 nil nil nil 0 1 3 0 *2::char-spec ascii :height any :weight bold) strict (w32-logfont "Osaka−…

Problem 155

http://projecteuler.net/index.php?section=problems&id=155 メモリ不足になったりした。 素直なアルゴリズム。 import Data.Array import qualified Data.Set as S n = 18 main = print.sum.map S.size.elems$ caps caps = listArray (1,n) $ (S.singleton…

Problem 154

http://projecteuler.net/index.php?section=problems&id=154 3項係数の約数について。 haskellでの実装。 import Control.Monad import Data.Array.Unboxed import Data.List n = 2*10^4 d = 10 main = print p154 factor p x | mod x p == 0 = succ.factor…

4n+1素数の平方和分解

4n+1型の素数を平方数の和に分解する。 e.g. 5 = 1+4=1^2+4^2 1249 = 15^2+32^2 17669 = 70^2+113^2 225221 = 410^2+239^2 import Number import Data.List pRoot p = g.foldl1' f $ [1..div (p-1) 2] where f a b = mod (a*b) p g x = min x $ p-x sqSum p …

Problem 153

http://projecteuler.net/index.php?section=problems&id=153とりあえず書いたが、速く動かない。(10^8ってかなり大きい気がするんですが。) import Number import Data.List -- ナーイブな実装 divisors n = [(a,b)| a <- [1..n], b <- [0..n-1], mod (n*…

Problem 152

http://projecteuler.net/index.php?section=problems&id=152大きな素因数を持つ数から考えていき、残りが2,3になったら全探索を開始。 import Number (primes, isPrime, merge) import Data.List (groupBy, sortBy) import Data.Ratio (Ratio, denominat…

Rxvt メモ

cygwin.bat @echo off E: chdir E:\cygwin\bin REM bash --login -i REM zsh --login -i rxvt -e zsh --login -i ~/.Xdefaults Rxvt.geometry: 120x35+0+0 Rxvt.font: Terminal-18 Rxvt.mfont: Terminal-18-jisx0208 Rxvt.multichar_encoding: sjis Rxvt.vis…

Javaのメモ

クラスパスの指定コンパイル時 javac -classpath /usr/ilog/cplex112/lib/cplex.jar Test.java javac -classpath ".;c:\\ILOG\\CPLEX112\\lib\\cplex.jar" LPex1.java 実行時 java -classpath ".:/usr/ilog/cplex112/lib/cplex.jar" -Djava.library.path=/us…

パスカルの三角形とシェルピンスキーのギャスケット

パスカルの3角形は次のコードで生成できる。 pascal = iterate next [1] where next xs = zipWith (+) (0:xs) (xs++[0]) showPascal n = mapM_ print.take n$pascal *Main> showPascal 10とすれば、次のようなパスカルの三角形が得られる。 [1] [1,1] [1,2,1…

Problem 151

http://projecteuler.net/index.php?section=problems&id=151 はじめは変数名ミスでループに陥っていた。 main = print.expect$(1,1,1,1) expect (0,0,0,1) = 0 expect (0,0,1,0) = 1 expect (0,1,0,0) = expect(0,0,1,1) + 1 expect (1,0,0,0) = expect(0,1…

Problem 150

http://projecteuler.net/index.php?section=problems&id=150 三角形の高さをnとするとO(n^3)のアルゴリズム。 別のO(n^3)のアルゴリズムも実装したが、そちらより20倍ぐらい速い。 こちらのほうが、領域計算量に関して悪いのだが(rが必要)、なぜか速い。 im…

進捗

卒論が全然すすまねー。 目次とか書こうっていわれたけど、 正直書くことあんまないのよね。 あー、困った。 全然成果出てないし。 あー、困った。PCのなかの小人さんがんばってくれー

Problem 149

http://projecteuler.net/index.php?section=problems&id=149 最大部分列和問題を繰り返し解いているだけ。 import Data.List import Data.Array.IArray m = 2*10^3 sArray = sa :: Array Integer Integer where sa = listArray (1,m^2). map s' $ [1..m^2] …

異音

自宅のPCから異音がする件について。 もともとWindows 2000が入ってたPCだから、もうさすがに寿命か?

Problem 147

http://projecteuler.net/index.php?section=problems&id=147 長方形の数を数える簡単なお仕事。 やることは単純だが、結構難しい。 とりあず、長方形の変わりに格子点で考えた。 あとは領域内に何点あるかを数えればいいだけ。 場合わけがめんどくさい。 そ…

Problem 148

http://projecteuler.net/index.php?section=problems&id=148 観察から、規則性をみつけ(証明はしていないが、納得できる規則性なのでよしとする)、それを利用。 要するに7進数展開して、ごにょごにょっとすると答えが出てくる。 import Data.List toSepta…

Problem 146

http://projecteuler.net/index.php?section=problems&id=146 import Number import Data.List import Control.Monad step = [1,3,7,9,13,27] indivisible p n = and [mod (n*n+s) p /= 0 | s <-step] residue u p = [n | n <-[0..min u (p-1)], indivisible…

150問

Project Euler ついに150問解きました。Level4になりました。