k242hd's memo

RubyとAndroidと時々TopCoder

SRM604 Div2 easyをPythonで解いてみた

今回も本番のSRMには参加しなかったです。

ということで、Python歴0秒の私がeasyを解いてみました。 (えっ?

 

ざっくりと問題の内容を説明すると、

  • 複数の文字列が与えられます
  • その中の文字列1つに対して任意の場所で二分割にします
  • 二分割にした文字を前後入れ替えて連結します
  • 生成した文字列が与えられた他の文字列と等しいかどうか確認
  • ↑の操作で等しくなるペアの合計を返します

説明不足かも知れませんが、こんな感じでしょうか。

 

自分の書いたコードは以下の通り。

SRM604 Div2 easy

 

Pythonのタプルとかfor文の書き方がわからなかったので、調べつつ書きました。

処理自体は普通に3重のfor文で判定してるだけですね。

とりあえず解いてみただけのコードなのでもうちょっとスマートに書く方法があるはず...

 

Pythonらしいコードを書けるようになりたいですねー。

今後も練習としてPythonで解いてみようと思います。

 

AndroidAnnotations導入方法

Androidをネイティブコードで開発しようとすると、何かと面倒で作りづらいと感じることが多いと思います。

そんな時にはAndroidAnnotationsの出番です。

今回は、eclipseを対象とした導入方法をご紹介します。

 

 

まず、github上のサイトからAndroidAnnotations3.0をダウンロードしましょう。

落としたファイルを解凍して中身を見てみると、

f:id:k242hd:20140112171432j:plain

こんな感じになっていると思います。(今回は上の2つだけ使います)

 

適用したいプロジェクトの直下に適当な名前のフォルダ(compile-libsとします)を作り、

先ほどの2つのjarファイルを以下のように配置します。

f:id:k242hd:20140112172738j:plain

libsのフォルダは元々あるので、そちらにapiを名前に含むjarファイルを置きます。

 

続いてeclipse側での設定です。

プロジェクトのプロパティからJavaコンパイラーの項目を開きます。

f:id:k242hd:20140112173721j:plain

コンパイラ準拠レベルが 1.6 となっていることを確認しましょう。

1.6でない場合は1.6に変更します。

 

Javaコンパイラー内の注釈処理の項目を開いて、

「プロジェクト固有の設定を可能にする」にチェックをつけます。

f:id:k242hd:20140112174317j:plain

 

 

次に、注釈処理内のファクトリー・パスの項目を開きます。

「プロジェクト固有の設定を可能にする」の項目にチェックがついていない場合はチェックをつけます。その後、「Jar追加」から先ほどcompile-libs内の配置したjarファイルを選んで追加します。

Jarファイルが追加されたことを確認して、右下の適用を押して一旦プロジェクトをビルドしましょう。

f:id:k242hd:20140112175932j:plain

 フォルダやファイルが見つからない場合は、一度プロジェクトをリフレッシュしてみると、見つかるようになるかもしれないです。

 

最後に、プロパティのJavaのビルド・パスの項目のライブラリーを開きます。

先ほどと同じように、「Jar追加」からlibs内に置いたjarファイルを追加して導入完了です。

f:id:k242hd:20140112180658j:plain

 

プロジェクト内の適当なjavaファイルを開いて、「@E」と押してコンテンツ・アシストしたときに「@EActivity」や「@EBean」などの候補があればOKです。

f:id:k242hd:20140112181505j:plain

 

 

次回以降は「@EActivity」などのアノテーションの使い方について解説しようと思います。

 

息抜きにSRM 603 Div2 easyを解いてみた。

本番は参加しませんでしたけど、翌日に解いてみました。

使用した言語はJava(これしか使えない)

 

問題文はこちらから。

簡単に説明すると、

  • Stringの文字列 s が与えられます
  • 返す文字列を t とします
  • sの長さが奇数だったら、sの真ん中の文字をtの末尾に追加します。
  • 偶数だったらsの中央の2つの文字を比較して、アルファベット順で若い方をtの末尾に追加します。
  • tの末尾に追加した文字をsから削除します
  • sの長さが0になるまで上記の操作を繰り返し、tを返します

こんな感じですね。

 

自分が解いた結果は以下の通り。

SRM 603 Div2 easy

 

ちょっとカッコつけようと3項演算子を使った結果、ただ単にわかりにくいだけのコードに...

もうちょっとスマートに書けないかなー。