icpc2017国内予選に参加した話

※この記事は2017/07/22にて別の場所で書いていたものをこちらに移行したものです.

強い先輩(4年)と僕と一緒に始めた同期(3年)でチームsiguma.makkusuとして参加しました.

大会当日の様子

大会前

僕のMacでやるということになったので環境設定をしてた.大会会場は僕の所属するゼミ室で. プリンターの設定をしようと,Macのプリンターの設定に戸惑いながらも別のチームの強い先輩にアドバイスを貰ってなんとかセットアップ完了した.

そこでまさかの不具合発生.なぜかゼミ室のwi-fiに繋ぐとインターネットに繋がらないということが起きた. ゼミ室のwi-fiに繋がないとプリントアウトが出来ないので困ったのだけど,結局プリントアウトする時だけゼミ室のwi-fiに繋ぎ,それ以外の時は大学全体のwi-fiに繋ぐということで何とか行うことになった.

大会開始

まず,同期の子がA問題をPCで解き,僕はB問題を先輩はC問題を紙で解くことになった.

00:20 経過 A問題 AC

同期がA問題を通してくれたので,PCを僕が操作しB問題を実装することに. 全然B問題を理解できてなくて実装に苦労した.詰まってた頃にC問題を解いていた先輩ができたっぽいということで,PCをチェンジ.紙でもう一度考え直すことに.

しかし先輩もC問題がサンプルが通らなかったみたいでもう一度PCをチェンジ.これを3回くらい繰り返したと思う.

01:40 経過 B問題 AC

かなり時間がかかってようやくB問題をACする.この時点でかなり出遅れてしまったと後悔.文字列定数をしっかり理解してなかった模様.

01:54 経過 C問題 AC

先輩がC問題をACした.この時点で80位くらいで4完しないと予選通過できそうにないなぁと話してた. D問題を全員で考察.先輩が普通のDPだと無理だろうねと言ってた.僕は知識がなさすぎてどう処理していったらいいか分からず.

03:00 大会終了

結局D問題が解けずに終了.104位でした.

大会の感想

今年の4月から競技プログラミングを始めて,短い期間だったけどある程度の問題は解けるレベルになったと思う.今回はD問題を解けなかったけど来年は必ず解きたい.同じ大学の別のチームの人もすごく悔しがってたので,来年に向けて切磋琢磨しながら力を蓄えようと思う.

まずはAtcoderの過去問を解きまくるぞーって意気込んでる.AOJ-ICPCっていうサイトの問題も上から順に埋めるつもり.

来年は絶対国内予選通過するぞー!!

Duolingoを10日間やってみた感想

Duolingoとは

Duolingoは無料の教育ウェブサイトやアプリ、有料の資格試験を提供する言語教育プラットフォームである。2016年4月までに59言語に対応し、23言語向けに現在開発中である。 利用者がコースを受講する事で、同時にウェブサイトやその他文書の翻訳に貢献するように設計されている。 Web、iOSAndroidWindows Phone、Windows 8以降のアプリに対応し、世界中で約1億2000万人が登録した。

Duolingo - Wikipedia

このように,英語だけでなくかなり多くの言語に対応した学習システムです.

仕組みも面白く,

Duolingoでは学習を効果的に行うためにどう復習すれば良いのかを、機械学習を利用した記憶の忘却ペース予測によってユーザーごとに個別に判断し、確かな学習効果を上げているそうです。

gigazine.net

エビングハウス忘却曲線を元に人間の忘却ペースに合わせて問題を出題してるようです.

進捗

f:id:wheson:20170830154232j:plain

1日最低50XP(だいたい演習5回分)を進めていました.日によって50XPぴったりだったり100XPを越えたりしていましたが,毎日欠かさず進めていました.

効果

まだ10日間だけということもあって全くどうなのか分からないです.

しかし,出題される問題も

  • 英訳
  • 日本語訳
  • 単語問題
  • 日本語文から3つある英文の中で正しいものを選ぶ(複数答えあり)
  • 英文を聞いてその英文をそのまま書き出す
  • スピーキング(設定でOFFにしてる)

と,ただ単語から日本語を答える問題だけでないのがいいですね.

間違えた問題は何問か進めるともう一度出題され,全部答えるまで終了しません.

始めたキッカケ

面白いデータだと思ったのが,こちらのツイートのPDFにある

f:id:wheson:20170830161233j:plain

勉強の時間より、勉強の間隔が重要

この部分に驚きました.

ここのおかげで自分の中にあった,毎日これだけしなくてはいけないという縛りのようなものが解けたように思えます.

とにかく継続が大事

とりあえず1日5分しかできなくても,毎日続けてみたいと思います. 次は100日継続くらいにまたブログにあげようかな.

Progate Lv.100になりました.

現状

f:id:wheson:20170825143130j:plain

Lv.100はどれくらい?

現在はおすすめの学習手順(リンク)に従って進めてます.

進捗状況なのですが,Railsコースの6番目が終わったところです.

f:id:wheson:20170825143135j:plain

とはいえ,道場コースのHTML/CSSRailsもやってますので,おすすめコースのここでLv.100という訳ではないです.

まあ何が言いたいかというと,まだまだLv.100になっても初心者だなぁって感じることですね.

実際1周しかしてないので,HTML/CSSコースの内容が抜けつつありますし,定着させるには何度も周回しないといけないなって思います.

それと,進めてる途中でJavascriptコースが改装されたみたいで,これもまた進めないといけないです.

とりあえずおすすめ1周目を終わらせて,HTML/CSSコースを最後まで終わらせたらクラウドソーシングでお仕事を見つけようかなって思ってます.

Progate凄く楽しいのでおすすめです.

クリップボードに端末上でコピーする方法

はじめに

競技プログラミングの時にいつも端末でコンパイル・テストケースの確認をして、テキストエディタから範囲選択をしてクリップボードに保存していました。(Ctrl-a から Ctrl-cのような感じ)

今回、neovimにエディタを変更したことで、ふと思ったことが、実行確認を端末で行なった後、そのままコマンドでクリップボードにテキストを保存できないのだろうかと。

見つかった方法

Mac OS Xの場合は

cat hoge.cpp | pbcopy 

Linuxの場合は

cat hoge.cpp | xsel --clipboard --input 

Windowsの場合は

cat hoge.cpp | /dev/clipboard

と端末で実行することによって、クリップボードに保存されるとのこと。私の環境ではMac OS Xでのみ確認済み。

これからはこの方法で競プロをやってみようと思います。

追記)Mac OS Xの場合は

pbcopy < hoge.cpp 

で出来たみたいです… ほかの環境ももっと短いコードありそうだなぁ…

こちらの記事を参考にしました

標準出力をクリップボードにコピーする pbcopy , macosx,ubuntu,cygwin でそれぞれ使う - my-notebook