ぱらつり記

No description

学内ミニプロコン

遅刻

長い間集まりが無く、活動の連絡を確認することをすっかり忘れていました。
偶然にも気づいた時刻が活動開始時刻。慌てて出発しました。

ミニプロコン

というわけでととっと概要。

問題

100個の整数が与えられる。総和を出力せよ。

入力

  • 入力はサーバー上に置かれたファイルにアクセスすることで与えられる。
  • 指定のディレクトリ下に、1から100までの連番でテキストファイルが配置されている。
  • それぞれのファイルには1行の正の整数が記録されている。
  • 総和は200桁以下の整数になることが保障されている。

出力

  • 全てのテキストファイルに記録された数の総和を出力せよ。
  • 指定の送信先へ、解答と事前に与えられたトークンをPOSTすることで出力とする。

単なる足し算かと思いたいですが 200桁 という制約がヤバそうですね。

ずざっと書いた自分の解答がこちら

筆算の形で計算を行う関数を作りました。返り値はstringです。

最初は小さいケースから解答して、続いてでっかいでっかいケースへ。
こんな感じの出力になりました。

f:id:paralleltree:20150311201605p:plain

他の人は?

友人はRubyで解答していました。Bignumで特にひねりなく数値扱えるからRubyすごいね。

実質自分とその友人で参加していましたが、どうも友人の方が2秒ほど解答が早い。
検証はしていませんが、おそらくWebClientの特性によるものと思われます。

というのも、コンソールへの出力を見ていると、一番最初の受信に数秒かかってからその後ズドドドドと流れてきたように見えたからです。

今回はローカルでの実行結果を投げる形式だったので、一発受信かましたWebClientで実行してやれば早くなったかもしれません。

おわり

そんなこんなで終了後、短くコードの共有をしました。 その直後に先輩が見ていたページがこちら

「えっ」てなってから「え゙え゙え゙」ってなりましたね。

普段はint, いってもlongしか使う機会がなかった(というかSystem.Numericsすら初めて知った!) ので、BigInteger構造体の存在に気付かぬままこーぢんぐしてましたはい。

BigIntegerのメモリ使用量は分からないけれど、コーディング力も多少はついたと思うし良しとしよう。