F*your Internet

ゴミみたいな記事を目指します

tenka1-2021-spring

結果

26位でした。残念

f:id:cympfh:20210424192148p:plain

問題等

github.com

成果物

github.com

反省

毎度、最初にちょっとした工夫のものを書いてちょっと良い成績なのを眺める→最後までそれを眺める、で終わりがち。 上位者はその間にやってる。

やったこと

Twitterで見た感じ、アルゴリズムに関する工夫はみんな似たりよったりだと思う。私がやったのは次の通り

  • 単純な文字列連結 (ABC + BCD -> ABCD のような)が出来るかを最初に素朴にチェック
    • 共通の接尾, 接頭がないものは連結しないことにして有向グラフの形で持っておいた
    • 本来は完全内包(ABCD + BC -> ABCD なんか)もアリだが考慮できなかった
  • 上記グラフを辿る形で, 最大3つの文字列の連結を考える
  • 得られた文字列を何周もぐるぐる回ることを想定してスコアを計算する
    • スコア = 重み / 一周の長さ / total

特に最後だが、良い文字列の組み合わせはすぐには変わらないことを見越して、そうすると同じ組み合わせをずっとぐるぐる回るだけだと仮定してる。そうすると今エージェントがいる位置の影響は薄れて、一つの文字列を一周する長さだけが支配的になる。コンテストは時間勝負で時間あたりに稼げるスコアが欲しいので、一周の長さで重みを割り算してる。

ほかの注意として

  • Python のサンプルを書き換えて使った
    • おそらく意図的に無駄な処理が書かれてたのを見つけて修正する
    • API を叩く頻度が優しすぎるので厳しくする

ところでRustでやりたかったのでちょっとずつ移植してたのだが、結局使わなかった。すぐ動くサンプルを触る方がずっと早い。 今回、よくあるような、スコアが時間につれて減衰するようなことがなくて、とにかくさっさと点数を稼いだもん勝ちだったので、手が早いことが正義だった。

思考を止める101の方法

順不同

料理をする

一部の人達にとって料理というのは食べるものであって、それ以外の動作は付随する嫌なものでしかないかもしれない。しかし料理というのは実は作るものである。出来上がったらそれはもうどうでもいい。食べたければ食べてもいい。 手間は掛かれば掛かるほど楽しい。

  1. 麻婆豆腐
    • 手間は実は大してかからない代わりに調味料が多く必要となる
      • 極小の火でひき肉をのんびり炒めることだけ気をつければ、どうとでも作れる
        • タイミングが重要とかいうものじゃ全然ないので好きに作ると良い
      • 洗い物は多くて油汚れも多いかもしれない。
    • 豆腐は焼き茄子にすれば麻婆茄子だし、実は好きなものに置き換えれば良い
      • これをフリースタイル麻婆と呼ぶ
      • 野菜煮込みとかね
  2. スパイスカレー
    • 手間ポイント:最初の玉ねぎをじっくり炒める工程
    • 初めに玉ねぎを油で炒め、クミンシードを炒めると、もうそれだけでカレーの香りがしてくる
      • ということは、ここに何をやっても、もうこれはカレーなのだ
      • 安心して自由にスパイスや具材をカスタマイズすればよい
  3. ピザ
    • 手間ポイント:生地を寝かせる工程
      • これは朝顔の観察日記をやるようなものである
    • 焼いた生地には何を載せてもいい

映画サブスクの無料お試し期間を試す

充実した動画サブスクはどんなに安くても月額千円程度、大抵は三千円したりするのがザラだ。しかし同時に、初月無料だったりする。メールアドレスとクレジットカード番号を手に入れたら、これを使って無料お試し期間だけ堪能できる。 映画も見るんだけど個人的には Amazon Prime Video で見ちゃうので、そこでしか見れないものを好んで見ている。

忘れずに解約すること。

漫画を読む

「映画を見る」も同じなんだけど、物語に入り込みすぎると、現実に引き戻されるときが辛いので、気をつけること。漫画だと長くても5巻くらいで終わるのがいい。短編集も良い。

オススメの漫画はこれ、みたいなのは書かないですよ

競技プログラミングをする

競技プログラミング(或いはプログラミングコンテスト, プロコン)というのはプログラミングを使った算数パズルのようなものだ。迷路やクロスワードパズルなんかを解くことが好きで、こんなものパソコンを使えばもっと簡単に解けるのに、と思ったことがあるならあなたは必ず好きになる。すぐに始められるものの内有名なものを二つだけ紹介してみる(実際にはもっといくらでもあるので探してみてください)。

Project Euler

projecteuler.net

英語なのはご容赦願いたい。 https://www.deepl.com/ とかに突っ込めば大体読めると思う。

このサイトでは大量の算数パズルが用意されている。 1つ目はこんな問題だ。

Problem 1 - Project Euler

「10未満の自然数で3または5の倍数を列挙したとき、その和は23である。では1000未満で列挙するとその和はいくらになるか?」

ここではどんな手段を使っても良いから、求めた答えを送信すればよい。 基本的にはプログラミングを駆使するわけだが、「紙とペン」を使って解くことも公式に容認されている。 しかし問題が複雑になるにつれて、それは叶わぬ夢になるだろう。 書いたプログラムはあなたの手元で実行する形式なので、どんなプログラミング言語を使ってもいいし、どんなCPUを使ってもいい。実行にどれだけ時間を掛けてもいい。あなたが責任を持つ限りは。

AtCoder

こちらは日本語だし解説も豊富なので人に勧めやすい。

atcoder.jp

コンテストという形式で問題が提供されている。コンテストというのは6問程度がセットになって、定められたある時間に公開されて、それを皆が一斉に解いて時間を競うというものである。ただし過去の問題はいつでも解ける状態になるので、直近にあったコンテストを開いてみて、解いてみれば良い。問題は簡単な順に並んでいる。AtCoder Beginners Contest という名前のコンテストが基本的には初心者向けの問題であって、その中の最初の4問程度(それぞれA問題からD問題と呼ばれる)は普通にプログラミングの教養で解けるようになっている。

こちらは Project Euler と違って、プログラムのソースコード自体を解答として提出する。プログラムはAtCoderのサーバ(ジャッジサーバと呼ばれる)の上でコンパイルされ、実行される。 一つの問題はその入力が固定されているわけではなくて、あらゆる入力に対して正しい出力をできるようなプログラムであることが求められる。 入力と出力は標準入出力というインターフェイスが使われる。 Unix文化でプログラミングをしてこなかった人にとってはまずここが一つのハードルかもしれないが、普通どんなプログラミング言語でもサポートがあるものなので、少し練習は必要かもしれないが、じきにすぐ慣れる。

atcoder.jp

Practice Contest というまさに形式に慣れるためだけのコンテストが常設されているので、ここで練習をするとよい。

先に述べたようにこちらはプログラムを向こうのサーバで実行する必要がある以上次の制約がある

  1. 実行時間に制限がある
    • 大抵は2秒から5秒程度で問題ごとに設定がある
  2. メモリ制限がある
    • 実行時間と同様
  3. 標準入出力を使って問題の入力と答えの出力を行う
  4. プログラム中からネットワークIOなどはできない(ファイル入出力も?)
  5. (十分な選択肢があるとはいえ)向こうが用意したプログラミング言語のどれかから選ぶ必要がある

趣味プログラミング, 盆栽

ところで単にプログラミングというのは楽しいものである。日常のパソコン作業で何でも良いからちょっとした手間が掛かっている作業を見つけたら覚えておくと良い。一回あたり数分以上掛かっていて、反復的に何度も行うような作業は、それはまさにパソコンにやってもらう作業である。例えば今どきは、紙の雑誌の代わりに初めから web ページの上で漫画を連載するということが少なくない。私はそういったものを欠かさずチェックしてる。毎週金曜日に必ず更新するサイトもあれば、隔週であったり、完全に不定期だったり、そういったものをチェックするのは一苦労である。というわけで、読んでるサイト全てをチェックするプログラムを動かしている。

(まさにこういった目的のためにRSSというものがかつてあったが、全部が全部提供してくれてるとは限らない。このプログラムはチェックしてる各 web ページにアクセスし、それはHTMLで書かれているからそこから更新情報らしき箇所を抜き出して、といったことをしている。少し前までは更新があったら Slack に通知を流すといった運用をしていたが、Slack のトークン情報を持たないといけないのが嫌だったりして、今は一つのRSS として出力するようにした。)

このプログラミングは完全に自分のためのものだから、自分にとって使いやすければ実は何でもいい。自分にとっての美しさだけをわがままに追求していい。また、自分が必要と感じて作ったものなので、使うのも自分であり、フィードバックが得られやすい。つまり、使っていく内にこうすればもっと便利なのに、という機能改善がいくらでも湧いて出てくる。これは飽きない作業である。

趣味プログラミングは盆栽によく似ている。

パズルゲームをやること

パズルゲームの良いところは基本的にずっと同じことをするゲームだからこそ、終わりがないところです。ルミネスという落ちものパズルが好きです。

ナンセンス文学・漫画を読む

エロ・グロ・ナンセンスのナンセンスである。馬鹿げているという意味じゃなくて、意味をなさないという意味の方のナンセンス。典型例として「ふしぎの国のアリス」がある。アリスは現実離れした世界を迷い進むことになるが、そこでは我々の常識で物事は動いておらずに言葉遊びが優先したルールになっている。ナンセンスは思考停止であるようで、普段使わない部分の脳みそを働かせると楽しめるようになっている。

お風呂に入る

たまには湯船にお湯を張る

散歩をする

歩いて散歩をするのは気晴らしに良い。自転車で散歩をするのも良い。自転車を漕いでると自転車を漕ぐことにしか集中しなくなるので良い。

登山

登山はたいてい、苦しい。 山頂に到着しての喜びとか、そんなものは大きくない。 大抵見晴らしは悪く、曇っているものだ。 それより覚えているのは道中の、早く帰りたい、なんでこんなところに私はいるんだろう、ということだ。

夢日記をつける

朝起きて、夢を見たら(というか、覚えてたら)それを日記に書く。 つまらないことに、夢日記をつけるようにしても気が狂ったりはしない。 私は狂ってはいない。 夢にはかつてあった自分が反映された平行世界の自分らしき別人の生活が現れる。

http://s.cympfh.cc/cympfh/memo?q=%E5%A4%A2%E6%97%A5%E8%A8%98%E3%80%82

普通なんてものはハナから存在しないと知ること

普通なんてものはない。 便宜上、あるということになってるだけ。 他に「常識」などが挙げられる。

「平均をとる」はいつでも可能だとは限らないこと

例えば100人の集団がいたときに、身長の平均を取るといった操作が可能で、それによってあたかも(「あたかも」と言いましたよ)人間の身長の標準のようなものが得られる。それによって「成人男性の身長は普通何センチくらいだよね~」といった言説をすることができる。しかしそれは実に怪しい行為である。

例えば、コーシー分布には期待値が存在しない。 コレに従う値は原理的に平均を考えることが無駄である。

海を眺めること。荒ければ荒いほど良い。

言ってみれば海はパチンコだと思う。小さい波が来て、予想の出来ないタイミングで大きな波が来て、また小さい波が続いたから、そろそろ大きめのが来るだろうななどとぼんやり眺める。パチンコは波が来るルールを人間が設計してるからそのルールをなんとなく把握してしかもお金が掛かっているので、より強力な刺激であるが、根底にあるのはたぶん同じだと思う。

同様に、動いてる洗濯機を眺める、もある。中身が透けて見えるドラム式洗濯機が便利。

催眠音声を聞く

催眠音声と言ったけど、似たジャンルとしてASMR、ボイスドラマなどある。dlsite で売れ筋を探すとたいていサンプルがあるので、漁ると良い。 現実逃避という意味ではストーリーがあるようなものがいいと思う。 オススメするのはストーリーのあるボイスドラマでありつつ女の子がずっとラップをするという「フリースタイル・ヒプノシス」。

www.dlsite.com

数学

自然科学というジャンルがあり、数学はそこに便宜上入れられたり、或いは入れられなかったりする。 自然科学というのは普通は物理学や化け学のことを言う。これらは絶対の真理として現実世界がある。例えば、どういうわけだか現実世界には万有引力というルールがあって、しかもそれは数式ではこのように書ける、という研究の道筋がある。 仮に、ルールが少し違ったときのことを考えよう。例えば万有引力というのは二つの質量があったときに互いに引き合う力が働くというルールだが、その力の大きさは距離に対する反2乗に比例する。 我々の宇宙は全てそれに従っており、その御蔭で、今我々が暮らすいわゆる世界があるわけなので、違うルールについて考えるのは、SFとしては面白くても、物理学の対象ではないとされている。 仮に例えば反2.1乗に比例するような世界だったとしよう。ほんの僅かな違いなら、世界はほんの僅かしか違わないかもしれない。いや蝶の羽ばたきが台風を起こすように、全く違う太陽系に全く規模の違う地球があって、生命など生まれなかったかもしれない。 どちらにせよ、我々には関係ないことである。 関係ないセカイについて想像するのは自由だが、興味の対象ではないというわけだ。 というわけで、自然科学というジャンルは大変に現実主義である。

一方で数学は自然科学を超えてシュールレアリスムの世界に入っていると言っていい。数学では何が正しいとかは、あまりない(語弊!)。 例えば現実にあると思われる自然数や、現実にあると思われるユークリッド幾何の研究は、数学外の必要から生じたと思われるが、やがて、あると便利だろう実数や複素数という概念を獲得し、或いは、便利さはわからないけれど、考えることは出来るので考える非ユークリッド幾何学がある。(ところで、実数 (real number) はその名前に反して、実際にあるのか大変怪しいと私は思っている。有理数までが現実の数であって、実数の存在に気づいてしまったピタゴラス教団の話は、ゼロ、負数、虚数の発見に比べてインパクトが薄いが、全然そんなことはない。もっと不思議なものとして学校で取り扱われるべきだと思う。) もっとも、数学の対象でしかない数といったものが、現実世界にあるかどうか、とか考えるのが数学から見れば全くバカげている。 今の数学は普通、初めに公理系を述べて議論できることを議論するだけである。 公理系というのがセカイのルールの記述であって、そこからスタートして言えることを言っているに過ぎない。 良さが二つある。

  1. 言ってしまえば前提を要しない
    • 一つの数学書が思い描くセカイのルールは全て第一章あたりに書いてあるので、他の数学書を参考にする必要がない
    • この作者が思い描くセカイではこれが正しい、ということを言っているに過ぎない
      • 別の本を見て一見真逆のことを言っていたとしても考えてるセカイが違うだけ
  2. 現実とは無関係
    • 数学はしばしば現実を思わせる用語を使いたがるが(集合とか森とか宇宙とか)、現実の話はしていない
      • (あくまで「適用可能」であるだけだ)

新しい言語を学ぶ

学ぶことは常に楽しいことだ。 とりわけ言語の学習ほど容易でありながら難解なものはない。 ロシア語はどんなに難しくても、ロシアに生まれ育った五歳児なら誰でも聞き取れて話せる。もう数年すれば読み書きも出来る。言語というのはそういうものだ。

新しいプログラミング言語を学ぶ

自然言語と違ってもっと簡単にマスター出来てしまうのがプログラミング言語だ。 自然言語には仕様書なんてない。せいぜい第三者が書いたマニュアルに過ぎない。 一方でプログラミング言語には完全な仕様書が存在する。 そこに書いてあることが全てであって、例外が無い。 大きな言語の仕様書は読むのに苦労するだろうが、たとえば Scheme はどうだろうか。 これの最新版はやはり大きいが、少し昔の R5RS(第5版という程度の意味)のマニュアルの日本語訳がここにある。

www.unixuser.org

なんと49ページらしい。

プログラミング言語ではないが、YAMLJSON、あるいは Markdown の仕様を読むのも楽しい。

ペットの相手をする

ペット相手に話す、普段はしないぐらいの手の入った掃除をするなど。

音楽を聞きながら一緒に歌う

音楽を聞くのが楽しいのは多くの人が気づいてると思うが、一緒に歌うとさらに楽しい。歌うのが大変で量が多いほど良い。というわけで最近は好んで日本語ラップを聞いてる。

しかしラップというのはラップ自体(あるいはヒップホップ?)について歌ってるのが多いなあ。上にあげた3つは全部そう。 文脈が分からないとわかりにくいというのはデメリットだと思う。

大声を出す

大声を出すことは単純に気持ちの良いことだ。ストレスの発散になる。 誰も居ない家であーーーっと大声を出してみる。少し気が晴れる。 また、自己催眠の効果がある。 「地獄の新人研修」なんかでぐぐると、これの悪用方法が出てくる。 内容はともかく、達成感だけは得られる。

www.youtube.com

上手く使えば便利だと思うが、上手な使い方が分からない。

他人を信用しすぎないこと

org-mode を使うこと

人間を見に行くこと

人間の大きな集団がいるのを眺めるのはたまになら楽しいことである。 世間とはこういう人たちのことを言うのであって、自分は部外者なんだと実感することができる。

個人的に好きなのは左翼のデモを見に行くことである。これは皆さんにもオススメする。左翼思想が嫌いだという人は、チャンスは少ないが天皇誕生日のデモのような、過激なデモに行くことをオススメする。こういうデモなら、普段顔を出さない右翼がカウンターデモ(デモが通過する道中のどこかで演説(というか罵声))をやってるので、衝突を見ることが出来る。たまに軍服を来たあからさまにヤクザな人がデモに突入しようとして機動隊に止められる姿を見ることができる。こうなると、もはや観客は、どの思想を応援しようなどという考えがバカらしいことに気づく。これは単に、人間を観察する場なのだ。

アニメを見ること

dアニメストアに入りなさい。月額440円で大体大抵のアニメ(バンダイチャンネル系を除く)が見れる。

らんま1/2を見ること

ギャラクシーエンジェルを見ること

てーきゅうを見ること

アニメをBGMとして使うこと

見たことのないアニメから傑作を漁るのは楽しい行為だが、体力の必要な行為でもある。 面白いと分かっていて、すでに何度も見たことのあるアニメを見返すのは、大した体力を要さないし、心の安寧を得られる行為である。 自分が帰るべき家に帰るようなものである。

何度も繰り返し見たアニメはストーリーは全部把握してるし、異様に一つ一つのセリフを完璧に覚えてしまうものだ。そういったものはもはや、環境音だと言っていい。(人の家にはその家のBGMがあるというものだ。)別な作業のBGMにできる。25分程度の区切りを与えてくれるのもまた良い。

インターネットを見ること

インターネットは言わば雑誌であります。どんな記事もカバーされています。あなたの画期的に思えるアイデアをよく探せば類似のものが見つかります。

さて、これの何が良いか。 あなたにとって心地よいものがどこかにあるという点です。 あなたがどんな生まれでどんな宗派でどんな政治的意見を持っていてどんな本を読む人間でも、大丈夫です。 あなたは仲間です。

インターネットを見ないこと

インターネットは言わば雑誌であります。ただし記事は全く校正されたものではありません。この記事もそうですね。 何故人間はそんなものに夢中になってしまうのか。 脂が乗ってカロリーの高い食べ物を美味しく感じてしまうのと全く同様に、情報量が脳にとっての麻薬物質だからです。 フィクション作品を楽しむことが出来るのと同様に、内容の正しさはあまり関係ありません。 ですから質は問題ではないのです。

インターネットを止めて脳を労りましょう。

SNS はクソです。

世間は世間であって自分とは無関係だと割り切ること

世間という化け物がこの世にはいるんです。怖いですね。

近所の居酒屋に入ってみたのですが、そこにいました。常連で互いに顔見知りの間のようで、その時はたまたま、私の生まれ故郷の話をしていました。ベタ褒めしていましたね。やれ、魚が美味いだの、人間が上品だの。結局それは観光客としての意見なので、生まれ育った私の意見と食い違うのはしょうがないと思います。それにしてもあんな大嘘をばら撒くなんて酷いじゃないですか。よっぽど割り込んで言ってやろうかと思いました。いいえ、ろくに名産もないし、人間は全部下品だと。後者については私のまさにその行為で以て証明できるなと笑いながら、お店を出ましたけど。

写真を撮ること

カメラは世間と自分とを切り離す道具であると言ったら、驚くだろうか。 実はそうなんだ。

写真にはいろんな撮り方がある。 素通しのファインダーがあるカメラは、特にこの効果があるからオススメだ。 そんなカメラで最も手に入りやすいのが使い捨てカメラだ。1000円程度で手に入ったと思う。 そのようなカメラには背面液晶なんてもちろん無いから、素通しのファインダーに右目を当て、左目はただつむり、写真として現像されるであろう風景を眺めることだけができる。ことしかできない。

私が好きな写真の撮り方を紹介する。 大通りに出かけよう。 大通りには大きな交差点があり、そこには大きな横断歩道があると思う。 信号というのは必ずどこかは赤信号だから、そこに立って、カメラを車道側に向けよう。 誰もあなたのことなんて気にしては居ない。 あなたはただ車が走る風景だけを見ていればいい。 やがて信号は変わって、前方から化け物集団が闊歩してやってくる。 あなたは何もしなくていい。 やっぱりただカメラを向けて、ファインダーを覗き込んでるだけでいい。 何人かはカメラに気づいて避けたりするけれど、大抵は気にしない。 あなたはもし気が向いたらシャッターを押せばいい。 押さなくてもいい。

下を向いて散歩をすること

顔を上げて歩くと元気よく咲く花がなんだか偉そうに説教を垂れてくる気がする。アスファルトの上で踏み荒らされた桜の花びらは何も言ってこないから良いですね。ざまぁみろと思います。

電車に乗らないで散歩すること

電車に乗る用事があるなら代わりに2駅くらい歩くといいですよ。

お酒を飲む

オススメはしない。代替手段が見つかるならそれがいい。 交友関係が広い人なんかにはいいかもしれない。

生物的欲求を満たす

感情というのはまさか人間に特別な高尚で複雑で神秘的な何かというわけではない。肉体変化に対する予測を含めた認知であるというのが一つの見方だ。これを採用することにしよう。例えば緊張するという感情が心臓バクバクを導いているように思ってるかもしれないが、これは実は因果関係が逆である。何か心拍を激しくさせなければ行けない事情があるから心臓がバクバク言っているのであって、緊張という感情はその現象への認知に過ぎない。 あなたが今ネガティブな感情にあるならその原因が他にあるはずだ。実はお腹が空いてるとか、最近寝てないとか、寒いとか。まずそちらを先に解決させることを優先する。何はともあれ温かい布団に横になってご飯を食べてオナニーをしてみると良いかもしれない。

寝る

寝れば勝ち

全学連から高原元委員長が脱退し、追い出された。

大雑把に言えば方向の不一致であって、党の方針に委員長が向いていないと見做されたようだ。高原元委員長は昨年時点から脱退を表明していたが、後任が見つかるまでは全うし穏やかに脱退したが、中核派はあくまで反革命分子として強く非難した上で追放したという形にしている。 結局は全学連の委員長というのは中核派の一つの看板に過ぎない。 全学連側の声明によれば高原氏は党を私物化していたような書き方をしているが、その割に個々の党員からの印象は悪くなく、今回の一件についても苦虫を潰している。

高原氏一人ではないらしい。

よく知らないんだけど、中核派の自称「全学連」の高原委員長以下執行部の面々が中核派を脱退したのはなんで?

NOTE

タイトルが ■ の記事はクソ記事です。 タグの「#今日のインターネット」というのもクソ記事を見分ける目印になっています。

宗教を作りたい

人に宗教は必要だと思う。 個々への宗教への偏見はさておき(特に新興宗教への日本人特有の偏見は根深いだろうと推察するが)、 宗教は人類の偉大な発明品だ。

古い宗教が生まれた経緯などを知る由はないが、幸いにして、聖書というものがあるので、ユダヤ教だったりキリスト教だったりの目的を伺うことはできる。最大の目的は結局死後の幸福だと説明があるのだが、聖書の中では、じゃあ、さっさと生きてる人間を神が殺して回ったりはしない(早く死ぬことを讃えたりはするけれど)。それよりも、結局の所、宗教とは人が抗ったり説明をつけられない現象に対して身構える手段である。その代表はなんといっても飢餓と病気と災害だろう。だからこそイエス・キリストはパンを生み出して人に与えたり、病気を治して回った。

この態度は新興宗教を見ても基本的に変わらない。キリスト教が生まれた時代から見れば今は科学があり、医学があるので、宗教は要らないと思うだろうか。我々は地震というものが神の怒りなどではないことを知っているし、菌やウイルスの感染で人が死ぬことを知っているから、それらの現象に対して神秘的な説明は不要だろう。ではそれによって人は安心して過ごせているだろうか。2021年3月現在、2年前の年末から流行りだしたコロナはまだまだ人を家に押し留めようとし、それでも人は外に出て人に会いに行く。ここに宗教が必要なのだ。

宗教は人類の発明品だと言った。宗教自体は文化だから、今の文化に合わせる必要がある。わたしは特定の宗教を信仰しているつもりはないが、それは何と言っても、今日本にあって名前のついている宗教は基本的に全て時代遅れだからだ。ほとんど皆そう思っているだろう。私に宗教なんて必要ない? そうでしょう、誰だって今からポケベルを持ちたいなどとは思わない。そこで最初に戻るのだが、宗教を作りたいと思う。無いものは作るしかないので。

www3.nhk.or.jp

ついこないだ一審の結果を見て喜んでたのだが、気づいたら二審で全く逆転してNHKの勝訴ということになってる。 嘘だったらごめんだけど、NHKのニュースってNHKが勝ってる場合しか記事になってなくない? 民事裁判は結局資本力で殴り合って多い方の勝ちっていうじゃんけんをやってる。 壊れたテレビでもその気になれば受信料を請求できる材料になっている、これは。

ところで、

判決文を読んでみたいのだが、どこで手に入るの? 裁判例検索 | 裁判所 - Courts in Japan こういうのもあるみたいだけど、「全ての裁判例が本システムに掲載されているものではありません」とあるし、実際に検索してみたが上のニュースが見当たらない。 あくまでこれは判例だし、裁判所が主要なものと考えたものが載るだけらしい。 裁判所に行って150円払うくらいしかなさそう。

元ネタはたぶんこれ

engineering.linecorp.com

予備リンク

この記事では問題例として素数列挙を取り上げており、そのための「賢い」方法としてエラトステネスの篩が紹介されているのだが、よく見るとそれが O(N2) (ここで N は判定したい数)掛かっているというミスをしたコードになっている。という指摘をしている記事が次。

zenn.dev

元記事のLINEの人がどこまで本気でこの誤ったコードを書いたのかは分からない。本当にそれがエラトステネスの篩になっていて高速に動くと思っていたのか、ただのうっかりミスなのか。 今回はあえてそこは目を瞑ろう。うっかりミスに違いない。 「素朴に計算する」と「エラトステネスの篩」の間に強引に置かれた「キャッシュ化」が気持ち悪くて、素数定理を考えるとこの is_prime は結局 O(N / log N) なので、これが高速化?という気持ちになる。いや今はこれも目を瞑ろう。

それより気になるのはここ

しかし、このぐらいのプログラミングだと、多くの人が回答してきそうです。

  • 個性がない
  • 技術力や知識をアピールできていない

LINE ではコーディングに個性や技術力と知識アピールを要求してくるらしい。 例えば N が 1000 以下ならいつも試し割りでいいだろう(計算空間も小さい)。しかしLINEではそれは通じない。個性も何もない。 (アリストテネスの篩なんて、古代ギリシアで発明されたものだけど、それに今更個性…?)

コーディングで個性をアピールするな💢 コーディングで技術力や知識アピールをするな💢 その場に適したアルゴリズムを採用してただただ素直なコーディングをしてくれ。

確かにこの記事は、普段の業務プログラミングとしてより、採用試験という文脈の話だ。 そしてこの人にとってはその2つは違うもので、後者はアピールが大事だと思っているらしい。 確かに、エラトステネスの篩を知らない人よりは知ってる人のほうが教養はありそうでそちらの採用したくなるのは分かる。

しかし、コーディング試験こそ実際の業務を想定したやり取りをするべきで、その中で例えば「このNはどのくらい大きくなりますか?」とか「どの程度メモリを使うことが許容されますか?」などという会話をして適切なアルゴリズムを考えるべきだ。 その結果としてエラトステネスの篩が採用されるならそれでもいいし、試験官はそのように誘導すればいいだけだ。ていうか普通はそうだよね。 例えば、この「N番目に小さい素数を見つける」という問題なら、極端な方法として、埋め込み(答えを予め作って持っておく)というのがある。Nがそれなりに小さく、本当に高速に計算しないといけないなら、十分これも選択肢に入る。 初手でエラトステネスの篩を選ぶことを攻めはしないが、複雑なアルゴリズムはバグりやすい(実際この人はバグらせているわけだ)。 競技プログラミングを経験していると、たぶんこういう感覚が自然と身につくと思う。

ブレインストーミングとは何か, なぜやるか

ブレインストーミングとは何か

集団でアイデアを出し合うことで創造性の高いアイデアを捻出する方法論。略してブレストなどと言われる。この方法についてはWikipediaが詳しい。

ブレインストーミング - Wikipedia

掻い摘んで言うと次のようである

  1. 何人か集団が集まる
  2. 各自が思い思いにアイデアを出し合う
    • ここで、他人のアイデアを批判してはいけない
  3. 最後に、集まったアイデアを吟味する
    • イデアの取捨選択をしたり、結合したりなどする

重視するのは創造的なアイデアであり、そのためには多少突飛であっても量を出すことを優先する。そしてそのためにはどんなアイデアでも萎縮せずに出せる環境づくりが重要になる。

ブレインストーミングはどうか, 私の場合

今の会社に入り、上司がこの方法が好きで何度かやらされたことがある。アイデアを出す際に結局、司会役の上司が相槌程度にはなにか言葉を挟むためにそれがアイデアへの評価となり、やがてアイデアを出すことに萎縮するし、最終的に選ばれるアイデアは上司が出したもの、というのが常だった。そんなわけでブレストという形式を採用することはなくなった。

結局の所、この手の方法論というのは「上手くやれば上手く行くが、向き不向きもあるよね」という当たり前にも思える前提がある。しかし、これは果たして本当だろうか? 多くの人にとってこの方法は有効なもので、上手く活用出来ているのだろうか。

ブレインストーミングを何故やるか

Wikipedia を見ても、どのように実践するかは詳細に書いてあっても、その効果については何も触れていない。ブレインストーミングAlex Faickney Osborn - Wikipedia が開発したとされ、1942年出版の彼の著書 "How To Think Up" で既に "Brainstorming" というそのままの名前で紹介されている。

この効果を調べようとした研究はいくつかある。1991年のメタ分析論文によれば

Generally, brainstorming groups are significantly less productive than nominal groups, in terms of both quantity and quality.

と結論付けられている。つまり頭数を揃えてもそれを活用する方法としてブレインストーミングは多くの人間にとっては適切ではない。

さて、"A Meta-Analysis of Group Size Effects in Electronic Brainstorming", 2007 によれば、研究はとっくの1980年代には エレクトロニックブレインストーミング (EBS) にシフトしており、この論文ではこちらの効果について検証している。EBS というのは従来のブレインストーミング (Verbal BrainStorming) のアイデア出し部分について改良したもので、アイデアを出す部分は結局一人で考える方がマシだというのが経験的に分かっていたので、そこを一人で、紙か何かに書き出し、皆のが集まったら他人のアイデアを見て、また一人でアイデア出しをする、というプロセスに変更したもの。同論文ではその効果について調べた論文のメタ分析を行っている。

We found that groupsize is a significant factor in predicting the performance of EBS relative to verbal brainstorming and nominal group brainstorming.

とあり、四人を超えると従来のブレストを超え、人数が増えるにつれて効果は増し、10人を超えると、個々で考えて最後にアイデアを集めるという方法 (nominal group) より良かった。

正しいブレストのやりかた

  • 10人いない場合
    • ブレストではなく、各自で勝手に考える
  • 10人いる場合
    • ブレストの改良版であるEBSという手法を採用する