条件が予測できないデバッグできないいつからこんなつまらない業界になったのかPaizaで展開している、「プログラミング彼女」というサブコンテンツ。0のような文字列で与えられる。マッチングパターンも同様だ。endendこれが通過しなかった。手元でテストする限り、これで通過しないケースは発見できなかったのだが、case4で0.11secでこけてしまう。これは納得できないところだ。文字列の正規表現マッチングを行っているため、かなり魔術的に見えるだろう。「文字列」というが、Rubyの場合は文字列はバイト列も含む。バイナリ検索にしてもバイトパターンのマッチングは普通なので、別にそのために文字列検索を行ってもなんら問題はない。本来は多重配列を用いたマトリックスを求めていたのだろうけれども、Rubyの能力を考えれば配列よりも文字列のほうがはるかに扱いやすいし速いので、ちょっと魔術的でもこちらのほうが良いと考えた。endend.first)ダメだと言われたので改修してみた。各パターンにおいてマッチするメトリックをハッシュに格納し、マッチ側パターンの行数縦に連続するものをマッチとみなす。速度的にも効率的にも悪くない。階乗の、末尾0を除いた末尾9桁を出力せよ、という問題。Overflow対策が求められるのだろうが、RubyはBignumがあるため、そこは不要。実効速度に伴うタイムアウトという壁が立ちふさがった。"")理論上はOKで、実際テストではOKだったが、Case3でコケる。-1]コールスタックが枯渇しないように、Enumerable#injectを使ったループに変更した。Case4で15.00secで失敗する。})タイムアウトを避けるため、常に9桁に抑制することにした。このコード、計算結果が1000000000だった場合に、商余が0になってしまうため失敗するが、事前に0を除いているために起こりえない。これはあっさり失敗してしまう。手元では通過していたため、失敗理由がわからなかった。1000000000)計算桁を増やして最後に9桁に落とすようにした。これで通過したが、計算桁はなんとなく増やしているだけなので、理論的には失敗しうる。100000000000)なんとなく想像はついたが、検証してみた。!50の結果が変わってしまう。これは、!49の時点では13792102483137921024と9桁/11桁で正しいが、!50になると6896051241568960512と8桁/11桁になってしまう。0を除く前の時点で689605120041568960512001桁増えているが、0が末尾に2つ増えており、0を除くことで2桁減る。結果として1桁減ってしまうことになる。計算を続けていくと、この誤差は消滅するが(桁上がりすれば良い)、与えられた数によっては失敗することになる。1000000000)とすれば良いはず。条件が予測できない条件は一応書かれてはいるが、それ以外の条件が多すぎる。コールスタックの枯渇は予測できるからいいとしても、タイムアウトという条件は記載されていないし、めがねのその1が失敗する理由もわからない。これで技術を評価されるというのはとても不満だし、だいたい大した機能もない開発環境で、妥当性検証の方法も単一のサンプル、それもどのような入力かを明確にしないままであり、入力の仕様も(業界では一般的な形式なのかもしれないが)非常にわかりにくい。デバッグできない失敗した場合でもなぜ失敗したのか分からない。そのためデバッグすることができない。提出前に失敗した場合でも、全体出力を見ることができず、かつデバッグせずに提出することを前提としているためデバッグはかなり難しい。私はこうしたことは不毛だと思っている。プログラムはちゃんと磨き上げて動くコードにするものだろう。間違いなく動くことが確認されて、はじめてリリースだ。確認もデバッグもできないままということで、一度しか提出チャンスがないということにも強い違和感を覚える。いつからこんなつまらない業界になったのかこれはPaizaに限った話ではないけれど、IT業界が、まず履歴書、そして業務履歴書なんてつまらない業界になってしまったのはいつからなんだろう。少なくとも、私がお呼ばれした時には能力さえあればいいという空気があった。その時点でコンピュータを使うこなせる人間なんて変人が多かったし、型なしの掟破りという印象が強い。近年は、他業界よりもさらに「即戦力」ばかり求められ、経験がなければやらせないというところばかりで、「経験はどこでつめますか?」という状態。結局そのために経歴の捏造が横行しているわけだ。年齢も経歴も関係なしの実力次第の世界だと思うのに、そこまで経歴に固執するのは一体なぜなのだろう。コードを直接みることができるPaizaであるにも関わらず、そのフォーマットを要求するのはいかがなものか。「趣味/1年未満」というくくりは一体なんなのか。定型的な業務におけるカテゴリしか用意していないのもなんなのか。実際はもっと多様で、能力とは直結していないはずなのだが。