ページ

2012/04/26

[Excel][VBA]シートの存在チェック

できる逆引き Excel VBAを極める 勝ちワザ700
2010/2007/2003/2002対応 (「できる逆引き」シリーズ)


国本 温子

インプレスジャパン

発売日:2012-02-09

シート名を渡すとそのシート名のシートが存在するかどうかチェックする。
Function IsExistSheet(SheetName As String) As Boolean

    Dim ws As Worksheet, flag As Boolean
    
    flag = False
    
    For Each ws In Worksheets
        If ws.Name = SheetName Then flag = True
    Next ws

    IsExistSheet = flag

End Function

2012/04/25

[Twitter][API]改訂で2012年5月14日までに開発者がするべきこと

0.まずTwitter API ポケットリファレンスを買います

以下の該当する項目を修正する

Twitter APIの改訂 - 2012年5月14日 - Google グループ
# https://dev.twitter.com/blog/api-housekeeping の抄訳です
...
1. バージョン抜き、サブドメイン抜きのAPIエンドポイントはサポートされなくなる
例)
http://twitter.com/statuses/user_timeline.xml
のかわりに今後は
https://api.twitter.com/1/statuses/user_timeline.xml
を使用(httpはサポートされますが、httpsの利用を推奨しています)

またOAuth関連も同様 http://twitter.com ではなくhttps://api.twitter.com/oauth/* を利用してください

2. 非推奨としてアナウンスされてきたエンドポイントは廃止
非推奨(廃止される)エンドポイントのリストは以下のページにあります。
https://dev.twitter.com/docs/deprecations/spring-2012
特に古くからあった statuses/public_timeline も廃止されることに注意してください。
public_timelineのかわりにはストリーミングAPIの sample.json を使えます。

3. Atomは廃止
Atomはほとんど利用されていません。RSSのサポートは継続します。

4. ツイートエンティティをサポートするエンドポイントはinclude_entitiesパラメータの有無に関わらずエンティティを返す

5. since_idやmax_idをサポートするエンドポイントはpageパラメータによるページングを廃止

6.REST API Resources | Twitter DevelopersのDeprecatedをチェックする


Twitter API ポケットリファレンス (POCKET REFERENCE)Twitter API ポケットリファレンスを持っていれば、
将来的に include_entities と include_rts は
常に含むようになると書いてあるのでうろたえることはない。
本のサンプルはJSONの取得だからAtom廃止は関係ない。

出版されてからのAPI変更はハマると怖いのでメモ。
retweet_count が100以上で100+と返ってくるというのが、
API改訂で数値で返ってくるようになったのは把握している。
他は良くわからないのでTwitter API ポケットリファレンス
改訂版が出ると良いですね。現状でもほとんど正確ですが。

今使ってますが凄く役に立っています!!!!
山本 裕介 @yusukey さん ありがとうございます!!!

2012/04/23

[競技プログラミング][C言語][AtCoder]パズルのお手伝い

パズルのお手伝い

時間制限 : 2sec / スタックサイズの制限 : 10MB / メモリー制限 : 64MB

問題文

高橋君は、パズルが好きです。今日は、8 クイーン問題に挑戦しようとしています。
8 クイーン問題とは、8×8 のチェスボード上の縦・横・斜め 45 度の同一直線状に
それぞれクイーンが 1 つしか存在しないように、合計 8 つのクイーンを置く問題です。


高橋君は、3 つのクイーンを置いたところで残りのクイーンをどう置いたら良いのか判らなくなってしまいました。
残りの 5 つのクイーンを含めた 8 つのクイーンの位置を求めなさい。

入力

入力は以下の形式で与えられる。
c11 c12 … c18
c21 c22 … c28
:
:
c81 c82 … c88
1 行目から 8 行目の各行は 8 文字の文字列が与えられる。
i 行目の先頭から j 番目の文字である cij は、i 行目 j 列目にクイーンが置かれているかどうかを表す。
cij は、'.' もしくは 'Q' で与えられ、
'.' であればクイーンが置かれていないことを、'Q' であればクイーンが置かれていることを表す。

出力

8 つのクイーンを置き終わった後の状態のうちの 1 つを、入力と同様のフォーマットで出力せよ。
答えが存在しない場合は、"No Answer" と 1 行で出力せよ。

出典

パズルのお手伝い - AtCoder Regular Contest #001 | アットコーダー

回答

AtCoder/arc001_3.cpp at master · wada811/AtCoder · GitHub
持ってて良かったプログラミングの宝箱 アルゴリズムとデータ構造 第2版
エイトクイーン問題についても載っていたので
一体どうすればいいんだ…と行き詰まることがなかった。
通常のエイトクイーン問題とは少し異なるので
その部分を自分で変更してやればなんとか通るものの完成。
アルゴリズムとデータ構造って大事だね。

2012/04/22

[競技プログラミング][C言語][AtCoder]リモコン

リモコン

時間制限 : 2sec / スタックサイズの制限 : 10MB / メモリー制限 : 64MB

問題文

高橋君は、エアコンの設定温度を変更しようとしています。
現在の設定温度は A 度ですが、これを B 度に設定したいと思っています。

エアコンのリモコンは 1 回ボタンを押すことで、
1 度設定温度を下げる、もしくは上げる
5 度設定温度を下げる、もしくは上げる
10 度設定温度を下げる、もしくは上げる
の、6 種類の操作のいずれか 1 つを実行することが出来ます。

高橋君が設定温度を A 度から B 度に変更するために押すボタンの最小回数を求めなさい。

入力

入力は以下の形式で与えられる。
A B
1 行目は現在の設定温度を表す整数 A (0≤A≤40) と、設定したい温度を表す整数 B (0≤B≤40) が与えられる。

出力

高橋君がボタンを押す必要のある回数の最小値を 1 行に出力せよ。

出典

リモコン - AtCoder Regular Contest #001 | アットコーダー

回答

AtCoder/arc001_2.cpp at master · wada811/AtCoder · GitHub
温度差取って、その温度差を埋めるための操作回数をあらかじめ配列に持っとくという力技…。
白い行が温度差、黒い行が操作回数で、
区切ってみると2行目以降の操作回数は10で割った値を足しているだけ。
 0  1  2  3  4  5  6  7  8  9
 0  1  2  3  2  1  2  3  3  2
10 11 12 13 14 15 16 17 18 19
 1  2  3  4  3  2  3  4  4  3
20 21 22 23 24 25 26 27 28 29
 2  3  4  5  4  3  4  5  5  4
30 31 32 33 34 35 36 37 38 39
 3  4  5  6  5  4  5  6  6  5

2012/04/21

[書評]プログラミングの宝箱 アルゴリズムとデータ構造 第2版

プログラミングの宝箱 アルゴリズムとデータ構造 第2版
紀平 拓男
ソフトバンククリエイティブ
発売日:2011-03-30
ブクログでレビューを見る»
独学でプログラミングを学んだので無駄の多いコードを書いていて、
それに気づきもしなかったが、この本のおかげで無駄に気づくことができた。
基本的な内容から、後半は高度な内容まで網羅されているので誰しも得るところはあると思う。
帯に全プログラマー必読と書かれているのも宣伝文句ではないと思った。

先日、基本情報処理技術者試験を受験したが午後が時間ギリギリでアルゴリズム弱いなと実感したので衝動買いしました。
レビューにある通り、プログラミングは独学だったのでアルゴリズムとデータ構造については聞きかじったことがあったくらい。
ちゃんと学ばなくてはと思っていたので基本的な内容から解説してある本書は役に立った。
読んだだけではモノにはできないと思うのでAOJとかAtCoderで実践してモノにしたい。

ということで無駄の多かった自作スタックを効率化したのを作りなおしてみた。
AOJ/vol100/AOJ10032_efficient.cpp at master · wada811/AOJ · GitHub
AOJ/vol100/AOJ10033_efficient.cpp at master · wada811/AOJ · GitHub

AOJ/vol100を終えてパラメータはこんな感じ。データ構造のポイント低いですね…。この本を読んで上げていきたい。

[Excel][VBA]入力規則でドロップダウンメニューを作る

できる逆引き Excel VBAを極める 勝ちワザ700
2010/2007/2003/2002対応 (「できる逆引き」シリーズ)


国本 温子

インプレスジャパン

発売日:2012-02-09


見た目はドロップダウンメニュー、入力規則で言うところのリストをVBAで作ります。
名前付き範囲を使えば別のシートのセル範囲を指定することも出来て便利ですよ。
With ActiveCell.Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:="=名前付き範囲"
End With

Eclipseの設定をインポート・エクスポートする


eclipseで設定をインポート・エクスポートする - Hacking My Way ~ itogのhack日記
参考に設定をエクスポート。
ついでに、Preference>Java>Code Style>Formatter の俺々フォーマッタをエクスポートした。
wada811/Eclipse-Settings · GitHub
これで安心してEclipse3.7を入れられる。

2012/04/20

Bloggerでラベル別に分類表示された記事一覧ページを作る

DevAchieve: Bloggerのページ機能と記事一覧を表示する方法で記事一覧ページを
作ったんだけど、単なるGoogleReaderへのリンクでユーザーが一旦外に出てしまうし、
ラベル別になっていなくて微妙でした。

これはその点では問題なしです!記事が500件超えたらどうなるのか…とは思いますが…。
Blogger ブログにサイトマップ - ラベル分類された投稿一覧を「ページ」に表示する方法
http://www.kuribo.info/2012/04/blogger.html
<script src="http://www.abu-farhan.com/script/daftarisiblogger/blogtoc-min.js"></script>
<script src="http://www.kuribo.info/feeds/posts/summary?redirect=false&amp;max-results=500&amp;alt=json-in-script&amp;callback=loadtoc"></script>

2012/04/19

[Excel][VBA]エラーチェックを無効にしてエラーが出ないようにする

できる逆引き Excel VBAを極める 勝ちワザ700
2010/2007/2003/2002対応 (「できる逆引き」シリーズ)


国本 温子

インプレスジャパン

発売日:2012-02-09


Excelには様々なエラーチェック機能がありますが、それがむしろ迷惑になる場合があります。
なので無効にしてしまいましょう。

Excel全体でエラーチェックを無効にする

書式Application.ErrorCheckingOptions.BackgroundChecking = False

オプション一覧

BackgroundChecking
EmptyCellReferences
EvaluateToError
InconsistentFormula
NumberAsText
OmittedCells
TextDate
UnlockedFormulaCells
ErrorCheckingOptions プロパティ (Microsoft.Office.Interop.Excel)


特定のセルでエラーチェックを無効にする

書式ActiveCell.Errors.Item(xlEmptyCellReferences).Ignore = True

オプション一覧

xlEmptyCellReferences
xlEvaluateToError
xlInconsistentFormula
xlNumberAsText
xlOmittedCells
xlTextDate
xlUnlockedFormulaCells

2012/04/18

[Excel][VBA]セルに罫線を引く

できる逆引き Excel VBAを極める 勝ちワザ700
2010/2007/2003/2002対応 (「できる逆引き」シリーズ)

国本 温子
インプレスジャパン
発売日:2012-02-09

一番簡単な罫線の引き方はこんな感じ。
Range("A1:C3").Borders.LineStyle = xlContinuous

もっと細かく色々設定して罫線を引きたかったら次のページが参考になる。
書式 - 罫線 - EXCEL-LENCE web

[競技プログラミング][C言語][AOJ10033]Stacking Blocks II

AIZU ONLINE JUDGE http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10033

Stacking Blocks II

ロボットを操作して、n個のブロックの山を作る。各ブロックにはアルファベット1文字で示された色が着いている。
ロボットは以下の命令を実行する:

push p c: 色がcであるブロックをp個目の山に積む
pop p: p個目の山の頂点からブロックを1つ取り除く
move p1 p2: p1個目の山の頂点からブロックを1つ取り除き、それをp2個目の山に積む
quit: 終了する
最初、すべての山は空(から)である。

ロボットへの命令を読み込んで、pop命令によって取り除かれたブロックの色を順番に出力するプログラムを作成せよ。

Input

最初の行に山の数nが与えられる。続いて、命令の列が与えられる。
1つの命令が1行に与えられる。命令の種類は上述した通りである。
ブロックの色cは、aからzまでのアルファベットで与えられる。p, p1, p2は1からnまでの数字で与えられる。

quit命令でプログラムを終了せよ。

Output

取り除かれたブロックの色を順番に出力せよ。1つの色を1行に出力せよ。

Constraints

山に含まれるブロックの数が1000を超えることはない。

山の数が100を超えることはない。

誤った命令は与えられない。
回答:AOJ/vol100/AOJ10033.cpp at master · wada811/AOJ
前回のやつから山の数が増えて二次元配列になっただけ。
これも先頭にpushしてたりするので末尾に追加するように書き換えたい。

これでAOJ/Vol100シリーズは終わり。
とりあえずAOJは放置で溜まったネタの消化とAtCoderへの挑戦で更新していこうかな。
あとCDT導入して記事でも書こうかな。

それではまた明日。

2012/04/17

[競技プログラミング][C言語][AOJ10032]Stacking Blocks I

AIZU ONLINE JUDGE http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10032

Stacking Blocks I

ロボットを操作して、ブロックの山を作る。各ブロックにはアルファベット1文字で示された色が着いている。
ロボットは以下の命令を実行する:

push c: 色がcであるブロックを山に積む
pop: 山の頂点からブロックを1つ取り除く
quit: 終了する
最初、山は空(から)である。

ロボットへの命令を読み込んで、取り除かれたブロックの色を順番に出力するプログラムを作成せよ。

Input

入力は命令の列からなる。1つの命令が1行に与えられる。命令の種類は上述した通りである。
ブロックの色cは、aからzまでのアルファベットで与えられる。

quit命令でプログラムを終了せよ。

Output

取り除かれたブロックの色を順番に出力せよ。1つの色を1行に出力せよ。

Constraints

山に含まれるブロックの数が1000を超えることはない。

誤った命令は与えられない。
回答:AOJ/vol100/AOJ10032.cpp at master · wada811/AOJ
データ構造とアルゴリズムをちゃんと勉強したことがないので自分で作ってみるのは楽しかった。
添字が小さい方に詰めていく形のスタックです。今思えば末尾に追加するほうが良いのでは?
時間があったら作りなおしてみようかな。

それではまた明日。

2012/04/16

[競技プログラミング][C言語][AOJ10031]Search II

AIZU ONLINE JUDGE http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10031

Search II

n個の整数を含む集合Sと、q個の異なる整数を含む集合Tを入力とし、
Tに含まれる整数の中でSに含まれるものの数Cを出力するプログラムを作成せよ。

Input

1行目にn、2行目にSを表すn個の整数、3行目にq、4行目にTを表すq個の整数が与えられる。

Output

Cを1行に出力せよ。

Constraints

n ≤ 100000, q ≤ 50000 とする。
回答:AOJ/vol100/AOJ10031.cpp at master · wada811/AOJ
個数が一気に多くなったのでクイックソートしてから比較することにした。

それではまた明日。

2012/04/15

基本情報技術者試験を受験するまでに使った参考書3冊

情報処理推進機構:情報処理技術者試験
結果は自己採点で午前が60/80、午後は問2-6,8,13を選択して27/41でした。
午前は大丈夫そうです。午後は配点次第では危ないかもしれませんがギリギリセーフかなと思います。

勉強を始めたのが去年の6月終わりで、私はまだ非情報学科の学生でした。
この頃はAndroidアプリを作ったりして専攻から転向してIT系を目指そうか迷っている段階でした。
とりあえず資格の勉強をしてみて適正があるかどうか確認しようかと思い、
まずはITパスポートの勉強をこの本でしました。

1回で受かる!ITパスポート合格テキスト〈’11年版〉
藤川 美香子
成美堂出版
発売日:2010-12
ブクログでレビューを見る»
独立行政法人情報処理推進機構 情報処理技術者試験センターが情報処理技術者試験の一区分として行う国家試験であるITパスポート試験のテキストです。
試験自体は情報処理技術者試験のスキルレベル1で、何か本を買って1ヶ月くらい前から準備しておけば合格できるレベルの内容です。
赤シートで覚えてるかどうかチェックできるのと要点をまとめた暗記BOOKが便利だと思います。

レビューにも書いた通り、またよく聞くようにITパスポートは1ヶ月で受かるレベルの内容だったので、
受験料の5100円がもったいないくらいだったのでそのまま基本情報の勉強を始めました。

1回で受かる!基本情報技術者合格テキスト〈’11年版〉
原 寿雄
成美堂出版
発売日:2011-02
ブクログでレビューを見る»
この本で勉強して過去問を解けば受かりそうです。
平成24年春の基本情報処理試験で60/80でした。
結構過去問と似た様な問題が出たので
一通り勉強して過去問解いて間違ったところをコレで確認すれば大丈夫だと思います。

受験してなかったけど良さそうな本だということで同じシリーズで買いました。
レビューにも書いた通り、本を一通り(一周じゃなくだいたい覚えるまで3周くらいは)勉強して、
過去問はめんどくさくなってなかなかやらなくなるのでコレでやりました。
(FE)基本情報処理試験 午前 過去問題集 - Google Play の Android アプリ

過去3年間の計6回の問題全480問をランダムに10問テストすることができるのでちょっとした合間に出来るし便利です。

午前対策はこんな感じです。
午後はどの言語も自信を持って使いこなしていると言えるものがなく、穴場と噂の表計算で行くことにしました。
前の版が良書と有名な本が新仕様に対応した改訂版になって出ていたのでコレで勉強しました。

改訂新版 基本情報技術者 らくらく突破 表計算 (基本情報技術者試験 らくらく突破)
イエローテールコンピュータ株式会社
技術評論社
発売日:2012-02-07
ブクログでレビューを見る»
基本情報技術者試験の午後の表計算対策本で、
良書と有名な「基本情報技術者 らくらく突破 表計算(http://www.amazon.co.jp/o/ASIN/4774141453/wada811-22/ref=nosim/)」の改訂版です。
わかりやすい説明と詳しい解説付きの練習問題で確実に力がつきます。
新仕様にも対応していてマクロの説明も載っています。

最近Excel VBAを使うこともあって表計算を実践的に使っていたおかげで問13(表計算)はバッチリでした。


ということで、こんな感じで半年以上地道に繰り返し本を読んで勉強してきました。
結果発表は5月17日(木)の正午くらいらしいです。
(※情報処理推進機構:情報処理技術者試験:新着:平成24年度春期試験 合格発表スケジュール)
ここまでやったんだから一回で受かりたいです。

あんなに長い試験は久しぶりで疲れた。。。

[競技プログラミング][C言語][AtCoder]センター採点

センター採点

時間制限 : 2sec / スタックサイズの制限 : 10MB / メモリー制限 : 64MB

問題文

高橋君はセンター試験を受けました。
センター試験の各々の問題は 1 から 4 までの選択肢があります。
高橋君はあまり勉強をしていなかったので、全ての問題で同じ選択肢を選びました。
試験終了後、センター試験の解答が与えられましたが、高橋君は何番を選んだのかを忘れてしまいました。
しかし、高橋君は自分の点数が気になります。
そこで、高橋君のため、高橋君が正解する問題の数として考えられる最小と最大の数を求めるプログラムを書きなさい。

入力

入力は以下の形式で与えられる。
N
c_1c_2c_3…c_N
  • 1 行目は、センター試験の問題の数を表す整数 N (1 ≦ N ≦ 100) が与えられる。
  • 2 行目は、センター試験の解答を表す N 文字の文字列が与えられる。
    この文字列の i 文字目 (1 ≦ i ≦ N) の文字 c_i (c_i1234 のいずれかである) は、
    i 番目の問題の正解が c_iであったことを表す。

出力

高橋君が正解する問題の数として考えられる最小と最大の数を空白区切りで 1 行に出力せよ。

出典

センター採点 - AtCoder Regular Contest #001 | アットコーダー

回答

AtCoder/arc001_1.cpp at master · wada811/AtCoder · GitHub
ぶっちゃけ一行目あんまり必要じゃないですよね。
他のクリアしてる人も読み捨ててる人いたし。
結構ちゃんと必要メモリとか考えないで富豪的プログラミングしてると
問題数が多いサンプルで弾かれる。
昨日はロジックはあってるはずなのに!とハマった。
ちゃんと高速で省メモリなプログラムを組むように
アルゴリズムをしっかり勉強しなくてはと思いました。

2012/04/14

[Excel][VBA]連続したセルの終端の行番号・列番号を取得する

できる逆引き Excel VBAを極める 勝ちワザ700
2010/2007/2003/2002対応 (「できる逆引き」シリーズ)

国本 温子
インプレスジャパン
発売日:2012-02-09



データを入力させたらどれだけデータが入っているかを知りたくなりますよね?
必要なセルだけループ回して処理とかしやすくなりますし。
ということで取得方法を関数にしました。

空白を含まない連続したセルの終端の行番号・列番号を取得する

'右方向(xlToRight)に空白でないセルを探す
'指定した列がすべて空白、または埋まっている場合は256を返す
Function getColumn(row As Long, column As Long) As Long
    getColumn = Cells(row, column).End(xlToRight).Column
End Function

'下方向(xlDown)に空白でないセルを探す
'指定した行がすべて空白、または埋まっている場合は65536を返す
Function getRow(row As Long, column As Long) As Long
    getRow = Cells(row, column).End(xlDown).Row
End Function
欠点としては途中に空白セルがある場合には空白セルの一つで前で止まる。
入力漏れなんかを探すのには使えるかもしれない。

途中に空白を含むセルの終端の行番号・列番号を取得する

'Excelの最大列数(IV=256)から左方向(xlToLeft)に空白でないセルを探す
'指定した行がすべて空白、または埋まっている場合は1を返す
Function getColumn(row As Long) As Long
   getColumn = Range("IV" & row).End(xlToLeft).Column
End Function

'Excelの最大行数(65536)から上方向(xlUp)に空白でないセルを探す
'指定した列がすべて空白、または埋まっている場合は1を返す
Function getRow(column As Long) As Long
    getRow = Range(column & "65536").End(xlUp).Row
End Function
途中で空白セルもある場合はコチラを使えば本当の終端で取得できる。

[Excel][VBA]SubとFunctionの違いとPublicとPrivateの違い

VBAを書いているとSubとFuctionというのが出てきますがイマイチ違いがわからなかったのでまとめます。

結論から言うと、以下の通りです。(※この記事は標準モジュールでの記述での話です)
マクロの実行ユーザー定義関数戻り値
Sub表示される表示されない返すことができない
Private Sub表示されない表示されない返すことができない
Function表示されない表示される返すことができる
Private Function表示されない表示されない返すことができる
どこに表示させたいかで使い分けもできますが、表示させない(Privateの)場合は
Sub と Function のどちらを使ってもあまり変わりません。

意識としては Sub は意味や内容がひとまとまりになっている処理を、
Function は汎用性の高く、そのまま移植できる処理を記述するものだと思っておけば良いと思います。

おすすめ書籍
できる逆引き Excel VBAを極める 勝ちワザ700
2010/2007/2003/2002対応 (「できる逆引き」シリーズ)

国本 温子
インプレスジャパン
発売日:2012-02-09

2012/04/13

[競技プログラミング][C言語][AOJ10030]Search I

AIZU ONLINE JUDGE http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10030

Search I

n個の整数を含む集合Sと、q個の異なる整数を含む集合Tを入力とし、
Tに含まれる整数の中でSに含まれるものの数Cを出力するプログラムを作成せよ。

Input

1行目にn、2行目にSを表すn個の整数、3行目にq、4行目にTを表すq個の整数が与えられる。

Output

Cを1行に出力せよ。

Constraints

n ≤ 100, q ≤ 100 とする。
回答:AOJ/vol100/AOJ10030.cpp at master · wada811/AOJ
個数がそんなに大きくないので適当にループで総当りでも大丈夫。

それではまた明日。

2012/04/12

[競技プログラミング][C言語][AOJ10029]Sort II

AIZU ONLINE JUDGE http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10029

Sort II

与えられたn個の数字を昇順に並び替えて出力するプログラムを作成せよ。

Input

1行目にnが与えられる。2行目にn個の数字が空白区切りで与えられる。

Output

昇順に整列したn個の数字を空白区切りで1行に出力せよ。

Constraints

nの値は1,000,000以下と考えてよい。
回答:AOJ/vol100/AOJ10029.cpp at master · wada811/AOJ
問題文はSort Iと同じだが、nの値は1,000,000以下と大きくなっている。
バブルソートでは実行時間が長すぎてタイムアウトするので
より速いソートアルゴリズムの採用が必須。
クイックソートもちゃんと使うのが初めてなので、C言語 qsort.クイックソートとかを参考にした。

それではまた明日。

2012/04/11

[競技プログラミング][C言語][AOJ10028]Sort I

AIZU ONLINE JUDGE http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10028

Sort I

与えられたn個の数字を昇順に並び替えて出力するプログラムを作成せよ。

Input

1行目にnが与えられる。2行目にn個の数字が空白区切りで与えられる。

Output

昇順に整列したn個の数字を空白区切りで1行に出力せよ。

Constraints

ただし、nの値は1000以下と考えてよい。
回答:AOJ/vol100/AOJ10028.cpp at master · wada811/AOJ
まずは単純にバブルソートを書くだけ。
実はちゃんとバブルソートを書いたの初めてだった。

それではまた明日。

2012/04/10

[競技プログラミング][C言語][AOJ10027]Card Game

AIZU ONLINE JUDGE http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10027

Card Game

太郎と花子がカードゲームをする。二人はそれぞれn枚のカードを持っており、nターンの勝負を行う。
各ターンではそれぞれ1枚ずつカードを出す。
カードにはアルファベットからなる動物の名前が書かれており、辞書順で大きいものがそのターンの勝者となる。
勝者には3ポイント、引き分けの場合にはそれぞれ1ポイントが加算される。

太郎と花子の手持ちのカードの情報を読み込み、ゲーム終了後のそれぞれの得点を出力するプログラムを作成せよ。

Input

一行目にカードの数nが与えられる。続くn行に各ターンのカードの情報が与えられる。
1つ目の文字列が太郎のカードに書かれている文字列、2つ目の文字列が花子のカードに書かれている文字列である。

入力で与えられるnが1000を超えることはない。また、与えられる文字列の長さは100以下である。

Output

1つ目の数字が太郎の得点、2つ目の数字が花子の得点として1行に出力せよ。
2つの数字の間に1つの空白を出力せよ。
回答:AOJ/vol100/AOJ10027.cpp at master · wada811/AOJ
ただの文字列比較で特に何も面白みはないかな。

それではまた明日。

2012/04/09

[競技プログラミング][C言語][AOJ10026]Standard Deviation

AIZU ONLINE JUDGE http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10026

Standard Deviation

n 人の学生を含むクラスでプログラミングの試験を行った。それぞれの得点をs1, s2 ... snとしたときの、標準偏差を求めるプログラムを作成せよ。

得点の平均値をmとすれば、分散α2は以下の式で得られる:

α2 = (∑ni=1(si - m)2)/n

分散の正の平方根が標準偏差αとなる。

Input

複数のデータセットが入力として与えられる。各データセットは以下の形式で与えられる:

学生の数 n
s1 s2 ... sn
n が 0 のとき入力の終わりとする。

入力で与えられるnが1000を超えることはない。

Output

各データセットに対して、標準偏差を1行に出力せよ。ただし、0.0001以下の誤差があってもよい。
回答:https://github.com/wada811/AOJ/blob/master/vol100/AOJ10026.cpp
標準偏差の式がわかっているので、それに合わせてプログラムを組むだけ。
平均を出す時のキャストは片方だけでも良かったんだっけな。
計算時に大きい方の型に自動でキャストされるんだったような気がする。

それではまた明日。

2012/04/08

Bloggerのページ機能と記事一覧を表示する方法

ブログタイトルとブログ説明の下にメニューバーを設置しました。

これはBloggerの「ページ」機能を使ったものです。
Blogger管理画面の「ページ」を選択して、
プルダウンメニューからウェブアドレスを選択して下さい。
ページタイトルとURLを指定すればメニューバーにそのURL先へのリンクが作成できます。

ここに記事一覧を表示するページを作成します。
一番簡単な方法は Google Reader に飛ばしてしまうことです。
ユーザーがGoogleアカウントを持っていれば
Google Reader で記事一覧を表示することができます。
購読を促しつつ、記事一覧の表示とクリックしたら記事内容を Google Reader で表示できるという合わせ技です。

設定するURLの例は以下の通りです。"wada811"の部分を各自のIDに変更して下さい。
http://www.google.co.jp/reader/view/feed/http%3A%2F%2Fwada811.blogspot.com%2Ffeeds%2Fposts%2Fdefault

追記:削除しました。

2012/04/07

[Excel][VBA]行や列の表示と非表示の切り替え

できる逆引き Excel VBAを極める 勝ちワザ700
2010/2007/2003/2002対応 (「できる逆引き」シリーズ)


国本 温子

インプレスジャパン

発売日:2012-02-09

Range("B2").EntireRow.Hidden = False '表示
Range("B2").EntireRow.Hidden = True '非表示
Rows(2).Hidden = False
Rows("2:2").Hidden = True
Rows("2:3").Hidden = False
Cells(2, 2).EntireRow.Hidden = True
Range("2:2").EntireRow.Hidden = False
Range("B2").EntireRow.Hidden = True

Range("B2").EntireColumn.Hidden = False '表示
Range("B2").EntireColumn.Hidden = True '非表示
Columns(2).Hidden = False
Columns("B:B").Hidden = True
Columns("B:C").Hidden = False
Cells(2, 2).EntireColumn.Hidden = True
Range("2:2").EntireColumn.Hidden = False
Range("B2").EntireColumn.Hidden = True