code jam Qualification Round 2018に挑んだ

細々とにわか競技プログラミング勢として気まぐれにコンテスト参加してるけど、初めてcode jamに参加してみた。

結果は、64点で無事予選通過ですることができた。 f:id:mizunomi32:20180408122133p:plain

1. Saving The Universe Again

この問題は、「S」(Schott)と「C」(Chage)の文字列が与えられる。チャージするとそれ以降にショットするときのダメージが2倍になるので、隣り合った文字を入れ替えることができるので、最小の回数で任意のダメージ以下になるように入れ替える問題。

方針としては文字列の後ろから走査していき、「SC」の並びがあれば入れ替えてダメージ計算し、再度後ろから捜査し直すみたいなことをした。

2. Trouble Sort

この問題は、問題で示されたソートを実行して、どこで何番目の要素までソートできているのか判定する問題。

愚直にそのまま実装すれば、とりあえず点数もらえたので1番かんたんだった気がする。 高得点をもらうには入出力を高速化しないと厳しそう。

3. Go, Gopher!

Gopherに命令して任意のサイズ以上の矩形を作る問題。ただ、Gopherが言うこと聞かないときたまにある。

方針としては、とにかく3×3の正方形を塗りつぶすのをひたすら縦に繰り返していった。

4. Cubic UFO

中に浮かぶ立方体型のUFOを回転だけで影を任意の大きさにする問題。

高得点を目指さなかったら、影の面積が1.0000~1.414213なので1つの軸を回転させるだけでいい。結果的には、2分探索で回転角いじって面積を近づけていった。   

【2017年度版】Mac 環境


普段、Macで使って使ってるソフトを備忘録的にまとめた。

 

Homebrew

みんな大好き『homebrew』です。linuxのaptとかyumみたいソフトをインストールできる。
これがないと何も始まらない…
 

emacs/vim

好みに応じて使うテキストエディタエディタ。

atom

これもテキストエディタ拡張機能が豊富で最近はgitの機能も統合されているとか
 

zsh

使いこなせば最強のシェル。
元からmacにインストールされているのでログインシェルに設定する。
$ cat /etc/shells // 入っているシェルの確認
$ chsh -s /bin/zsh // ログインシェルをzshに変更

 

iTerm2

ターミナルエミュレータmac標準のものに比べ機能が多彩で便利。
 

Chrome

有名なgoogleのブラウザ。
 

firefox

自称『自由なウェブブラウザー』。キツネが可愛い。
 

slack

ビジネス向けチャットツール。
 

LINE

誰もが知っているコミニケーションツール。
 
 

Goole 日本語入力

新しい言葉の変換にもすぐに対応してたり便利。

Mac でOpenCVを使う

授業でVisualStudioでOpenCVを使う授業のために、Macで課題をやりたいと思ったから使い方をまとめた。

インストール

Homebrewを使ってインストールした。Homebrew入れてなければここを参考に入れる。

brew tap homebrew/science 
brew install opencv


使い方

環境変数のPKG_CONFIG_PATHを設定してコンパイル
bashrcとかzshrcで設定しておくと便利。


export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
g++ `pkg-config --cflags opencv` `pkg-config --libs opencv` FILENAME



AtCoder ABC #056

いい加減に競技プログラミングに力を入れようとc++でABCから説いていくことにした。
時間が合えばABC、ARCは参加するかも...

A,B,C問題については問題なく解けたがD問題はなんとなくの方針だけしか思いつかなかった。

A問題 HonestOrDishonest

正直者と嘘つきの問題。
入力が4通りしかないので愚直にプログラム書くと終了。

B問題 NarrowRectanglesEasy

2つの長方形を合体させる問題
問題の図では1つ目の長方形が手前、2つ目の長方形が奥になっているが、逆のパターンもありそうだったので考慮して考えた。
既に合体してる場合と前の2つの場合の3つに分けて処理をした。

C問題 Go Home

徐々に移動速度が上がる中、xまで何秒で移動できるかみたいな問題。
順番に足していっても時間的に間に合うだろうということで愚直な方法で解いた。

D問題 No Need

ある数以上にするのに、不要な数はいくらかみたいな問題。
方針的には2分木でグニョグニョするのが間違ってないのだろうが完全に解けてない。

もう少し実力が付いてからD問題はまた解くだろう。


年が変わるようなので2016年を振り返ってみる

世間では今日が大晦日で賑わっているらしいので新年を迎えるほんの少し前に今年1年を振り返る。

セキュキャン九州

去年参加したセキュリティキャンプ九州in福岡にご縁があり、チューターとして参加させていただいた。ラズパイ30台近くを使った演習環境の設営や微力ながらサポートする中で色々学ぶ事もあり、去年参加した以上に為になった。

IVRC(国際学生対抗バーチャルリアリティーコンテスト)

大学に入って初のチームでの開発をした。当初は画像処理担当のつもりだったけどいつの間にかハードにも口出したりで担当外の部分にも茶々入れたりした。VR開発特有の機器依存などトラブルに見舞われることが多かったけどトラブルシューティング能力を磨けたww

大ざっぱに振り返るとこの間2つだけどIVRCはほぼ半年近く開発したり、大学のプロジェクトでは副代表として活動したり去年とは比べものにならない程忙しかった。来年は頼りないけど大学のプロジェクターの代表としメンバーを引き連れ頑張って行きたい。あと、そろそろ競プロに本腰入れてかんばりたい!
SEの皆さんうるう秒対応がんばれ

Gentoo Linux とArch Linux

普段からArch Linux使いですが何度もGentoo Linux に乗り換えをしようか迷うことがある。 まずは、それぞれの特徴から。

Arch Linux

一言で言うと
シンプル、軽量なディストーション

です。 つまり、最小限の状態からシンプルにカスタマイズ出来ます。

一方Gentoo Linux

Gentoo Linux

同じく一言で言うと
Gentoo is all about choices.(>Gentooとは選択です。)

です。これは、インストールするソフトを選ぶだけでなくコンパイル時にしか選べないオプションも含めての選択。つまりシステムすべてをコンパイルしてインストールします。


Arch Linux vs Gentoo Linux

Arch Linuxの長所は
  • シンプル
  • 最新のバージョンをすぐに使える
  • ソフトのインストールがGentooより早い
一方Gentoo Linuxの長所は
  • 環境に合わせてコンパイルするのでカスタマイズが効く
  • パッケージ管理外のソフトウェアも、追加のソフトウェアのインストール無しで簡単にインストールできる場合が多い
  • システムが壊れても力技で...
っとどちらも他のディストーションに比べ個性的

最強のシェルこと「zsh」の最低限の設定を書き直してみた

ほとんどのLinuxではデフォルトのシェルとしてBashを使えたりWindows10でもBashが使えるようになってます。しかし、デフォルトシェルを変更する人も多くいます。その中でも補完機能が優れていて最強のシェルとも呼ばれている「zsh」を使っており設定ファイルが醜くなったので1から書き直してみた。

.zshrc


まずはzshの設定ファイルである.zshrcからっと言いたいが設定ファイルが長くなると管理し難いので.zshrcは他のファイルに書いた設定を読み込むようにするだけにした。

 

ZSHHOME="${HOME}/.zsh.d"
if [ -d $ZSHHOME -a -r $ZSHHOME -a \ -x $ZSHHOME ]; then
for i in $ZSHHOME/*; do
[[ ${i##*/} = *.zsh ]] &&[ \( -f $i -o -h $i \) -a -r $i ] && . $i
done
fi


これはホームディレクトリの.zsh.dにある拡張子が.zshから始まるファイルよ読み込むようにしている。

.zsh.d/preferences.zsh


ここには環境設定関連の設定を書き込んでいく。今回は最低限の設定なので履歴と自動補完についてだけ記述する

#############################
#
# 環境設定
#
#############################
# PATHの設定
export PATH="${HOME}/bin;$PATH"
# 履歴ファイルの保存先
export HISTFILE=${HOME}/.zsh.d/zsh_history
# メモリに保存される履歴の件数
export HISTSIZE=1000
# 履歴ファイルに保存される履歴の件数
export SAVEHIST=100000
# 重複を記録しない
setopt hist_ignore_dups
# 開始と終了を記録
setopt EXTENDED_HISTORY
# 自動補完の有効化
autoload -U compinit; compinit



これで最低限の履歴保存とzshの長所である補完機能を一応使えるようになる。

他の設定はまた気が向けば書くかも...