INSTALL HASKELL for OSX Yosemite

環境は OSX Yosemite 10.10.1 です。
brewのインストールなどは済んでいるものとして進める。

How to install

少し前までは

$ brew install haskell-platform

でインストール可能だったが、現在はできない。

$ brew install haskell-platform
Error: No available formula for haskell-platform
We no longer package haskell-platform. Consider installing ghc
and cabal-install instead:
  brew install ghc cabal-install

A binary installer is available:
  https://www.haskell.org/platform/mac.html

なので以下の手順でインストール

$ brew install ghc
~~
$ brew install cabal-install
~~
$ cabal update
~~
$ cabal install cabal-install
~~

何をインストールしているのか、どんな構造でHaskellを管理しているのかについては以下の記事が参考になる。
Haskellのパッケージ管理について調べてみた - りんごがでている


How to use

まずはインタラクティブインターフェイスコンパイルのコマンドから。

$ ghci
GHCi, version 7.8.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> 1 + 1
2
Prelude> 2 ^ 3
8
Prelude>:q
Leaving GHCi.

このようにしてHaskellに対してインタラクティブインターフェイスを実行可能。

続いてコンパイル。以下のようなファイルを用意。

helloworld.hs

main = putStrLn "Hello World!"

以下ようにしてコンパイル

$ ghc helloworld.hs
[1 of 1] Compiling Main             ( helloworld.hs, helloworld.o )
Linking helloworld ...

実行ファイル他、ファイルが吐きだされるので実行

$ ./helloworld
Hello World!

とりあえず、こんな感じです。

codeforces Round #176

1/22(木) TPC練習会

A問題

Problem - A - Codeforces

めっちゃ汚い

#include<iostream>
#include<string>

using namespace std;

int main()
{
  string in[4];
  for(int i=0;i<4;i++){
    cin >> in[i];
  }

  for(int i=0;i<3;i++){
    for(int j=0;j<3;j++){
      int cnt = 0, cnt2 = 0;
      if(in[i][j] == '#')cnt++;
      if(in[i+1][j] == '#')cnt++;
      if(in[i][j+1] == '#')cnt++;
      if(in[i+1][j+1] == '#')cnt++;
      if(in[i][j] == '.')cnt2++;
      if(in[i+1][j] == '.')cnt2++;
      if(in[i][j+1] == '.')cnt2++;
      if(in[i+1][j+1] == '.')cnt2++;
      if(cnt >= 3 || cnt2 >= 3){
        cout << "YES" << endl;
        return 0;
      }
    }
  }
  cout << "NO" << endl;
  return 0;
}

B問題

Problem - B - Codeforces

二分探索

#include<iostream>
#include<vector>
#include<algorithm>

typedef long long ll;

using namespace std;

int main()
{
  ll n, k;
  cin >> n >> k;

  ll l=0,r=k-1,mid,ans=-1;

  while (l<=r) {
    mid = (l + r)>>1;
    if ((2*k-mid-1)*mid>=2*n-2)r=(ans=mid)-1;
    else l=mid+1;
  }
  
  cout << ans << endl;  
  return 0;
}

C問題

Problem - C - Codeforces

n=4,5,6とかその辺を手元シミュレートでパターンが得られる。

#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#define mp make_pair

using namespace std;

int main()
{
  int n;
  cin >> n;
  if(n%4>1){
    cout << -1 << endl;
    return 0;
  }

  int rem = n%4;

  for(int i=0; i<n/4; i++){
    cout << n-2*i-1 << ' ' << 1+2*i << ' ';
  }
  if(rem == 1){
    cout << n/2+1 << ' ';
  }

  for(int i=n/4-1; i>= 0; i--){
    cout << n-2*i << ' ' << 2+2*i << ' ';
  }
  cout << endl;
  return 0;
}

DEはいつか挑戦する。

CODE THANKS FESTIVAL B日程 参加記

CODE THANKS FESTIVAL B日程 参加してきました。


女子中学生に誘われたし仕方ないね。

f:id:everysick:20141215094505j:plain

家を出発してからがCodefes

めっちゃ寒い


到着

眠ってたら着いた

会場 IN

思ってたより軽いふいんき(何故か変換できない)で「おーっ!」とか言ってた。
というのもJOIとPCKって堅苦しい会場ってイメージが強かったから。
適当に受付を済ませて叙々苑の焼き肉弁当をもらう。

生chokudai

係員にも"ちょくだい"って呼ばれてて、一瞬本名が"ちょくだい"だと疑ってしまった。

セキュリティ意識が低い


chokudaiさんの大げさな「オープンコンテストには参加しないでください!」
を聞きつつ焼き肉弁当を食べる。美味しい。

競技開始

着いて弁当食べてたらあっという間に競技時間になった。

  • 問題数は8問
  • 3時間
  • WAペナルティは無し。
  • 1~10位には焼き肉招待
  • 5完でトートバッグ
  • 各問題のFAはAmazonGift券

競技への心意気↓

で、12:00に競技開始。

開始から12秒後
f:id:everysick:20141215102208p:plain


やったぜ。

FAとったら風船もらいました。


結果は
◯◯◯◯◯◯××
6完20位でした。
Fで迷わなければもうちょい上に行けたかなーとか。
Gのバグは辛かった。
コードはAtcoderにあります。

表彰・解説

AのFAでAmazonGift券hoge円分もらいました◝('ω'◝)
一人で3FAとった人とかいてガチプロって感じだった・・・。

もうchokudaiさんが「ドコドコドコドコ」言ってたのしか覚えてない。
Hの解法聞いてうんうんなるほどなるほど。

懇親会

寿司!ピザ!肉!
正直弁当食べてたのでそんなにお腹空いてなかったけど、折角なのでたくさん食べた。

一方おしょーゆさんは

食欲よりDDR欲が勝ったっぽい(適当)

書道コーナーがあったので、CodeThanksFestival っぽい書道してきました。


そんな感じ。

家に帰るまd・・・?

@0x_osyoyu に誘われて来てしまった・・・。
英語の課題が終わってないとはなんだったのか。


実際ハッピー

家に帰るまでがCodefes

しぼんじゃった。
f:id:everysick:20141215103727j:plain

おわりに

CodeThanksFestivalお疲れ様でした。
またRECRUIT・Atcoderの皆様、ありがとうございました。
変わった雰囲気のコンテストで楽しかったです(小並感)

来年は本選に行きますね。