ペアプロ・TDDの『お題』をまとめてみた #tddbc #coderetreat #pp_con
TDD及びペアプロを通じてプログラミングスキルを上げるべく、ネットで公開されている『お題』について色々情報収集してみました。
お題やテーマについては、見つけ次第随時追加していきます。
Stackユーティリティ from 『車窓からのTDD』
MotsunabeZombieProject(mzp)/もつ鍋(つぶやきの種類を判別するためのアプリケーション) from TDDBC福岡
Wiki Engine from TDDBC札幌1.5→TDDBC東京1.7
- TDD Boot Camp 札幌 1.5 : ATND
- TDD Boot Camp 札幌 1.5 - Togetter
- TDD Boot Camp 1.5 開催します - やさしいデスマーチ
- TDD Boot Camp 札幌 1.5 終了しました - やさしいデスマーチ
- TDDBC札幌1.5に参加してきました - hachiNote
資料はこちら。全14ページ、作業手順まで詳細にまとめ上げられている素晴らしい資料になっております。作者&情報提供を頂いたShuji Watanabe (TwitterID:@shuji_w6e)さん、ありがとうございました!
これを受けて、TDDBC東京1.7でも同じテーマで実演が行われてました。
野球の打率計算 from TDDBC横浜
経路探索 from TDDBC 東京 for C++
飲み物自動販売機 from TDDBC 大阪 1.0/2.0
ライフゲーム from Coderetreat
TheBowlingGameKata
ボーリングのスコア計算 from TDDBC 札幌 2.3
これは上記『TheBowlingGameKata』の日本語版と言ったところか。
ボーリングのスコア計算 from TDDBC Tokyo 2013-03
- ペアプロワークショップ
- ペアプロワークショップ from yattom
-
こちらも上記同様ボーリングスコア計算について。YASUI Tsutomu (TwitterID:@yattom)さんによる発表資料となっており、『ペアプロ』を練習・実践するに当たっての心構えや準備についても言及がなされています。
Money オブジェクトの実装 from 『テスト駆動開発入門』
- 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2003/09
- メディア: 単行本
- 購入: 45人 クリック: 1,058回
- この商品を含むブログ (162件) を見る
マイヤーズの三角形
原典はここから。こちらについては神速(@sinsoku_listy)さんから教えて頂きました。
- 作者: G.J.マイヤーズ
- 出版社/メーカー: 近代科学社
- 発売日: 1980/03
- メディア: 単行本
- 購入: 2人 クリック: 28回
- この商品を含むブログ (23件) を見る
- 作者: J.マイヤーズ,M.トーマス,T.バジェット,C.サンドラー,Glenford J. Myers,Todd M. Thomas,Tom Badgett,Corey Sandler,長尾真,松尾正信
- 出版社/メーカー: 近代科学社
- 発売日: 2006/08/01
- メディア: 単行本
- 購入: 7人 クリック: 267回
- この商品を含むブログ (47件) を見る
codebreaker
こちらについても情報を神速(@sinsoku_listy)さんから教えて頂きました。
郵便番号のバリデーション from TDD 道場 第2回 @わんくま名古屋勉強会#12
和暦年月の文字列を検証 from TDD.NET
あみだくじ from みなとRuby会議01
お題 あみだくじを作ってください 仕様 ・当たりの数は一つ ・横線がランダムに配置されること ・横線の数>0 ・横線が複数繋がってはいけない ・人数の指定ができるようにする
数字を英語表記に変換(English Numerals) from みなとRuby会議01
- 数字を英語表記に変換する ― Gist
- [https://gist.github.com/2862228:title=みなとRuby会議01 ソーシャルコーディング[English Numerals] Scala版回答 ― Gist]
- English Numerals by @nari3 , @watson1978 #minatork01 ― Gist
- List of Japanese Numbers
オフラインリアルタイムどう書く
お題を元に会場でリアルタイムにチャレンジする、という勉強会のようです。
プログラマの技術情報共有サービス『Qiita(キータ)』とも連動している模様。
マイクロブログの作成 from ペアプロ合コン 第1回
- 第1回ペアプログラミング合コン(男子枠) on Zusaar
- 第1回ペアプログラミング合コン(女子枠) on Zusaar
- 第1回ペアプログラミング合コンに行ってきました - rambling talk
レポート見る限りだとお題のみ決められていて、作成方法(フレームワーク等)はペアに委ねられてたのかな?何かあれば追記します。
古きよきWebページを、現代風につくり直してみよう from ペアプロ合コン 第2回
TDD Problems(海外でまとめられていたプログラミング問題集)
TwitterTLでつぶやかれていたものを補足。見つけた時点(2012/07)で問題総数33問!以下に一覧ベースでどんなもんがあるか適当訳(by Google先生)してみました。興味を引くものがあれば(和訳とあわせて)チャレンジしてみてはいかがでしょうか。
-●Games【ゲーム】 --Bowling game(ボウリング) --Game of life(ライフゲーム) --Golf handicap(ゴルフのハンディキャップ) --Reload countdown(リロードカウントダウン) --Tic-Tac-Toe -●Strings【文字列に関する問題】 --Postfix form(数式の中置式→後置式変換) --Spell out check amount(数値→数値の文字列表現に変換) --SQL string generator(SQL文字列生成) --Template engine(テンプレートエンジン --Text editor end-of-line trim(行末トリムを行うエディタ) --URL splitting(URL分解) --Word-wrapping(ワードラップ:所定のルールに基づいて文字列を処理) -●Collections & sorting【コレクション&ソート】 --Integer stack(数値のスタック) --Multi map(Mapに関する問題) --Natural sort(人間が期待する順序で文字列ソートを行うアルゴリズム実装) --Queue(キュー) --String set(文字列Set) -●User interaction【ユーザとの対話】 --Console interaction(コンソール) --Magneto effect(マグネット効果) --Undo-redo stack(UNDO&REDO スタック) -●Maths【数学】 --Line segment intersection(線分の交点) --Overlapping rectangles(重複長方形:所定の操作をサポートする四角形の抽象化設計) --Range(範囲に関する問題) --Roman number conversion(ローマ字→数字変換) -●Uncategorized【その他未分類】 --Color gradient(色のグラデーション) --Finding duplicate files(重複ファイルの検索) --Recent file list(最近のファイル一覧) --Refreshing cache(キャッシュ・リフレッシュ) --Soundex(英語発音によってインデックスされた音声アルゴリズム) --Spreadsheet(スプレッドシート) -●Larger problems【より大きな問題】 --Blog(ブログ) --Boyer-Moore string search(ボイヤー・ムーア文字列検索アルゴリズム) --Evaluate arithmetic expression(算術式の評価) --Digital circuit simulation(デジタル回路のシミュレーション)
やる夫で学ぶTDD(Myersの三角形/CSVParser/NEET判定/ボウリングのスコア計算)
太田@ついったー(TwitterID:@oota_ken)さんの神業的芸術作品『やる夫で学ぶTDD』のTogetter及びAAまとめです。テーマとしては以下のものを扱っております。
テーマごとのリンクはこちら。
LTSV from TDDBC Tokyo 2013-03
- 【今北産業】3分で分かるLTSV業界のまとめ【LTSV】 - naoyaのはてなダイアリー
- sue445/tddbc_tokyo_20130316 · GitHub
- 2013/03/16 TDD Boot Camp Tokyo 2013-03 #tddbc - Togetter
- 課題その1
class LTSV { set(String key, String val) : String get(String key) : String dump() : String } ltsv = new LTSV(); ltsv.set( "foo", "hoge" ) #=> null ltsv.get( "foo" ) #=> "hoge" ltsv.dump() #=> "foo:hoge\n" ltsv.set( "bar", "fuga") #=> null ltsv.dump() #=> "foo:hoge\tbar:fuga\n" ltsv.set( "foo", "piyo") #=> "hoge" # ↑ 置き換えられた値 ltsv.dump() #=> "bar:fuga\tfoo:piyo\n" # ↑ 格納順にダンプされる
- 課題その2
// 例外条件を考えてみよう ltsv.get( "toto" ) #=> 存在しないキーの値はnull ltsv.set( nil , "momo" ) # nullキーは例外発生 ltsv.set( "" , "gogo" ) # 空文字キーは例外発生 ltsv.set( "key", null ) # null値は例外発生 ltsv.set( "key", "" ) # 空文字値はOK -> dumpは? // データにコロンが入ってたら? // データに改行が入っていたら? // データにタブ文字が入っていたら? #=> 上記は全てバックスラッシュでエスケープ
- 課題その3
「いやー和田くん、こないだのLTSV、だっけ?」 「はい」 「ステキなんだけど、もうちょっと便利にしたいなぁ」 「はい(なんだろう・・・)」 「dumpがあるなら読み込みも欲しいよね」 「えっ」 // 読み込んでみよう LTSV.parse(String dumpStr) : LTSV 例: ltsv = LTSV.parse( "foo:hoge\tbar:fuga\n" ) ltsv.get( "foo" ) #=> "hoge" ltsv.get( "bar" ) #=> "fuga" // さて例外系はどうしましょう?