富士ヒルクライムに出場した

一週間前の6/9に富士ヒルクライムという自転車の大会に出場した。

山梨の富士北麓公園(富士急ハイランド側)から富士スバルラインを登って5合目までの、 距離25kmくらい標高差1200mくらいを走る。 タイムは1時間55分だった。 トップ勢は60分切っているためペースが文字通り段違い。

帰るまでの記録をしておく。

来年のためのメモ

  • 防寒具は前日預けにしたほうがいい。当日持ってくのかなりめんどくさい。
  • 体育館で当日荷物預けができるので宿泊道具などはそこで預けることができる。
  • 信じるべきは井村屋のスポーツようかん。食うだけで体力が回復するマジで。
  • 雨合羽は防寒具と一緒に前日預けしたほうがいい。雨降った状態の雨具なし下山は自殺行為。
  • バス預けするならめんどくさがらずにタイヤ外しましょう。

出場登録

3/1(?)から3/31までに出場登録がある。

自分が登録したのは3/31だ。あほちゃう?

前日入りとか何も知らずに勢いだけで登録して後日すごく後悔した。あほでは?

宿の予約とバスの予約は4月に入ってから行った。 両方とも富士急トラベルのものを使った。

出場日、移動費、宿泊費コミコミで3万くらいになったはず。 ちょっと割高に感じたが、そもそも個人で予約撮れる段階ではなかったのではしょうがない。

前日

新宿からバスで移動になる。 電車とまって新宿行けるのか心配になったが無事たどり着けた。

新宿では工学院前になる。バスタ新宿ではない。

11時発でバスの前に着いたのが10時50分、なんやかんやあって11時20分ごろに出発した。

渋滞とかあったが会場に着いたのが13時30分ごろ、参加登録してうろうろして早々に宿に向かった。 参加証はヘルメットを入れる袋だった。

チェックインが15時からで14時50分ごろに宿に着いた。 知らん人4人で相部屋になってたが一番乗りで速攻で温泉に行くクソムーブを見せた。 1時間くらい温泉につかったら残りの人が部屋にいて自己紹介とかした。

18時半ごろにご飯を食べて部屋に戻って明日の予定とかを話しつつ世にも奇妙な物語を見てた。 相部屋の人が21時半ごろに寝てしまったので、自分も寝ることにした。

当日

起きて「雨じゃん」とか言いつつ着替えて荷物整理して宿の朝飯食って出発した。

ルート分からないので相部屋の方に先導してもらって後ろからついていくことにした。 ゆったりと会場まで移動。

5時前には会場到着して当日預けで防寒具を預けた。 そのあとクッソ暇だったり、トイレがくっそ並んでたりしてた。 適当に食料を取りつつ8時ごろまで体育館の中の椅子で過ごしてた。

8:00の出るタイミングで宿泊荷物などを預けてスタート地点に向かった。 この時間になるとスタート地点に向かう人は全員最終スタートに回されるようだ。

スタート直前にスマホの記録をスタートさせてないことに気付いてスタートさせた。 ゴールしてから見たらスタート直後に止まってたマジふぁっく。

スタート後はスタートから今なんkm表示と5合目まで何km表示の棒を見つつ道は遠いと思いながら漕いでた。 海抜0mから5合目まで自転車、そこから登山するのをやりたいと考えているが、筋力、体力的にまだまだ厳しそうだ。

だいたい10km~14km/hで漕いでた。ケイデンスはサイコンが反応しなくなったので分からない。 体感的には80~95くらいだろうか。 ほぼずっと一番軽いギアだった。

ゴールしてからは防寒具を全部着て雨合羽来てちょっとのんびりしてから下山した。 途中で落車した人がいたので降りてくる人を道路中心よりに走るように誘導したり、途中にいたスタッフの人に連絡をお願いしたりした。

会場について完走リングとかもらって自転車を袋に詰めこんで帰路についた。

完走した感想は、自転車ガチ勢にはやっぱりかなわないけどブロンズくらいまではいきたいなって思うようになった。 もっと山走ろう。ローラー買って家でも鍛えれるようにしようねせやね。

AtCoder Beginner Contest 126[ABC126]の復習

いまさらながらふくしゅー

atcoder.jp

A - Changing a Character

小文字を大文字にする。大文字小文字は32離れている。

Asciiコード調べるのに時間かかった。

#include <iostream>
#include <string>

int main() {
  int N, K;
  std::string S;
  std::cin >> N >> K;
  std::cin >> S;

  S[K - 1] += 32;

  std::cout << S << std::endl;
}

B - YYMM or MMYY

12がどうなっているか判定するだけ。'0'は48だよ。 Ascii調べたから文字→数字は計算で。

#include <iostream>
#include <string>

int main() {
  std::string S;
  std::cin >> S;
  int prev = (S[0] - 48) * 10 + (S[1] - 48);
  int next = (S[2] - 48) * 10 + (S[3] - 48);

  bool prev_flag = false;
  bool next_flag = false;

  if ((0 < prev) && (prev < 13)) {
    prev_flag = true;
  }
  if ((0 < next) && (next < 13)) {
    next_flag = true;
  }

  std::string result;

  if (prev_flag & next_flag) {
    result = "AMBIGUOUS";
  } else if (prev_flag) {
    result = "MMYY";
  } else if (next_flag) {
    result = "YYMM";
  } else {
    result = "NA";
  }

  std::cout << result << std::endl;
}

C - Dice and Coin

すごく初手で決まるゲームだなと思った(こなみ

while (v <= K) {

って書いててテストケースが合致しない?なんで?ってなって辛かった。 出力printfで書けばsetprecisionとかしなくていいのにね。

#include <iomanip>
#include <iostream>

int main() {
  int N, K;
  std::cin >> N >> K;

  double over_K = 0.0;

  double sum = 0.0;
  for (int i = 1; i <= N; ++i) {
    int v = i;
    double prov = 1.0;
    while (v < K) {
      prov *= 0.5;
      v *= 2;
    }
    sum += prov;
  }

  double result = sum / N;

  std::cout << std::setprecision(20) << result << std::endl;

  return 0;
}

D - Even Relation

解説読んでも問題文の意味が分からない。なんで。

当日は意味が分からない???でタイムアップ。Eやればよかったのにね。

E - 1 or 2

異世界転生してカードに書かれた整数を知ることができるのでゴリゴリと書くだけ。

最初LUTで解こうとしたけど大変だったので、適当に書いた。 これグラフで連結数っていうのかって解説見て思った。

queue使ったほうが実装楽だけど、vectorでごり押したほうがpop無い分速そう。 hintのclearはおまけ。やる必要ないしやるだけ遅くなるよ(多分

#include <iostream>
#include <queue>
#include <vector>

int main() {
  int N, M;
  std::cin >> N >> M;
  std::vector<std::vector<int>> hint(N);
  std::vector<int> lut(N);

  for (int i = 0; i < M; ++i) {
    int x, y, z;
    std::cin >> x >> y >> z;
    hint[x - 1].push_back(y - 1);
    hint[y - 1].push_back(x - 1);
  }

  std::vector<int> chain;
  int num = 0;

  for (int i = 0; i < N; ++i) {
    int table;
    if (lut[i] == 0) {
      ++num;
      lut[i] = num;
      chain.clear();
    } else {
      continue;
    }

    chain.push_back(i);

    for (int i = 0; i < chain.size(); ++i) {
      auto c = chain[i];
      for (auto &h : hint[c]) {
        if (lut[h] == 0) {
          lut[h] = num;
          chain.push_back(h);
        }
      }
      hint[c].clear();
    }
  }

  int result = num;

  std::cout << result << std::endl;

  return 0;
}

F - XOR Matching

M=2とM=3の時にどうすればいいのか、紙に書いてたら真ん中と端に目的の値おいて、あとは他の値でサンドイッチすればいいことに気付いた。

M=2、K=1なら、1 0 2 3 1 3 2 0

1と1の間は0 xor 2 xor 3=1になる。

0と0の間は2 xor 3 xor 1 xor 3 xor 2=1になる。

2のM乗未満の値を1つずつ取り出して排他的論理和を取ると、M=2の場合は0 xor 1 xor 2 xor 3=0、という感じで0になるので、そこから目的の値を引っこ抜いて端と中央に配置すればOK。 もちろん2のM乗<=Kの時点で解けない。

例示は理解の試金石。

例外ケースが入力例にあったので例外ケースはスムーズに書けた。

出力でstringstream使ったほうがいいかなと思ったけど、とりあえず書いたら通ったのであまり気にしないことにした。

#include <cmath>
#include <iostream>
#include <vector>

int main() {
  int M, K;
  std::cin >> M >> K;

  int max = 1 << M;
  std::vector<int> result(max * 2);

  if (max <= K) {
    std::cout << -1 << std::endl;
    return 0;
  }

  if (M == 0) {
    if (K == 1) {
      std::cout << -1 << std::endl;
      return 0;
    } else {
      result[0] = 0;
      result[1] = 0;
    }
  } else if (M == 1) {
    if (K == 1) {
      std::cout << -1 << std::endl;
      return 0;
    } else {
      result[0] = 0;
      result[1] = 0;
      result[2] = 1;
      result[3] = 1;
    }
  } else {
    // 最初と真ん中らへんにKを配置する
    result[0] = result[max] = K;

    int val = 0;
    for (int i = 1; i < max; ++i) {
      if (val == K) {
        ++val;
      }
      result[i] = result[result.size() - i] = val;
      ++val;
    }
  }

  for (auto r : result) {
    std::cout << r << " ";
  }
  std::cout << std::endl;
}

北海道にいった

2/9-2/12に北海道に行った

ルート

f:id:yuji-dis:20190213195148j:plain

失敗集

  • トレッキングシューズを履いていくつもりがスニーカーで行った
  • 一眼レフを持って行ったのにSDカードを入れ忘れていた
  • レンタルしたスノボのウェアにリフトのカードと3000円くらいを入れたまま返却した

2/9

朝8:00の羽田発新千歳行き飛行機 除雪で1時間ほど出発が遅れる

新千歳に11時ごろ着 そこからレンタカーで札幌へ 大体1hくらい

お昼ご飯に回らない寿司を食べた

雪まつりを見物 雪ミクとか

視聴率の獣とか スニーカーだったため足が死にかけた

夜は定山渓温泉 ぬくもりの宿 ふる川へ
温泉側の建物がリニューアルらしくすごくきれい+サービスが行き届いていた
晩御飯の回らない刺身

2/10

定山渓温泉からルスツリゾートへ 1.5hくらい
昼過ぎくらいにつきそこからはじめてのスノボー開始
友人に手取り足取り教えてもらい2hほどで滑れるようになった
初めてにしては早いとお褒めの言葉
晩御飯のバイキング

2/11

引き続きルスツでスノボー
中級者コースでこけながら滑走できた
スピードを出すと制御ができなくなるので抑え気味だったが、夕方には2回こけるくらいで滑りきれた
山頂からの景色がよかったが、スマホを持って行ってなかったので写真は無い

2/12

最終日 明日仕事かよふぁっくふぁっく喉痛い
ルスツ→きのこ王国→支笏湖で温泉→新千歳というルートに決定
きのこ王国 きのこ汁うまー
支笏湖の丸駒温泉 湖、山、温泉で完璧

新千歳で実家に送り付けるものを買って羽田に飛んで帰宅

技術書典meetupに参加&外でのメモ取りの試行

お手軽メモ取り環境を作ったので技術書典meetupで試した。

  • AndroidスマホBluetooth折り畳みキーボードだけ
  • ノートPCより軽く、画面が小さい
  • temux を使う
  • vimとpluginが一式動作する
  • markdownでメモってmarkdownpreviewで確認できる

利点

  • とにかく持ち運びが楽
  • 軽い小さいかさばらない
  • なんやかんや今使ってるMate20Proは2000x3000pixくらいあるのでそこそこ見える
  • gitも動くのでgithubにprivate repositoryを作っておけばメモをそのままpushできる
  • g++とかpythonとかも動くのでいろいろヤバイ

難点

  • 変換がクソになる なんで?
  • なぜか日本語キーボードなのに英字キーボードになってるので辛い 配置覚えてない 設定で変えれるのかな

発表されていた資料のURLメモ

技術書典6 はじめてのサークル参加meetup

GitHub - TechBooster/C89-FirstStepReVIEW-v2: 技術書をかこう!はじめてのRe:VIEWは技術書の執筆ノウハウ本のリポジトリです

GitHub - TechBooster/ReVIEW-Template: TechBoosterで利用しているRe:VIEWのテンプレート(B5/A5/電子書籍)を公開しています

以下今日のメモ (特に使い道は)ないです

続きを読む

C95 ProjectSix alpha版をやった

ハイスピードロボバトルいいぞー!かっこいいぞー!
手がめっちゃ疲れるけどな!

ターンシックスと戦いまくってるけど全然勝てない youtu.be

ちゃんと1回は勝ったんです!(23秒) f:id:yuji-dis:20190116195056j:plain

  • ジャンプの仕方がいまいち分からない できるときはできるんだが。。。
  • 敵のミサイルがどこから飛んでくるかわかんなくて怖い

C95有翼のフロイライン体験版をやった

1時間程度で体験版の3章までクリア
クオリティが高く、スピードのある3D戦闘なので酔うかなと思ったらそんなことなかった

ストーリーとか

  • ストーリー(ほぼ)無い状態だったので背景とか世界観とかがよくわからなかった
  • 空飛べるギアみたいなものをつけている設定なのかな

戦闘とか

  • ロックオンをする相手がよくわからない
    • Chapter3で直接狙えないところがロックオンされて非常につらかった
  • 被弾してもシールド回復が早いので自機がなかなか落ちない
    • 難易度とかは今後の調整次第かしら
  • 対フロイラインだと偏差射撃が結構必要かな? なかなか当たらないような
  • マウスキーボードで3つ目の武器への切り替え方法がわからなかった
    • 1-2はホイール上下、3はホイール押し込み
    • 各種FPSのように1,2,3キーで武器切り替えができたらスムーズだったかも

chapter2のプレイ動画

愛欲姉妹ロリータをプレイした

C95 夜のひつじさんのところの新作です。 プレイ時間は5~6時間くらい?これまでの作品よりかなりボリュームがあるように感じました。 以下、乱文感想になりますがネタバレを含みます。

続きを読む