模擬国内予選 2015 参加記

チーム hinakochan でした。B2の後輩(以下i)とふたりで。

開始15分前

b「どうやら間に合ったようだな」

開始直前

b「OSまだ入ってない」

開始直後

b「ところでs氏は来るのかな」(こなかった

b「プリンタ見えないんだけど」
b「研究室で刷ってくる」

b「ドライバ入ってなかった……」
b「研究室のマイマシンで刷るか」

b「刷った」
i「Aとりあえずもらいます」
b「じゃあCもらうね」

25分

i「いけそうです」
b「がんばれー」(まだC書いてる

38分

i「できました」
b「(提出方法を説明する)」

A AC

ib「やったぜ」

i「Bいきます」

90分

i「解法できましたがここどうしたらいいかわかんないっす」
b「んじゃ書くわ」(Cをそっと置いて
i「先眺めときます」

95分

b「やばいばぐった」

100分

b「いきますよー」

B AC

b「Cに戻ります」

120分

b「Cきっついわ」
i「Eわりと簡単っぽいけど15!でつらそうです」
b「実装できるならいいんだが」
i「つらい」
b「そうだな」

i「Fこれ(BNF)わからないんですが」
b「あーうん難しく考えなくていいと思うが」

130分

i「Dこんな感じでいけそうです」
b「じゃあ書くわCつらいし」

150分

b「Dのこれだめじゃん?」
i「まじすか」
b「まあ書いてみるか、C書ける気しないし」

170分

b「Dだめだろこれ」
i「まじすか」
b「だめっすね」

そのまま終了

環境整備とかもそうだけど、STLの使い方索引を引く方法持っとかないとアレがないで死にそう。

まだC通せてない……

Macbook Pro (mid 2012) のHDDを交換しようとして大失敗した話

HDDがどうのこうのと言っていますが、原因はHDDの接続に使っていたフラットケーブルの破損でした。(2015-05-21)

概要はタイトルの通りである。

得られた教訓

  • 相性保証は確認済みでない限りちゃんとつけよう

事の顛末

突然起動しなくなるMBP

普段から2日に1回はフリーズするような子だったので、その日もいつもどおりにフリーズに対処すべく電源を落とした結果がこれである。

機嫌がいいときもある

翌日は起動できたのだが、しばらく放置していたらエラーで再起動していて、そのまま上記の状態に戻ってしまった。 かと思えばまた起動できてふつうに使えたりと、いやーな状態であった。

困ったときのGenius Bar

こういうときは速やかにGenius Barに持ち込むのが上策である。行った結果、HDDのセクタ異常ということがはっきりした。

純正品に交換するのもバカらしい(ジーニアス談)ので自前で交換を行うことにする。

HDD購入

Tsukumoで安かったWD7500BPVXを購入した。容量は以前と同様、回転数も同じ。SATA3対応で高速化は見込めるかな程度に思っていた。

ここで一切の保証をつけなかったことが最大の失敗であった。

換装

T6のトルクスドライバーは用意がなかったので借りた。特に困ることもなくサクッと交換。USBからOSXのインストールを試みるも、なぜか換装したはずのHDDが表示されない。ははっ、まさかね。

試行錯誤

USB経由で繋いでみる

普通に認識された。HDDに問題はないと判断。

直結してみる

やっぱりだめ。

セクタ異常になった元のHDDをUSBで繋いでみる

当然のように認識できた。

元のHDDをMBPに戻してみる

起動はできなかったけどDisk Utilityからは確認できた。

まさかOS入ってないから見えないとかないよね

そんなことはなかった。USB経由でインストールは無事に完了できたが、MBPに入れるとやっぱり見えない。


これもう相性問題だと思うしかないよなあ。とはいってももうお金ないんですよね……安物買いの何とやらではないけど失敗した感。バックアップも万全なはずなので、安い授業料で済んだとは思いたいが。

あとこの換装あたりの作業中にiPhone落として画面の割れが進行しました。

SRM 627 Div2 oo- unrated -> 1176

するめ。初参加。challangeとかのことは一応知ってる状態。

英語の問題をどれだけ早く読み解けるかという壁が立ちはだかった。読めても今のところは1000点はだめだっただろうな。

250 ManySquares

概要

いろんな長さのまっすぐな棒がある。組み合わせて作れる正方形の最大数。ただし1辺を構成するのに1本しか使えない。

入力

  • 棒の長さの列sticks
    • 列の長さは1..50
    • 棒の長さは1..1000

出力

  • 作れる正方形の数(非負整数)

解法

結局同じ長さの棒4本に対して正方形1つになるので、端から集計していって、4本毎に個数に1足す。

class ManySquares {
  public:
  int howManySquares(vector <int> sticks) {
    map<int,int> hash;
    int ans = 0;

    rep(i,sticks.size()){
      hash[sticks[i]]++;
      if(4 == hash[sticks[i]]){
        hash[sticks[i]] = 0;
        ans++;
      }
    }

    return ans;
  }
};

500 HappyLetterDiv2

何かのゲーム。最初にフィールド内に何人かプレイヤーがいて、各プレイヤーが英小文字をひとつずつ持っている。各ターンに異なる文字を持つプレイヤーが2名選ばれてフィールドから除外する操作を、選べなくなるまで繰り返す。残ったプレイヤーがいるなら、プレイヤーの持っている文字は全て同じになるので、その文字が勝利文字。いなければ、勝利文字はない。

最初の段階でゲームがどのように進行しても必ず勝利文字になる文字が特定できるらしい。できるならその文字を、できなければピリオドを返せ。

入力

  • 最初にフィールド内にいるプレイヤーの文字を結合した文字列letters。
    • 文字列長は1..50
    • 各文字は'a'..'z'

出力

  • 必ず勝利文字になるような文字が存在するなら、その文字。しなければ、ピリオド。

解法

過半数を占める文字があればそれが勝利文字、なければ選び方によって変動するのでピリオド。半分丁度ではプレイヤーが残らないので勝利文字にならない。

class HappyLetterDiv2 {
  public:
  char getHappyLetter(string letters) {
    map<char,int> hash;
    int maxCount = 0;
    char mostPopular = '.';

    rep(i,letters.size()){
      hash[letters[i]]++;
      if(maxCount<hash[letters[i]]){
        maxCount = hash[letters[i]];
        mostPopular = letters[i];
      }
    }

    if(maxCount <= letters.size()/2){
      return '.';
    }else{
      return mostPopular;
    }
  }
};

1000 BubbleSortWithReversals

概要

  • 非負整数列Aをバブルソートするときに、swapする動作の回数を最小にしたい。
  • ソートする前に次の操作をK回まで行ってよい。
    • Aの部分列の順序を反転する。ただし、各回で選ぶ部分列は独立であること。

入力

  • 非負整数列A
    • 長さは2..50
    • 各値は2..50
  • 自然数K

出力

  • swap操作の最小回数(非負整数)

解けてないので解けたら更新。

LTP08の話をすると見せかけた桃子の話

先日、LTPの個人曲について喋るニコ生をした。その時に私がした話をベースに書く。

ここに何が書いてあるか

LTP08のメンバーは充実した現実世界の生活をおくってきたけど、桃子は現実世界では友達もいなくて孤独に生きてきたから、LTP08のメンバーにならなかったのは残念ながら当然。これからがんばろう。

曲目の確認

LTP08にて何が描かれたか

LTP08のメンバーは、最年少の中谷育(10)、下から3番目の大神環(12)、矢吹可奈(14)、高槻やよい(14)の4名からなる。メンバー発表当時よりロリ組と話題になっていたのが、もう大分前のことに思える。

「ホップ♪ステップ♪レインボウ♪」が描くのは友達関係に関することだ。ひとりよりふたり、ふたりよりたくさんの精神で、友達を最大の宝としている。Bメロの歌詞は1番と2番で対応しており、友達関係につきものである喧嘩と和解を歌っている。何よりみんなで遊ぶことが楽しい、みんな一緒に外に飛び出そう、という歌。

「グッデイ・サンシャイン!」は中谷育の性質をよく表している。この年齢にしては増せている方で、子供扱いすることを嫌がり、何か任せられることに大人っぽさを感じてウキウキする一方、その内情は年相応の女の子である。こちらは、みんなと過ごすいつもの時間を踏まえた上で、ひとりで何かをする、みんなとは違うことをすることに、まわりのみんなに対する優越感を感じている。

「オリジナル声になって」は自分自身と向き合う。矢吹可奈の明るく前向きで努力家な一面をおさえながら、自身は何であるのか、何が自分自身であるのかを探し求める、青年期の課題に頭から突っ込んでいく歌になっている。*1

「ハートウォーミング」は家族の中の自分の存在を描く。高槻やよいの背景によく対応した歌詞になっているが、ここに歌われるのはまさしく、家族の中で母親にも似た頼られる位置にあって、その役目を全うする、年齢からは想像もつかないほどの強い母性の姿である。

「Good-Sleep, Baby」では、環の歌うすれ違いや可奈の歌う努力についてこれらを受容し、眠る間は大変なことは忘れて、ゆっくりおやすみなさい、とドラマパートでテーマになっていた「癒し」をイメージさせる。

現実世界の住人たち

4名とも、歌の内容は現実世界の人との関わりについて言及している。面々はみな現実世界に居場所を持ち、その中で生活を送ってきた。それぞれの曲に注目すれば、大事にしたいみんなという集団を認識し、その中でどう自分を認められたいか、そもそも自分とは何であるかを考え、自分が集団の中でどのような存在として振る舞うか、と段階を踏んで成長する子供の精神が浮かび上がってくる。

「Good-Sleep, Baby」は日中の現実世界での営みを踏まえた、夢の中での「癒し」を歌っており、あくまでメインステージは起きている間、現実の世界であることを印象づける。

やっと本題。

桃子はLTP08のメンバーにはなりえなかった

桃子がこのLTP08のメンバーと決定的に異なる点が、彼女は友人関係が壊滅的な状態にあり、更に両親との関係も良好とはいえない*2、というところである。LTP08の曲に見出した精神の発達を、桃子はどれもまともに経験できていないか、一般とはかけ離れた形で経験してしまっている。彼女には現実世界に居場所がなかったのだ。

桃子には、夢の中でまた会うような友達はいないのだ。現実にもいないのだから当たり前のことだ。だが彼女にとっても、夢の世界は強く意味のあるものである。

「デコレーション・ドリ〜ミンッ♪」に描かれる桃子の夢の世界

桃子は11歳、中谷育と大神環の間で、ミリオンスターズの中で2番目に若い。それでいてかつて人気子役であった経歴を持つ。アイドル以前から彼女は、演技の世界の人間であった。

夢の世界、つまり現実でない世界は、そもそもが桃子のメインステージなのだ。演技の世界ではどのような自分にもなることができる。それこそお姫さまだろうと構わない。おとぎ話でさえ叶えることができるのだ。実際は、それまでの現実の世界には「一緒に踊って」くれる人はいなかったのだが。

歌の中にも、夢の世界以外の話題は出てこない。仕事の場も遊びの場も夢の世界だった桃子は、現実世界に生きてきたLTP08のメンバーと一緒にはいられないのだ。

桃子を救済するLTP12、「ココロがかえる場所」

ではLTP12に入って桃子はどうなったのかというと、孤独だった桃子自身が既にかけがえのない現実の存在で、そのときがあったからこそ、踏み出した今を強く歩けるんだよ! と過去の自分に対する追認という形式で、問題をあるがままに自分に組み込んでしまう。今のアイドルとしての生活を現実世界における桃子自身の居場所とし、夢ではなく現実として、目の前のステージを楽しむことを欲するようになる。

これはある程度年齢を重ねた者からしか出てこない機転であって、LTP08にいるような子供たちからはなかなか得られないものだ。*3桃子自身、年齢にふさわしくない形で大人の世界に順応してしまっていて、桃子が何かしらの形で認めた大人の姿しか、彼女の心を打つことができなかったのだと思う。

LTP12のメンバーは何かしらの課題を乗り越えてきた、あるいは乗り越えようとする面々が並ぶ*4が、その人選は桃子の救済がひとつの大きな目的であったものと思う。

LTP12の話は、また改めてまとめる。

*1:曲としても夕暮れ時をイメージさせ、ノスタルジックな雰囲気を強く感じさせる。

*2:儚い夢の一滴 周防桃子』のカードテキストをはじめ、クリスマスのアイドルフィーチャリングのテキストなどより。

*3:ロコ(15)はこの意味で先んじている。可奈が悩みながらもずんずん進んでいくよりずっと早い速度で、こうありたいという自分像に向けて、考える前に手を動かしてさえいる。

*4:ロコだけは強烈にポジティブなモチベーションに思えるが、実際はどうなのか定かでない。

OS X Mavericksでsvn checkoutできなかったときにやったこと

バージョン管理はgit派なのだけど、たまたまsvnで管理されたレポジトリからcheckoutする必要があって、とりあえずsvn checkoutしてみたところ

svn: E175002: Unable to connect to a repository at URL 'http://...'
svn: E175002: OPTIONS of 'http://...': Could not read status line: connection was closed by server (http://...)

こんなのが出た。調べてもあまりピンとくる情報が得られなかったので、homebrewで最新版(1.8.8)を入れたところ、

svn: E120108: Unable to connect to a repository at URL 'http://...'
svn: E120108: Error running context: The server unexpectedly closed the connection.

こう変化した。
このメッセージについてこんな記述を見つけたので、

$ sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh

を実行したところ、正常にcheckoutできるようになった。
アンインストールせずに回避する方法はないのだろうか。

homebrewを更新しようとしたら詰まったのとその解決法

大したことではないがメモしておく

berlysia:> brew update
Warning: Could not tap homebrew/dupes/ant over mxcl/master/ant
Warning: Could not tap homebrew/dupes/cvs over mxcl/master/cvs
Error: undefined method `to_sym' for nil:NilClass
Please report this bug:
    https://github.com/mxcl/homebrew/wiki/troubleshooting
/usr/local/Library/Homebrew/cmd/update.rb:123:in `report'
/usr/local/Library/Homebrew/cmd/update.rb:121:in `each_line'
/usr/local/Library/Homebrew/cmd/update.rb:121:in `report'
/usr/local/Library/Homebrew/cmd/update.rb:35:in `update'
/usr/local/Library/brew.rb:95:in `send'
/usr/local/Library/brew.rb:95

Homebrew, Ruby, and Git - RayHightower.com ここを見つけたので

berlysia:> rbenv versions
  system
* 2.0.0-p247 (set by /Users/berlysia/.rbenv/version)

berlysia:> rbenv local system

berlysia:> rbenv versions
* system (set by /Users/berlysia/.ruby-version)
  2.0.0-p247

berlysia:> brew update
Updated Homebrew from 44988d34 to 44988d34.
==> Updated Formulae
homebrew/dupes/apr	      homebrew/dupes/file-formula   homebrew/dupes/grep		  homebrew/dupes/openssh	homebrew/dupes/tidy
homebrew/dupes/apr-util	      homebrew/dupes/gdb	    homebrew/dupes/httpd	  homebrew/dupes/tcl-tk		homebrew/dupes/zlib
==> Deleted Formulae
homebrew/dupes/ant  homebrew/dupes/cvs

無事更新できましたとさ。

Macbook Pro (Mid 2012)が起動しなくなってから解決するまでにやったこと

マカーならGenius bar行こう、という話。

事の発端

スリープ明けにパスワードを打ち始めたらそのまま固まって、強制終了した後から起動しなかった。出る画面といえば、中央にはてなマークが浮かぶのみ。

ぐぐったらこんなのが出た→Mac の起動時に、点滅する「?」マークまたは地球儀のアイコンが表示される - Apple サポート

試したこと

option押しながら起動→何も出てこなかった

いつものMacintosh HDもBOOTCAMPも出てこなかった。ついでにリカバリー領域も見えなかった。

インターネットリカバリーを利用してDisk Utilityを開き、状況確認をした。

なんと認識されていなかった。chkdskさせてもくれないのか!
この段階ではHDD買ってきて換装すっかーとか奮発してSSDにしちまうかーとか考えていた。

天啓

「ここ数ヶ月でMacBook Air Mid 2012の東芝製SSDが壊れる不具合が頻発している」というのは本当なのか調べてみた。

結果的には時期が同じだっただけで関連は認められなかったが、このreplyでGenius barに持ち込んでみようと決意し、その勢いで予約まで済ませた。


Genius barの予約が完了すると、それらしい完了ページに着地するのだが、そこにコメント欄がある。一応やるだけのことはやったので、何かの役に立つかと思って、症状とやったことを記述しておいた。

いざGenius bar

アップルストア銀座Genius barは、4階にある。
エレベーターはガラス張りで、なんと内にも外にも開延長以外のボタンがない。事前に聞いていたのでそう驚きはしなかったが、それなりの衝撃だった。

出迎えのクルーに予約の時間と名前を伝えると、席を指定されるので、座って待つ。少し混んでいて、予約の10分前に行ったのだが、結局予約の時間を数分過ぎてから担当者が出てきた。iPadで予約情報を見ていて、コメントにも気づいていたようだ。

ジーニアスがやってくれたこと

option押しながら起動(起動ディスクの選択→何も出ない)
⌘S押しながら起動(シングルユーザーモードで起動→そもそもそのモードに入れない)

ここまでは一般ユーザーでもできることだ。ジーニアスに期待していたことはこの先。

HDDを取り出して外部マウンタからアクセス

これがいけたらしい。日頃の行いがよかったんでしょうかね、原因はケーブルではないか、とりあえず交換してみましょうか、という話に。この時点でケーブルの料金と修理代の見積もりが出てきた。もしだめだったらどうなるか、ということは確認を忘れた。

本来ならば修理は1週間ほどかかるらしいが、今回は状況を考慮してすぐに交換を行い、具合が良ければそのまま持ち帰ってokということだった。

ケーブルの交換

この段階で起動できることが確認された。ここで本当はディープなチェックをするのだが、簡易なチェックをしましょうという話に。
出てきたのはMRI(Mac Resource Inspector)。これのUIがオールドマックと同じだったので、チェックの間少しだけ、ジーニアスと昔のMacの話をした。

結果

MRIの結果は異常なし。見積もり通りの額を支払って、あまりにも嬉しかったのでジーニアスと握手をして、撤収。
出費は5k弱。


Time Machineのバックアップがあるつもりだったが、実際確認したら7月時点で止まっていて肝を冷やした。バックアップはこまめに、確実に。
原因がケーブルにあったということで、先走ってHDDを新調していたら大損するところだった。保証が切れていても、早まって自力修理する前にジーニアスの力を借りてみるといいだろう。今回のケーブルは、他で入手するのは難しい品であるらしいし、そういう意味でも。