久しぶりの投稿です。
最近はあまり時間がとれてないので(忙しいわけではなく、やる気が出ない)、前からかなり空いちゃいました。
さて、先日(7/5)に京都大学プログラミングコンテスト2014がありました。
せっかくなので参加してみました。
難しい問題ばかりなので、ほとんど点数はとれなかったのですが、面白そうな問題ばっかりでした。
ゆっくり時間をかけてでも全部解けば相当実力がつくのでは・・・?ということで、ゆっくりゆっくりやってみようと思います。
しかもなるたけ、schemeで。
久しぶりの投稿です。
最近はあまり時間がとれてないので(忙しいわけではなく、やる気が出ない)、前からかなり空いちゃいました。
さて、先日(7/5)に京都大学プログラミングコンテスト2014がありました。
せっかくなので参加してみました。
難しい問題ばかりなので、ほとんど点数はとれなかったのですが、面白そうな問題ばっかりでした。
ゆっくり時間をかけてでも全部解けば相当実力がつくのでは・・・?ということで、ゆっくりゆっくりやってみようと思います。
しかもなるたけ、schemeで。
さて、AtCoderで毎日やるのもいいんですが、こう、なにか蓄積されるような?感じがいいなということで、別のサイトも使いはじめました。
かの有名な会津オンラインジャッジ(AOJ)とProject Eulerです。
ただ、いまはProject Eulerはなんか問題があったとかで繋がらないようなので、こっちのサイトを見て解いています。
ペースとしては2つとも1日1問です。
なるべく途切れることのなく、毎日続けていけたら、と思っています。
ちなみにAOJではJava、Project EulerではSchemeで解いています。
AtCoder Beginner Contest #010に参加しました。
A〜C問題は簡単に解けたのですが、D問題がさっぱり・・・
この辺が、1つの壁のような気がします。
超えるには、まだまだ経験も必要ですし、お勉強も必要なような。
さて、今回解けた3問は全てschemeで解きました。
続きを読む今日も今日とて、一番得意な?言語であるschemeで、ちょくちょくAtCoderの問題を解いています。
さて、今回はタイトルの通り、AtCoderのシステム内でなんとかschemeをコンパイルして使う、ということについてです。
それをやろうと思ったきっかけはこの問題。
AtCoder Beginner Contest #06 B問題 トリボナッチ数列
続きを読むschemeは関数型言語なので、配列よりも、再帰的に定義されているリストの方が便利です。
そのため、基本的にschemeの本やら解説で、schemeだとこの問題はこんな風に、という例ではたいていリストが使われます。
しかし、リストは配列に比べ、値へのアクセスが遅いです。長さをnとするとO(n)ですね。配列ならO(1)です。(間違っていたらすみません)
その分、削除やら追加などは速いのですが。
よって、動的計画法みたいなのをするときは、リストではなく配列を使いたいところです。
もちろんschemeにも配列にあたるものとして、ベクトルというものが提供されています。
これまで、配列を使うべきな感じの問題は、なんとなくschemeではなくJavaで解いていました。
なんとなくというか、schemeでベクトルの使い方をよく理解していなかったので、避けてきました。
破壊的操作がどうとか、そういうのです。
しかし、とりあえずやってみようということで、今回はschemeのベクトルを使って何かしら問題を解いてみようと思いました。
最近、AtCoderの時間に何かしら用事があって、2回連続で参加できていません。
出来れば、毎週やりたいのに・・・
やはり、良いにしろ悪いにしろ、自分の実力を示す結果が出てくる、ってのはモチベーションを高めてくれます。
今週末もキツそうなのですが、なんとか参加したいものです。
最近、毎週コンテストが開催されていますね。本当にすごいです。
さて、そんな感じなので一番最近参加したのはAtCoder Regular Contest #023です。
1問しか解けませんでした。2問目の問題文を読み間違え?、3問目にとりかかりました。
そしてJavaでコードを書いて提出したのですが、
毎日プログラミングやってるわけではないので、連日の更新はやはり難しいですね。
とりあえず、なんか頑張って解いたものとして、Atcoder Bigenner Contestの#005のC問題について書きます。
問題は下のURLのものです。
http://abc005.contest.atcoder.jp/tasks/abc005_3
続きを読む