Haskell
実装したので,メモ. 実装といっても,単純なアルゴリズムなので,コードは至極シンプル. import System.Random (randomRIO) solovayStrassen :: Integer -> IO Bool solovayStrassen n = return.isProbablyPrime n =<< randomRIO (1,n-1) isProbablyPrime…
解いた.とりあえず,問題文に骨が折れる. メモ,メモ. A そのまま. import Control.Monad import Text.Printf light :: (Integral a, Integral b) => b -> a -> String light n k | mod (k+1) (2^n) == 0 = "ON" | otherwise = "OFF" main :: IO () main…
Problem 289 - Project Eulerある特殊なグラフの交差のないオイラー閉路の数を求める問題。 一般の無効グラフにおけるオイラー閉路の数を求めるのは難しいらしいです。この問題、正解者が少ないけど、理論的にはそんなに難しくないと思う。 ただ、実装が面倒…
あなたのスキルで飯は食えるか? 史上最大のコーディングスキル判定 (1/2) - ITmedia エンタープライズ をやってみた。言語はHaskell。 たぶん、あってる。根拠はない。 とりあえず、各牌が無限にあると思うと、以下のシンプルなコードで良いと思う。 デカル…
(今回は GUI というより FFI な気がする.でも目的は GUI だからいいか.)前回作成した GUI の FlipIt を改良した.改良は以下の2点 周期を増加. 解を表示. 周期の増加 前回は マスの変化が 白→黒→白→黒→… だったが,今回はこの周期を変更できるようにし…
Problem 279 - Project Euler似た問題を昔やったような.なぜか愚直な方法と賢い方法の答えがあわずに苦戦した. どうやってもあわない. 実は愚直な方法が間違っていたという,情けないオチ.Haskellで約2秒. C++で約0.3秒. こんなもん?
もとネタ http://www.terrypaton.com/flipit/ マスをクリックすると,そのマスと周囲のマスの色が反転する. 全部同じ色にすることが目的.HaskellでGUIプログラミングしてみた. 結果 見た目は以下. 実行時の引数でサイズを変更できる. cairoというベクタ…
Möbius Function -- from Wolfram MathWorldメビウス関数のリストが欲しい.つまり,[μ(1), μ(2),… ,μ(n)]が欲しいと.このとき,Haskellでどう書くか.ぱっと思いつく選択肢:(a) 定義にしたがって,素因数分解して,素因数を数える.これを,1からnまで…
Problem 275 - Project Euler問題の概要. ある条件を満たす,polyominoを探す. その条件の1つは,横方向にバランスがとれていること(重心のx座標が0). 詳細な条件は上のリンクで. 絵でみると分かりやすい. 下図はproject eulerからの引用. 求めるの…
http://projecteuler.net/index.php?section=problems&id=273 実は本筋とはあまり,関係がないのだが,4n+1型の素数の平方和分解は前に実装したことがある. http://d.hatena.ne.jp/jeneshicc/20081221/1229835537 それもあって今回の問題はパッとやってピッ…
Problem 271 - Project Euler Problem 272 - Project Euler 誤解を恐れずに,問題の雰囲気を紹介すると.「n が与えられて,x^3 = 1 (mod n) となる x は?」です. ある性質が鍵だと思う. 271のほうは多分簡単. Haskellでも実行は一瞬. 272はそんなに難…
Problem 270 - Project Euler何通りの分割の仕方があるか?系の問題. 冷静に場合分けなどを考えていけば,解ける. そんなに難しくないはずだった. ただ,ずっとN=29だと思って,答えが合わずに悩んでいた.なんというアホ. やはり,MemoTrieは便利だ.
Problem 269 - Project Euler そこまで難しくないが,なかなか面白い. アルゴリズムが結構気に入った.
Problem 268 - Project Euler最近は比較的簡単なものが多い?
Solving the Santa Claus Problem with Conjunction | Communicating Haskell Processes なんか面白そうだ.あとで読む.
http://projecteuler.net/index.php?section=problems&id=267 単純な計算ミスを多数して,どうしようもなかった. 問題自体は簡単. メモ import Text.Printf して printf "%.12f\n" pi とすると有効数字12桁で表示してくれる.
[Haskell] Announcing Haskell 2010
ラムダ式をSKIコンビネーター表現するコードが発掘された(昔のコードがたまたま見つかった). ちなみに,SKIBCで表現することも可能.ラムダ式のベータ簡約は前につくった. ラムダ計算 - 落書き、時々落学こんな感じ. *SKI> b \x->\y->\z->x (y z) *SKI>…
bloxorz: an OpenGL Logic Game written in Haskell | Arch Linux and Haskell なんか昔やったことあるような…
Problem 265 - Project Euler これは簡単. だって,N=5だし. 計算量とか全然考慮せずに実装したが,実行は一瞬. ただ,Nが大きい場合,どうやって効率的に解くのかな?# eulerに現を抜かしている暇はないはずだが…
Problem 264 - Project Euler いつもの整数問題. とりあえず,愚直な方法をHaskellで実装して, 遅くて,遅くて,しかたなったので, C++ならいけるはず(この計算量なら)と思い, C++で実装したら,約60倍速くなった.びっくり.しかし,愚直な方法なので…
Problem 263 - Project Euler いつもどうりの整数の問題. 探索範囲の上限がよく分からないことが,けっこう怖い. しかも,普通に考えると,素因数分解と素数判定が必要だから,計算量が大きくなりそうな予感.とりあえず,brute forceしたら,時間かかった…
Problem 262 - Project Euler 最短距離を求める問題. しかし,離散的な問題ではなく,連続的な問題. 山の高さを表す関数が与えられて,最小高度で移動したときの最短距離を求める. 詳細は,project eulerのサイトで.高さを表す関数が簡単な形ではないの…
Problem 261 - Project Eulerん?運良く解けた? 計算スピードのために,多分正しいショートカットを使っているから,良く分からない. はじめは N=10^11だと思ってました.しかし,また,フォーラムにマジカルな(理解できない)解法が載っていた.うーん.…
Problem 259 - Project Euler 問題読んで,理解して,テケトーに(計算量を全然見積らず)実装したら,答えでた. たぶん,簡単な部類.最近,ちょっと難しい問題が多めだったから,息抜きなんですかね.まぁ,計算式を二分木で表現するのは良くあることで(…
けっこう,(といっても,4,5日前だが)に解いた.問題文は簡単.g(k) = 1 if 0 g(k) = g(k-2000) + g(k-1999) if 2000 find g(10^18) (mod 20092010)普通のFibonacciだったら,簡単ですが. そう簡単にはいかない.まぁ,それが今回の問題ですか. Haskell…
書いてみた. 上位の方のソースを見ると2分探索で解いていた. まね. import Control.Monad import Text.Printf import Debug.Trace -- main part data Circle = C { x::Double, y::Double, r::Double} main = do (c:_) <- getList :: IO [Int] forM_ [1..c…
マッチングで解けるのね. そんなの思いつきません.解けないまま,終るのはシャクなので,Haskellで書いてみた. import Control.Monad import Text.Printf import Data.Array import Data.Graph.Inductive -- main part main = do (t:_) <- getList :: IO …
やってみた,というか書いてみた. 遅いなー import Data.List import Data.Array import Control.Monad import Text.Printf import Data.Bits main = do (n:_) <- getList :: IO [Int] forM_ [1..n] $ \i -> do (k:_) <- getList cs <- getLine printf "Cas…
練習のためやってみた. Bは問題文が長いので,まだ読んでいない.(前回と同じテンプレート使用) A 各baseに対するhappy数達を,無限リストとして,計算しておいて,最後にintersectionをとる. という,作戦だが,どうも遅い.メモリを沢山使う. やはり,…