kanetaiの二次記憶装置

プログラミングに関するやってみた、調べた系のものをQitaに移して、それ以外をはてブでやる運用にしようと思います。http://qiita.com/kanetai

論理回路(Logic Circuit)

論理回路の復習をしたので コンピュータサイエンスで学ぶ論理回路とその設計作者: 柴山潔出版社/メーカー: 近代科学社発売日: 1999/09メディア: 単行本購入: 2人 クリック: 2回この商品を含むブログを見る github.com 論理代数(Logical Algebra) ブール領…

素数判定 (Primality Test)

リポジトリ 競プロ的なことを久しぶりにしたので、http://kanetai.hatenablog.com/entry/20110519/1305833341の一部を少し整理。 term description 約数(divisor), 因数,因子(factor) ある自然数を割り切る整数。 素数(prime number) 自分自身と1以外の自然…

Node.js環境構築メモ

➜ ~ sw_vers ProductName: Mac OS X ProductVersion: 10.11.1 BuildVersion: 15B42 nodebrew curlでインストール。終わったらPATHを通す($HOME/.nodebrew/current/bin) ➜ ~ curl -L git.io/nodebrew | perl - setup % Total % Received % Xferd Average Spee…

Playgroundでマンデルブロ集合とジュリア集合を書いてみた

MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]] } }); qiita.com に移動しました。 プログラミングに関するやってみた、調べた系のものをQitaに移して、それ以外をはてブでやる運用にしようと思います。 http://qiita.com/kanetai

Template Method パターン

https://ja.wikipedia.org/wiki/Template_Method_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 ある処理のおおまかなアルゴリズムをあらかじめ決めておいて、そのアルゴリズムの具体的な設計をサブクラスに任せる。 swiftでの実装例 今のところ、protectedもabstra…

Adapterパターン

https://ja.wikipedia.org/wiki/Adapter_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 既存のクラスに修正を加えることなくインターフェースを変更するラッパー. swiftで実装するには? クラス図どおり実装するだけだが、Objective-CやSwiftには言語機能として既存…

Iteratorパターン

https://ja.wikipedia.org/wiki/Iterator_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 ↓みたいに要素を反復列挙できるようにするパターン var iterator = aggregate.iterator() while iterator.hasNext() { var element = iterator.next() } swiftでIteratorを実…

swiftで外部コマンド実行

qiita.com に移動 頭に#!/usr/bin/swiftって書いておくと chmod a+x hoge.swift ./hoge.swift #swift hoge.swiftでも起動できる って感じでスクリプトみたいに起動できることを知ったので、勉強がてら手元にあるperlスクリプトをswift翻訳してた。 その際の…

Effective Objective-C 2.0 第4章(プロトコルとカテゴリ)

項目23 オブジェクト間通信には、DelegateとDataSourceプロトコルを使う @class myClass; @protocol myDelegate <NSObject> @optional - (void)optionalMethod1:(myClass*)test; - (void)optionalMethod2:(myClass*)test; @end @interface myClass : NSObject - (void)</nsobject>…

プログラミングHaskell第6章(再帰関数)まとめ

再帰関数定義のための5段階の工程 1:型を定義する pow :: Int a => a -> a -> a 2:場合分けをする 数値なら(0, n), リストなら([], x:xs)などで場合分けする pow a n | (n == 0) = | (n > 0) = 3:簡単な方を定義する たいていの場合、基底部の方が簡単 pow …

ソート、整列(sorting)

リポジトリ Arrays.sortに習って、a[fromIndex, toIndex)がソートされるようにしてみる。 また、javaにはswap()がないので適当に実装しておく。 public static final void xxxSort(T a[], int fromIndex, int toIndex) { ... } public static final int[] sw…

はてなブログ用の数式エスケープスクリプト作った

ここでも指摘されているように、はてなブログのmarkdownモードで数式を使おうとすると、エスケープとかではまることが多いので、簡易スクリプト(Perl)書いた。 \\( ...\\),\\[...\\]で囲まれた数式をはてな記法[tex:{...}]にして、括弧内をエスケープする。 …

プログラミングHaskell第5章(リスト内包表記)まとめ

zip 2つのリストを取り、対応する要素をタプルにしたリストを作る。 2つのリストの長さが違う場合は、短い方のリストと同じ長さのリストとして扱う。 pairs :: [a] -> [(a,a)] pairs xs = zip xs (tail xs) -- pairs [1, 2, 3, 4] -----> [(1,2),(2,3),(3,…

プログラミングHaskell第4章(関数定義)まとめ

cons演算子「:」 既存のリストの先頭に新しい要素を追加したリストを作成する cons演算子は右結合 Prelude> :t (:) (:) :: a -> [a] -> [a] Prelude> 1 : [2, 3] [1,2,3] Prelude> 1 : (2 : (3 : [])) -- [1, 2, 3]はこれの略記 [1,2,3] Prelude> 1 : 2 : 3 …

Hash(MDx, SHA-xxx)

MD5を使う機会があったので、色々な言語での求め方を調べてみた。 Uinux系 md5, md5sumが使えれば↓でおk md5sum <file> md5 <file> md5 -s <text> brewでインストールするなら、 brew install md5sha1sum shasumもついてくる。 shasum [OPTION]... [FILE]... With no FILE, or </text></file></file>…

Effective Objective-C 2.0 第3章(インターフェイスとAPI設計)メモ

項目15 名前空間の衝突を避けるプレフィックス名を使う Appleが2文字のプレフィックスを使う権利を保有してるので、 クラス名とかデリゲートメソッドに3文字以上のプレフィックスをつけようず クラスだけでなく、クラス実装ファイル内で使っている純粋C関数…

Effective Objective-C 2.0 第2章(オブジェクト、メッセージング、ランタイム)メモ

項目6 プロパティの理解 宣言プロパティ(declared property)の属性 アトミック性 デフォルト(何も書かない場合)はatomic nonatomic 排他的に実行されないアクセッサメソッド。 atomic アクセッサにアトミック性を保証するロック機能が付く。自分でを定義する…

プログラミングHaskell第3章(型とクラス)まとめ

基本型 Bool (真理値) False, True. Char (文字) シングルクォートで囲む。他の言語同様。 String (文字列) ダブルクォートで囲む。他の言語同様。 Int (固定制度整数) 固定長整数。プログラミングHaskellによると、Hugsではらしいが、 Integer (多倍長整数)…

プログラミングHaskell第2章(はじめの一歩)まとめ

標準ライブラリ(Prelude) 二項演算 除算はdiv関数を使う。通常関数は、ポーランド記号(前置記法, prefix notation)で書くが、バッククオートを入れると中置記法(infix notation)で書くことができる。 演算子の優先順位や結合の仕方は数学の慣習と同じ(累乗演…

プログラミングHaskell第1章(導入) まとめ

プログラミングHaskellでは実際のHaskellで入力する記号ではなく数学記号で記述されている。 否定とノットイコールの入力方法が慣れ親しんでるプログラミング言語とは違う。 数学記号 意味 入力方法 変換する -> クラス制約 => 以上 >= 以下 等しくない /= …

Effective Objective-C 2.0 第1章(Objective-Cに慣れる)メモ

Effective Objective-C 2.0を買ったので、適当にまとめ。 enumの話は知らなかったけど、第1章は半分ぐらいがC/C++でも当たり前の内容。 項目1 Objective-Cのルーツを知る ぶっちゃけなんもない。 スタック上にObjective-Cのオブジェクトを宣言できない、ヒ…

macでHaskell環境構築メモ

動機 新言語Swiftとか色々な言語でで関数型プログラミングをサポートし始めたので、ちょっとかじっておきたかった。 学ぶなら純粋関数型言語ということで、言語はHaskellにしますた。 参考書はプログラミングHaskell。 訳者のサポートページhttp://www.mew.o…

最大流問題(Maximum Flow Problem)

最小費用流問題を特殊化。 ソース節点sが複数ユニットを配布節点w経由でシンク節点に到達するように流す。各辺には、容量と実際のフローが付随する。 目標:ネットワークフローFを最大にする コード 残余ネットワークから増加パスを求める系のアルゴリズムを…

Network Flow Algorithm

Network Flow Algorithms フローネットワーク(Flow network)/輸送網(Transportation network)を扱うアルゴリズム。 各アークに容量(capacity)を設定し、各アークをフロー(flow)が流れる。 ネットワークフローアルゴリズムの適用分やには次のような物がある。…

Cats Going Straight II(AOJ No.0273)

リポジトリ Cats Going Straight II(AOJ No.0273) まっすぐな壁で囲まれたいくつかの部屋からなるお屋敷がある。 お屋敷の一番外側の壁をみると、凸多角形になっている。 1枚の壁はその両端にある柱によって支えられている。 異なる柱が同じ位置を占めるこ…

平面グラフ(plane graph)、彩色(cloring)、木(tree)

平面グラフ(plane graph) 辺が交差しないように平面上に描けるグラフ(多重グラフを含む)は、平面的(planer)であるといい、特に、有限多重グラフの平面表現は地図(map)(または単に平面グラフ(plane graph))と呼ばれる。平面グラフと同型なグラフのことを平面…

The Lonely Girl's Lie(AOJ No.0272)

リポジトリ The Lonely Girl's Lie(AOJ No.0272) N a1 a2 ... aN b1 b2 ... bN が与えられる。 aiはAがもっているパケモンのレベルbiはBがもっているパケモンのレベルを示す。 パケモンを戦わせたとき、レベルが高い方が勝つ。同レベルなら引き分け。 お互い…

Izua Dictionary(AOJ No.0271)

リポジトリ Izua Dictionary(AOJ No.0271) nと、0, 1, ..., n-1を並べ替えてできるn!個の数列が辞書に乗っている。 数列0, 1, ..., n-1を入力に従ってR回スワップしてできた数列が辞書の何番目に乗っているかを答える。 ただし、0, 1, ..., n-1は、0番目に乗…

Aka-beko and 40 Thieves(AOJ No. 0266), Triangle of Blocks(AOJ No. 0267), Kongo Type(AOJ No. 0268), East Wind(AOJ No. 0269), Modular Query(AOJ No. 0270)

リポジトリ Aka-beko and 40 Thieves(AOJ No.0266) 1 or 2の系列が与えられたとき、AからBに行けるかどうかを答える。 コード import java.util.*; public class aoj0266 { static final Scanner stdin = new Scanner(System.in); enum City { A, B, X, Y, Z…

Cats Going Straight(AOJ No.0265)

リポジトリ Points for a Perfect Scorer(AOJ No.0265) 塀が多角形で表され、いくつかの頂点にえさを置く。 猫が塀を登って、内部に侵入し、えさに向かって直進する。 猫がどこから入ってきても、塀にぶつからないようにえさを配置するとき、必要なえさの数…