読者です 読者をやめる 読者になる 読者になる

morris555's diary

高校生のブログです。

Xmonadの通知設定

通知に使っているxfce4-notifydが、勝手にフォーカスされてしまって邪魔だったので設定した。ついでに全てのワークスペースに表示されるように(ふぁぼ爆撃されたら…) import XMonad.Actions.CopyWindow myManageHook = composeAll [ className =? "Xfce4-not…

iPhoneからブログを更新してみた

暇だったので、はてなブログのiPhoneアプリを試してみた。移動中に書いたりする時には、普通に使えそう。これで下書きだけして、あとで細かい修正をするって感じで使いそう。最後に、ひとつだけ言いたい事が…内容が無いよー

あけましておめでとうございます

新年あけましておめでとうございますPythonの年なのでPythonやりましょうついでにHaskellもやりましょう

Arch Linuxインストール (2)

少し暇になったので続き書く再起動した後はrootでログインして、適当に必要なものを入れていくまずは、 # iwconfig wlan0 up # wpa_passphrase ESSID "my_secret_passkey" > /etc/wpa_supplicant.conf # wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplic…

Arch Linuxインストール (1)

久々にArch Linuxをインストールしたのでメモ程度に書いておく ダウンロード まずはISOイメージ(今回は使ったのは archlinux-2012.11.01-dual.iso)をダウンロードして起動。 準備 日本語キーボードなので # loadkeys jp106 無線を使うので # wifi-menu で設…

生きてます

生きてます

Twitterが…

twitterが落ちてる。かなり酷い。 それにしても、最近の自分のTwitter依存がやばいなー

fromEnumについて

Twitterで流れてきたこれを見て、あれ?と思ったので調べてみましたfromEnum???数字ならその数字を、文字なら、文字コードを返すらしい。ghciで調べてみる Prelude> :t fromEnum fromEnum :: Enum a => a -> Intなるほど列挙型ならいいのかというわけで、…

Arch LinuxにXmonad入れた

メインで使ってるマシンにXmonadいれました。なぜか最近Ubuntuが不安定だったのでこのタイミングでArch Linuxに変えました。Arch Linuxのインストールはnetinstall版を使いたかったのですが、何故か有線より無線を優先して認識してしまったのでCoreの方を使…

FFIを使ってみよう

FFIを使ってHaskellからC++の関数を呼び出してみました。まずC++のコード #include <iostream> extern "C" { void hello() { std::cout << "Hello World!" << std::endl; } } 大切なのは「extern "C" {}」を忘れないことです。そしてHaskellは {-# LANGUAGE ForeignFun</iostream>…

Problem 22

Problem 22です。 import Data.List import Data.Maybe import Control.Applicative score = sum . map (fromMaybe 0 . flip lookup (zip ['A'..'Z'] [1..26])) main = do names <- (sort . list) <$> getContents print . (foldr (\(x, y) s -> s + x * y) …

Problem 21

Problem 21です。 import Data.List main = print . sum . filter isAmicable $ [1..10000] isAmicable n = n == (sumDivisors . sumDivisors $ n) && n /= sumDivisors n sumDivisors n = sum . filter (\x -> (n `mod` x) == 0) $ [1..n-1] 遅いです。

Problem 20

Problem 20です。 import Data.Char (digitToInt) main = print . sum . map digitToInt $ show . product $ [1..100] シンプルに計算するだけで簡単に出来ました。

Problem 19

今回は、Problem 19です。 import Data.Time.Calendar import Data.Time.Calendar.WeekDate main = print . length $ [d | d <- [fromGregorian y m 1 | y <- [1901..2000], m <- [1..12]], let (_, _, w) = toWeekDate d, w == 7] Haskellなら簡単でした。

Problem 18

Problem 18です。 import Control.Applicative group _ [] = [] group n xs = let (xs1, xs2) = splitAt n xs in xs1 : group (n+1) xs2 main = do input <- map read <$> (words <$> getContents) :: IO [Int] print . head . foldr1 max' $ group 1 input …

Problem 17

Problem 17は「1から1000までの数字をすべて英単語で書けば、全部で何文字になるか」という問題です。 nums1 = ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fiftee…

Problem 16

ploblem 16は、「2^1000」の全ての桁の総和を求める問題です import Data.Char (digitToInt) main = print . sum . map digitToInt . show $ 2 ^ 1000 こんな感じ。簡単すぎてちょっと面白くなかった。

Problem 15

Problem 15です。20 × 20 のマス目の左上から右下までの最短ルートの数を求める問題です。 main = print $ product [21..40] `div` product [1..20] 高1の数学で習ったような気がしたので、記憶を頼りにやってみました。

Problem 14

Problem 14はいわゆる「コラッツの問題」ってやつです。 import Data.List (maximumBy) import Data.Ord (comparing) collatz 1 a = a collatz n a | even n = collatz (n `div` 2) (a + 1) | otherwise = collatz (3*n + 1) (a + 1) main = print $ maximum…

Problem 13

今回はProblem 13です。50桁の数字100個の総和の上10桁を求める問題ですね。 main = putStrLn . take 10 . show . sum $ num num = [ -- ここに50桁の数字100個 ] 見難くなるので数字は省略しましたが、100個のリストを作れば簡単でした。

Problem 12

Problem 12は500個以上の約数を持つ最小の三角数を求める問題です。 import Data.List (group) factorize 1 = [(1, 0)] factorize n = format . factorize' n $ 2:3:[x + y | x <- [6, 12 ..], y <- [-1, 1]] where factorize' n xs'@(x : xs) | n < x * x =…

Problem 11

Ploblem 11はタテ・ヨコ・ナナメの4つの連続する数字の積で最大のものを求める問題です。 main = print . maximum $ width ++ height ++ obil1 ++ obil2 calc xs ys = product $ zipWith ref xs ys where ref x y = nums !! y !! x width = [calc [x + n | n…

Problem 10

Ploblem 10です。200万以下の全ての素数の和を求める問題です。 primes = 2:primes' where primes' = 3:sieve 0 5 sieve i x = filter isPrime [x, x+2..p*p-2] ++ sieve (i+1) (p*p+2) where (ps,p:_) = splitAt i primes' isPrime x = all ((/=0).rem x) p…

Problem 8

今回こそProblem 8です。1000桁の数字から5つの連続する数字を取り出して その積を計算したときの最大の値を求める問題です。 main = print . getMax 0 $ getNum input getNum "" = [] getNum (c:cs) | c `elem` ['0'..'9'] = (read :: String -> Int) [c] :…

Problem 9

Problem 9です。「a + b + c = 1000となるピタゴラスの三つ組が一つだけ存在する. このa,b,cの積を計算しなさい」こんな問題ですね。 pythaNums n = [a * b * c | a <- [1 .. n `div` 3], b <- [a+1 .. n `div` 2], c <- [n - a - b], a * a + b * b == c * …

Problem 7

Problem 7は10001 番目の素数を求める問題です。 primes = 2:f [3,5..] where f (x:xs) = x:f [y | y <- xs, y `mod` x /= 0] main = print $ primes !! 10000 遅いです。素数を求めるのにもっと速い方法があるはずですが…まあ、色々な方法を探してみようか…

Problem 6

六日目でもう更新忘れるところでした(汗今回はProblem 6です。1~100の和の二乗と二乗の和の差を求める問題です。 main = print $ (sum [1..100]) ^ 2 - sum [x * x | x <- [1..100]] 和の二乗から二乗の和をひくだけです。ただの計算でした。

Problem 5

Problem 5は、最小公倍数を求める問題ですね。 main = print $ foldl1 lcm [2..20] 標準ライブラリにlcmがあるので簡単に求められますね。ちょっとつまらない気もしますが…まあいいでしょう。

Problem 4

4日目です。今回はProblem 4を…「3桁の数の積で表される回文数のうち最大のものはいくらになるか。」って問題ですね。 isPalindromic n = (show n) == reverse (show n) main = print . maximum $ [x | x <- [y * z | y <- [100..999], z <- [y..999]], isPa…

Problem 3

今回はProblem 3を…素因数分解の問題ですね。どこかでunfoldrを使った素因数分解を見た記憶があったので再現(?)してみました。 import Data.List fac x = case [y | y <- [2..x], x `mod` y == 0] of [] -> Nothing [t] -> Just (t, 0) (t:_) -> Just (t, x …

Problem 2

それでは今日はProblem 2を…400万までのフィボナッチ数列の偶数を足していく問題です。 main = print . sum . takeWhile (<=4000000) $ [x | x <- fb, even x] ] where fb = 1:2:[x + y | (x, y) <- zip fb (tail fb)] こんな感じかな?フィボナッチ数列も意…

Problem 1

はじめに 最近はネタがなく一ヶ月以上更新してなかったのでProject EulerをHaskellでやっていこうかと思います。 本題 今回はProblem 1なのでここに書くほどのものでもないですが… main = print . sum $ [x | x <- [1..999], x `rem` 3 == 0 || x `rem` 5 ==…

haskellでGUIを一行で

HaskellでGUIこの記事のプログラム(簡単にしたもの)をdo記法を使わずに書いてみたいと思います。 import Graphics.UI.Gtk;main = initGUI >> windowNew >>= \window -> onDestroy window mainQuit >> widgetShowAll window >> mainGUI 強引に一行にしました…

一行でFizzBuzz

こんな事は既にやってる人がたくさんいると思いますが…… putStrLn $ show $ map (let fizzBuzz x | 0 == (x `mod` 3) && 0 == (x `mod` 5) = "FizzBuzz" | 0 == (x `mod` 3) = "Fizz" | 0 == (x `mod` 5) = "Buzz" | otherwise = show x in fizzBuzz) [1..10…

数値型についてのメモ

haskellで失敗したので自分用メモを。簡単な計算するだけだったのですが……調子に乗って test :: Int -> Int こんな型宣言をしたので大きな数の計算ができなくてただの凡ミスです(泣) -- (1) test :: Integer -> Integer -- (2) test :: (Num a) => a -> a こ…

HaskellでGUI

はじめに 最近ネタがないのでネタづくりのためにhaskellでguiプログラミングをしてみました日本語の情報も意外にあったgtk2hsを使いました。 準備 ubuntuならとても簡単でした。 cabal install gtk2hs-buildtools cabal install gtk 基本的にはこれだけでOK…

Haskellはじめました

はじめに ようやくhaskellはじめました。まあ、ちょっと前から触ってたんですが・・ 本題 ubuntuならGHCを直接インストールするよりhaskell platformを入れたほうがいいらしいいので(?) apt-get install haskell-platform haskell-platform-doc これだけでも…

python小ネタ

はじめに 最近全然ネタがなく更新できないので、どうでもいい小ネタをしかも初心者向き(?) ←初心者向きというかもうみんな知ってるような事なので 本題 IPアドレスを取得するプログラムです。 #!/usr/bin/env python # -*- coding:utf-8 -*- import socket …

はてなブックマーク数を調べる

はじめに サイトのはてなブックマーク数を調べるツール(?)をpythonで作りました。 本題 おわりに 今回は課題が山積み、という現実から逃れるために適当なことをしただけなので・・・

pythonでtwitterクライアント(更新)

はじめに 以前作ったtwitterクライアントを少し改良しました。 本題 本当はもっと新機能があるのですが・・・暇があったらやっていきます。 おわりに 「最近、更新してなかったので書いた」という感じです。なるべく更新したいと思ってもネタが・・・

pythonでP/N判定API

はじめに 今回は、Twitter感情分析所のP/N判定(肯定/否定 の判定)APIを使いました。 本題 これだけです。まあ、ネタがなかったので適当に作ったという感じですね。 おわりに P/N判定(肯定/否定 の判定) APIなんて・・・面白いことを考えますね。ホントは…

pythonでcuiのtwitterクライアント

はじめに 学校の授業があまりにも暇だったので、ちょっとやってみました。機能的には全然しょぼいです。 本題 https://bitbucket.org/morris555/pycuitter一応、ここで公開しています。 hg clone ssh://hg@bitbucket.org/morris555/pycuitter 使い方としては…

pythonでtwitterトレンドを・・・

はじめに 歯医者の待ち時間が暇だったので・・・お遊び感覚でツイッターのトレンドを取得するものを考えてみました。今回もtweepyを使いました。 本題 #!/usr/bin/env python # -*- coding:utf-8 -*- import tweepy import sys def get_oauth(): consumer_ke…

pythonでスクレイピング

はじめに 今日学校から帰ってTwitterを見たら、Sn0wNightさんに「.@morris_555 さんが以前ふぁぼテロツールに似たようなのPythonで作ってたし、エロ画像収集プログラムもPythonで書いてくれるはず」こんな事を言われていたので適当にやってみました。 本題 …

pythonの小ネタ #05

はじめに 最近は全然ネタが無いので、10進数を2進数や16進数へ変換したり、その逆をやってみたりしたことをメモ程度に・・・ 本題 >>> print format(10, '0x') a >>> print (0x10) 16 >>> print format(10, '0b') 1010 >>> print (0b10) 2 これだけです。あ…

ubuntuのgnome-shellでの通知の問題

はじめに 最近ubuntuをよく使うのですが、unityが嫌いなのでgnome-shellを入れて使っていたところ何故か、gnome-shellの通知スペースが使われず、unityなどと同じ所に出てしまいました。 本題 調べていくと、どうやらnotify-osdやnotification-daemonが、邪…

pythonでふぁぼツール(改)

はじめに 前回のふぁぼツールを改良(改造?)して、リアルタイムでふぁぼれるようにしました。tweepyのStreamを使って、自動でふぁぼっていくようにしてみました。 本題 https://gist.github.com/1560029 #!/usr/bin/env python # -*- coding:utf-8 -*- imp…

pythonでふぁぼツール

はじめに id:Sn0wNightさんがRubyで書いていたので対抗して(?)Pythonで書いてみました。今回は迷ったのですが、tweepy を使いました。 本題 #!/usr/bin/env python # -*- coding:utf-8 -*- import tweepy import sys def get_oauth(): consumer_key = '' co…

python で qt4 #08

はじめに こんばんは、日付が変わったので今年もあと一日ですね。今回は、QtWebKit を使ってみました 本題 #!/usr/bin/env python # -*- coding:utf-8 -*- import sys from PyQt4 import QtGui from PyQt4 import QtWebKit from PyQt4 import QtCore class W…

Pythonの小ネタ #04

はじめに 今回は文字列のフォーマット(?)について小数点で詰まった 本題 最近使ってる、 "{0} World".format("Hello") こんな書き方で詰まったww今までは "%.2f" % (100) これで出来たのに…… 解決 できましたww "{:.2f}".format(100) "{0:.2f}".format(…