#174 より良いコードを書きたいあなたへ。コーディング問題が面白すぎたので、シェアしたい!

2023/9/6 ·

  • 本日もノリさん開地会です いいお日柄で いいお日柄ではいというので今日はですね僕が読んで 面白かった本を紹介したい紹介したい 俺より紹介してるじゃんそうかもしれない ただ僕はね内容どうのというよりはちょっとまた今日も体験型エピソードになってしまうんですがはい



  • 世界で戦うプログラミング力を鍛える本っていう楽しみこれなんかなんでしょうねプログラミング界の魔本みたいな本があるんですけどすごそう激アツ激分厚なんですけどいや分厚いねマジでコーディング面接と呼ばれる先行形態ですね対策本みたいなもんで189問コーディングの問題が入ってる本ですと



  • なるほどねこれ弊社のCTOも購入してましたよそうなんですね採用とか考えるのは確かに大事かもしれないですねで僕あんまり強プロとかやってなかったというのでKindleでも安くなってたタイミングがあったんでそのタイミング買って中身見てみて問題解いてみてこりゃおもろいと思ったんでで



  • 物理本まで買ってしまったと物理本買ってしまいましたなのでKindle物理本2つ購入占めて9000円いかないぐらいですねすごいなこれたっけこれKindle安かったんだ物理本4200円ぐらいしたんで高っマジ?Kindleいくらの時に買いました?覚えてないですね1400円とかだった気がしますこれ1回



  • 日替わりセールになったことがあったんですよはいはいはいはいその時500円でしたノリさん持ってるもん大体そうですからねそうなんですすごい強いなんか主婦みたいそうなんです安い時に買って積んでおくっていうそうですねうんまあでもおもろかったんでちょっとこのおもろさを経験してもらいたいですはいぜひ僕まだ積んでるんでそうですよねはいでまあリスナーの方々にはですねうんうん



  • コーディング面接で聞かれそうなことというかコーディングをする上でなんとなく重視されることの勘どころこういうところだねみたいなものを少しでも知ってもらえたらなと思いますうんうん



  • じゃあ話し始めますねよろしくお願いしますまず問題出したいところから始めたいところですがちょっと前置きさせてくださいこの本ですね大きくコーディング面接の乗り越え方の話がちょっと書いてあってあとは問題がちょっと書いてあって解説がズドンってある本なんですけどズドンその中で一章を丸々使ってビッグ大き方の話をしてたんですよビッグ大き方はい



  • やっぱり大事だなと思われるので知らない方知らなそうだなというところでちょっとここで紹介させてください確かにこれは基本情報とか応用情報やってないと触れないんじゃないですか普通に業務でやるだけだと触れない気がしますねビッグオー記法なんですけどこれは何かっていうと計算量を表す記法です表記方法です計算量を知れて何が嬉しいんだっていうとこのコードもしくはアルゴリズム



  • の計算量を知ることで要するに性能を知ることができるんですね量多い方が遅いよねってことですよねどういう書き方するかっていうと大文字のOにカッコつけてその後ろに1って書いてたりとかNって書いてたりとかN2乗って書いてたりしますとN2乗って書いてると計算量がN2乗のオーダーだよねっていう言い方をしててどういう意味かっていうと



  • 1の時は処理量が1だけどインプットが10になると処理量100になるよねみたいな感じで指数関数的に増えていくやつそうそうそうインプットの量に比較してどんどん増えていくよねみたいなものになりますこれ時間計算量って言うんですけど今具体例を言ったばかりで非常に申し訳ないんですがわかりやすい具体例があったので紹介しますね本の中でほう



  • ハードディスクハードディスクありますとこのハードディスクにファイルがあってそれを外国の友人に届けたいと外国の友人に届けたいっていう問題があったとしますどういう方法でやりますかのりさんはそれは制約ないですか普通にメールで送るとかだと何でもいい何でもいいですハードディスクのデータを外国の友人に届けたいメールで送りますメールで送りますね



  • じゃあメールで送る場合計算量さっき言ったオーダーの計算量どうなると思いますかNはい作用でNはファイルサイズですねなので



  • ファイルサイズによって処理する時間が変わるのでオーダーのNになりますどういうことかっていうとファイルが2個あったら2個送らなきゃいけないから2になって3個だったら3になってっていう感じでそれに比例して正比例して増えていきますよね



  • ファイルの数というよりは容量ですね容量か1MB置くのに1秒かかるとしたらそういうことね10MBだと10秒かかると1GBだと1000秒かかるとただその方法って適切じゃない場合があるんですね飛行機で届けるっていう手がありますとファイルハードディスクごとで飛行機で届ける場合ってオーダー1なんですよ



  • まあハードディスク1個持って1個通信ないからってことか通信がないからです通信の場合は今回見たいのってその通信のところを見たいってことなんですかファイルを届けるまでの処理時間です飛行機乗ってる時間は処理時間には含みませんえっとですねオーダーっていうのは作業時間の絶対値を表すわけじゃなくて



  • 量が増えた時にどんだけ処理時間が増えるかを表す表記なんですねなるほどなので飛行機の場合は1MBのファイルだったら埋めるのがそれ早いですよ飛行機片道5時間かかるとしますと1MBは1秒にしましょう一旦分かりやすくただ1日以上かけるには87GB



  • で24時間以上かかりますとって考えるとその容量をメールで送るよりも飛行機で持ってった方が早いんですよなるほどねで飛行機で持ってく場合ってファイルの容量基本的にねハードリスクめっちゃでかくなって飛行機1個じゃ収まんないってなったら別ですけど基本的にはファイル容量と持ってく時間って変化がしないんですよねどんな容量を届けようと思っても1で済む確かに



  • なのでアルゴリズム的には 容量によっては飛行機で持ってく方が優秀なんですねメールで送ると時間かかるからみたいな考え方があるんですよ アルゴリズムの計算量のオーダーっていうのがというのがオーダーで なのでこういうコーディング試験をする上では結構オーダー機にされますなるほどね 計算量なぜなら



  • 個人で使ってる分にはいいけど世界中の人たちが使う場合にものすごい量のインプットが出てきてその時にシステム処理が追っつかなくなっちゃうとそれってなんだろうねビジネス的に良くないこと大人数のユーザーさばけないってことなんで確かにっていうので結構気にされる



  • 傾向があるので結構重要な概念として覚えておいてもらえると良いかなと思います計算量時間計算量ですね時間計算量もう一個実はあって空間計算量空間計算量これは4デジのごとしちゃちのごとしなんですけどどんだけメモリ使うかですねそんな気にしてる必要あるんかって思うかもしれませんがはい



  • やっぱりサーバーもメモリが限られてたりするので限られてメモリ量で処理できるようにアルゴリズムを作るのは非常に重要です空間計算量むずそう計算するの変数何個に入れたとかでもそうですね抽象的な計算の仕方するんでしょうねきっとねこれを一時的にここに入れておかなきゃいけないからみたいなのとかもそうですねなんなら言語仕様を理解する必要がありますね多分このメソッドは



  • メモリを余計に使ってるからこっち使うみたいなねめっちゃシビアに見られる方ないかもしれませんがただ意識して使う必要がある場所はあります例えばラズパイの上でコード作るときとかねある程度メモリを意識する必要があるかなと思ってたりしますなんでしたっけ今ちょっとそれでふと思い出しました昔のゲームって容量ちっちゃいから削減してたみたいなやつで



  • なんでしたっけ桜井さんのやつ桜井さんのやつは星のカービィですねウィスピーウッツですかウィスピーウッツの話木の化け物ですけど木の化け物は木があってそこに目と口がついてるやつなんですけどボスですねただウィスピーウッツは黒い丸の半円だけで



  • 構成されててその黒い丸の半円があればその半円を反転させて丸ができてその丸ができるだけで目と口がつけてで木の化け物なんですけどその木はもともと背景で使ってる木を使うからウィスピーウッズを作ろうと思ってもその半円だけでボスを作れる低容量でボスが作れるぞっていうのでメモリを削減というか節約してたメモリっていうのは今のはストレージの方ですねはい



  • っていう話ですねに近いなと思いました確かに確かに今でも低レイヤーになるとそういう話あるんでしょうねきっとねありそうというのでコーディング面接というかこういう教プロとかもそうかもしれないですけどコーディング面接という言い方をしましょうでは結構こういう計算量重要になってきますがじゃあ具体的に



  • この辺考えながら問題やっていきましょうというのでちょっと2問ほど2問はい問題を紹介させていただきます今日プロは自信ないですね今日プロなのかなというわけではない今日プロチック1個今日プロチックじゃないの1個って感じですねはいではまず第1問ですねこれは聞きながらぜひちょっと一緒に考えていただきたいんですが変数AとBがあったとしてAイコール5



  • Bイコール11が入ってますAとB以外の変数を使わずにこのAとBの数字を5と11ですねを入れ替えてくださいという問題ですはいはいどうぞって言って解くのはしんどいと思うのでなんかウミガメのスープ的に質問していただきながらヒントがポコポコ出ながら考えていくスタイルでいきましょうか



  • じゃあいいですか僕もさっきから考えてたんですけど全くたどり着ける気がしなかったのでそれはちなみにウミガメのスープはわかるか解説お願いしますウミガメのスープというのはですねある特殊な事実みたいなのがあってそれを判明させるために質問形式で質問していくんですけど必ずイエスかノーかで答えれる答えしかしちゃいけないっていう質問を繰り返して答えにたどり着くというゲームでございます



  • はいありがとうございます早速質問いいですかはいお願いしますそれは変数以外なら使っていいんですかノーです定数使えるかってことですねノーですメモリを最小限にしたいのでこういう背景になっているので他は使ってはいけません正直シンプルすぎて何の情報が出せるんだろうとすら思いますそれは最大入しますか最大入はします



  • 最大に失いと何もできないですもんねですよねうわ待って出そうでもまあやれることって限られるじゃないですかめちゃめちゃそうなんですよなのでできるはずですなんか抽象的ですけどえーっとうわー待ってヒント出しましょうかいややめてくれわかりましたヒント引き算使いますか使いますやっぱりはい



  • 引き算したんですよ僕の中の今のところの頭の計算式言っていいですかお願いします今Aに5が入っててBに11が入ってましたなのでまずBイコールB-Aで6をBに代入しました続いてAにAたすBをやりましたそうするとAは11になってBは6になったんですよいけた



  • でBに続いてA-Bを入れると5になる入れ替えれた大正解ですこれすごくないですかすごい引き算と足し算だけでできたそう普段やろうと思ったらねC作ってCに1回どっちか入れて入れ替えてでCをもう1個の方に代入して



  • 入れ替えたってやるじゃないですか何も考えなかったらこれ実はAとBだけでできるんですねこれはなんか今あれですねメモリー使用メモリー計算量を節約した感じがありますはいそうですそうです時間計算量はなんかあんま変わってないな気もします時間計算量はあんま変わってないかもしれないですね問題としてやっぱ考え代を作るためにAとB以外使うなっていう問題だったのでなるほどねおもろー



  • これね脳汁出ましたね確かに僕はこれはうわなるほどと思ってそうだよねありがとうございますじゃあ2問目情報量が増えそうで怖いんですがいけると信じてこれもまた計算の問題なんですけどAの3乗プラスBの3乗イコールC



  • の3乗足すDの3乗っていう式を思い浮かべてくださいAの3乗足すBの3乗足すCの3乗足すDの3乗ABCDがあってそれぞれの3乗がある思い浮かべてくださいAの3乗足すBの3乗イコールCの3乗足すDの3乗が成り立つ数字を見つけてほしいんですけどそんなんいっぱいあるじゃないですかAとBとCと全部1だったら成り立つじゃないですかみたいなものを見つけるアルゴリズム



  • を考えていただきたくてむずすぎだろいやいやいやフェルマーの最終定理じゃんいやそんなことないそんなことない同じ数字使っていいんで同じ数字使っていいんだはいなんでフォア分で



  • 何も考えないとフォア分でABCD全部1000以下だとするとフォア分でAを1から1000まで見てBを1から1000まで見てCを1から1000まで見てDを1から1000まで見てっていうのをフォア分で4個ネストさせてifAの3乗足すBの3乗イコールCの3乗足すDの3乗だったらプリントABCD



  • うんうんうんうんってやるコードができるんですよ確かになるほどね4分を4ループさせればいいとそうですでもそうすると計算量えぐいことになっちゃうよねそうですこれ計算量Nの4乗になってます確かにフォアが4つ重なってるんではいていうのでオーダーN2乗にしてほしいなーっていう問題ですオーダーN2乗はい今何乗なんだ今4乗ですフォアが4個重なってるんでそうかはいフォアが2個しか重なってないうん



  • 状態で書き直してもらいたいなっていう考え直してもらいたいなるほどねうわーこれちなみにこれは数学的知識が必要になりますかいいえいいえいらない因数分解しますかしませんしませんかシンプルにリファクタリングですさっきのコードのリファクタリングはいえーっとこれは再起を使いますか使わないかな使わないでもなんか悩んでいる



  • 再起ってどういうイメージですかすいません改めてで再起処理っていうのは例えば関数Aがあったときに関数Aの中で自身を呼び出す処理のことですねやりませんループの書き換えといえば再起じゃないのかそれ結局ループしますもんね再起してもなんでオーダーは変わんないですよねうん確かに3乗あんま意味ないです3乗に意味ないですよね2乗でもいいです



  • ですよね4乗でもいいですなんなら乗じゃなくてもいいまあそうですねそうかなそうなのかな多分そうです問題の複雑度は変わりますよねまあプログラム的には変わんない気がしますね確かにそうですよね別に類乗の数の部分ってフォールループに関係ないですもんね関係ないですねじゃあ今完全に俺の中ではもう今AたすBイコールCたすDのうんいいですよ方式になってるんですけど多分いいと思いますそれは



  • 左辺と右辺を入れ替えるみたいなことしますかしません多分してないと思うしてないですなんでしょうね考え方によってはAたすBイコールCたすD成り立つかなって思った時に実質引き算してるじゃないですかA-DイコールC-Bみたいな移行したらそんなことはしてないですもっとシンプルもっとシンプルAたすBイコールCたすDのまま考える



  • それはAとBとCとDがそれぞれ異なる値だった場合でも成り立つアルゴリズムですかそうですねそうなめした上で全通り出す必要があるので全通り出すんだ全通り出す一パターン見つけるじゃダメなんだダメですいっぱいありますからね全部1の時も出ますし全部2の時も出ますね全部同じ値だったらそれは成り立ちますねどの時でも成り立つよねでもそうじゃない時も成り立つんでその辺の数字を全部



  • 出すっていうプログラムですねアルゴリズム今4ループの4階層になってしまってるので2階層ぐらいにしてほしいな2階層すごいなんか本当に不思議な話でちょっと考えてもらいながらつなぎでお話ししちゃうんですけど40ループだとやっぱり今1000って言いましたから1000の4乗階とんでもないね計算しなきゃいけないんですけどね同じことやろうと思っても実はこれ



  • Nの2乗のオーダーなんで答え言ってしまうとオーダーだけ1000×1000×1000×1000にできちゃうんですね足し算節約文で言うと1000×1000×1000×1000って何本1兆が



  • 200万ぐらいに節約できるんですねえーすごすぎだろすごいですよねでかいですよねこの効果はそんなの俺のちっちゃな脳みそから出てくるのか出るんですね計算量だけで言うとねえーマジでそうこれ面白いんですよだからちなみにさっきのえーっと足し算が入ってきたのは解放のヒントになり得ますか足し算が入ってきたのは



  • 1000×10001000×1000×1000って言ってもいいですか樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋口 樋



  • やっぱりABCDがあるので全部舐める必要が絶対あるんですよねただ全部舐めるときに重なってるとやっぱり回数が増えちゃうので分割しましょうとさっき40になったループが半分半分に分かれてでうまいことやってイコールというかABCDを出力できると4分のループ数は別に関係ないですよね今回のあれに



  • そうですねまあさっきで言う別に10でも100でも良くてただ1000だとさっきみたいにね1兆と200万でこんなに計算量違いが出るんだっていうのがまあ感じられるっていうところがじゃないですかねなるほどね参考までに10でやると10×10×10×101000違う1万と200になるんですねこれも結構違うイメージになりますね確かに



  • 1万と200はだいぶ違うな違いますねここからねフォアの二重ループとかの悪さを感じれますよね確かにうわーちょっと待ってただこれはむずいかもしれない激むずな気がするんですけどちょっと解説しちゃいましょうか諦めませんかまだいきますかヒントないですか1個ヒントはそれを出さなきゃ意味ないかちょっと待って絶妙な質問出すかそれは左辺と右辺を



  • 分けてますかはいじゃあもう1個の4ループのネストは本当に左辺用でもう1個は右辺用ってことですかそうですねこれはちなみに僕が手元で普通にどっちもやってみたんですよ4の40ループとNの2乗のやつマジで運命の差マジか本当に運命の差なんなら40ループの方終わんなかった処理終わんなかったって言うか諦めました途中でマジでマジではい



  • こんな違うんだってなりましたうちのM1マック君がヒーヒー言ってましたけどそうなんだでも前が左辺で後ろが右辺ならそこの値がイコールになればいいのかうんうんうんうんはいはいまあ最終的にABCD出す必要ありますけどねそれは別の変数に何かを格納しますかはいお?まあダメだでももう1ループすることになるなこの方法だとほう



  • 僕のたどり着いた今言ってきる一番そうですね喋りながら答えにたどり着く可能性ありますからねとりあえず前の項のフォールーパーあるじゃないですかはいそこで多次元配列で多次元配列じゃなくていいか左辺の計算結果を突っ込みます配列にはいはいはいで次に右辺の



  • 右辺用の変数も作りそこに右辺の結果を格納しますそれをその次のループで全部回して一致してるかどうかをチェックしてだからあれだねやっぱだから多次元配列じゃないとダメか



  • AとBの値と合計値かなの多次元配列を残していって左辺用と右辺用の列作りますと多分それぞれ100万個ずつ格納されると思うんでこの時点で200万回計算されますと最後のループかますことによってもう100万回動くんです違うなもう100万回動くんですけどあれそんな組み合わせやる必要あんのかこれ一個一個うん



  • 2つに分けた時ってもしかして1位の値になる?1と1だったら1位の値にはなんないですね答えは多分例えばですけど100になる組み合わせは何個かあるみたいな感じだと思います言ってる意味わかりますよねあーそっか100と101同じだよねってことかそうそうそうそうこれあれ使いますか組み合わせとか順列みたいなやつNOですねNOかはいわーダメだ俺だと300万が限界だいやでも頭で



  • すごいよくよくって感じですけどまあポイントはオーダーであるってところはポイントなんですけど解説というか答え的なところでのりさんのアプローチ非常に惜しいですもう一歩だったと言っても過言ではないまずループはですね右辺と左辺で分けますじゃあ一旦CD最初にやってAB後で処理することにしましょうかでCとDで1から1000までループを回して次の作業をします



  • この作業はCの3乗とDの3乗を足したリザルトっていう変数を作りますでそのリザルトとCとDを使ってハッシュを作ってハッシュ?ハッシュ?ディクショナリー?ハッシュはあれですねディクショナリーとかハッシュって呼ばれる方の並括弧にキーとバリューが入ってるあれですねでリザルトかな



  • 計算結果をキーにバリューにCとDを入れますこうすると結果を入れるとCとDが返ってくるみたいなものが作れてそれをまず一回作りますと次にAとBのループを回しますAとBも同様にAの3乗足すBの3乗とリザルトを作って最後にそのリザルトと一致するものをループで回して



  • ハッシュもしくはディクショナリーから探しますそういうことかポイントになるのが配列探すときってゼロからガーって見に行くんでオーダーNなんですけどハッシュは



  • キーから探しに行くので基本的にオーダーが1ですとなのでハッシュから見つけに行くっていうところで計算量を削減してそれで出てきた総当たりで出てきた例えばだから値が100になるものをCDをガーッとピックアップして見つけ次第ABとそのCDを出力するみたいな形で



  • 最終的に総当たりなんですけどハッシュのこの答えの総当たりはやるんですがそれも言ってそんなにないんでなるほどね配列のキーみたいになってて配列だったらキー指定していきなり取れるよねってことですかキーの中にはさっき言った例えば100になる組み合わせですね100というか



  • 数字具体的に言えないんですけどそのペアがポンポンポンって入ってるんでそのペア全部引っ張ってきて一致したABとともに出力すればいいというので最終的にオーダーN2乗でできるっていううわーまじかーここからまあそうですね結構僕この本の問題解いてて思ったのは計算量削減するには結構ハッシュとかディクショナリー有効だぞっていうのがすごく



  • 学びとしてありましたねなるほどねこういう複雑な処理するときはデータを配列のまま処理するんじゃなくて一回そういう端とかディクショナリーに入れてキーバリューの形にすると後で処理するときに探し出す手間がものすごく省けるとなるほどね



  • これは普段の業務でも非常に生きるなと思って読んでましたこれね生きるんですよ生きるんですか今ちょっと話聞いててとある実装を思い出しましたルックアップテーブルっていうテクニックなんですけどほぼハッシュみたいな感じですねif文とかスイッチ文使ってもしここだったらこの変数にこれを入れるみたいなっていうif文がめちゃくちゃ並ぶときあるじゃないですかあのとき



  • それを知ってたのに解けなかったははははは



  • いやマジで同じ話ですねそれそうですね繋がらなかったルックアップテーブルって言うんだそれ初めて知りましたマジかでもいいですねこれがねちょっとね僕とのりさんは今気持ちよくなってるんですけど今いないじゅんぺいだとかリスナーの皆様にどれだけ届いてるのかというのは非常に不安なところではあるんですけどこれねたぶんじゅんぺいだったら届いてないですよねいない中でこんなこと言うのもしてるんですけどどうだろうなじゅんぺい



  • 後で聞いて感想を言ってほしいないつものねよく分かんない時の顔する気するわこれはいっていうのでねこれ今189問あるうちのたった2問を紹介させていただいたんですがこういう感じのねちょっと非常になんでしょう



  • 問題ごとにここがポイントだよみたいなのが含まれた問題がいっぱいあるんですよこれなるほどね1問目だったら工夫がやっぱり必要で2問目もやっぱり工夫が必要でしたとこの問題だとこういう工夫が必要なのねっていうのがなんと189問入ってますわすごい多すぎだろ全部やるには1年以上かかりますよそうだよだって1日1問やって半年だけど僕実績値1週間で11問か12問くらいです



  • じゃあ本当にそのペースでやったら1年弱って感じかライトなやつはねまあまあライトに終わるんですけどヘビーなのもあるんでやっぱりまあでも言って面接試験想定なので長くても1時間とかかな多分もうちょっとかかるかもしれないですけどまあでも結構ね他の技術書と比較して体系的ではないにしろ



  • アウトプットできる知識がつくと思ったんですよ使える知識っていうんですかなぜなら使わされるからなるほど確かにそうだろうなっていうのでねちょっとねこの本おもろかったんでコードの書き方変わりそうって思いましたねこれは変わるマジで変わるあの書き出しそうの方もまだそんなの早いよって思うかもしれませんが実はそんなこともなくほう



  • 本当ですか今のところ僕これ中級が変態になるためのやつだなっていう気もしてるんですけどどうだろうなやれって言われたことをこの本だとブルートフォースで解くって言ってるんですけど例えばさっきで言う4の40ループでとりあえず書いてみるみたいな総当たりってやつですね4の40ループでコードを書けるようになると思うんですよ書き出しの方も最初に書けるようになったわって言ってどっちのベクトルに尖っていくかだと思うんですけど



  • そうですねユーザーがたくさんいる系のシステムやってる人は計算量言われると思うんですよね僕は確かにパフォーマンスとかでそのパフォーマンスって学ぶ方法結構むずいと思ってて僕は初めてこれだっていう本に会いましたこのパフォーマンスとかに関しては確かになんか基本情報とかでもそれは出ますよはい



  • とはいえそうだよねクイックソートはONログN2乗かなログ2のN乗か置いといて細かいことはとか言われますけどアンキーじゃないとりあえずバブルソートは押せクイックソートは早えみたいな自分の書いてるコードのオーダーなんてね



  • 動いてるし単体テストも動きますからこれでねまああと高級言語使ってたら裏側で何してるか分かんないですよまあねフォーブンとかも実は裏で最適化してたりしますからねまあそうですねとはいえ僕あの1年目で最初に入ったプロジェクトAPI遅くて直す羽目になったんでマジか総合試験の後かなあと総合試験中かすいませんって当時思ってましたけどとはいえ



  • なんだろうだってしょうがないじゃないかぐらいの気持ちだったんですけど絵なってたんですけどなのでちょっと求められる人いるんじゃないかなと思っててそういうのにちょっと詰まってたりとか気にされてる人はぜひちょっと読んでみると良いかなと思います楽しいです絶対これこれめっちゃ面白い本当に面白いっていうのでいろいろ本読んでるわけなんですが年末あたりにもね



  • 今年面白かった本を改めてまたピックアップしてこれおもろかったぜってランキングノリさんと言えればいいかなと思ってるのでありますね 消費者も毎年やってますからねやってますね エンジニア本大賞あれと同じ感じですかすっごいなんかしょぼいですねこっちまあいいですけど超えようって入り口とかインプット量の限界があるからねそうですね向こう側の審査員の人とかね名立たる人たちですよね本当に



  • 全部読んでるんじゃないかみたいなねしかもちゃんと応募もいっぱいあるんで選択肢がいっぱいあるんですけどね確かに確かに我々狭いですよ本当に月一冊しか読んでないですから本当ですよね月一冊読むのがまず一旦目標なんでね達人への道というところでですねちなみにちょっとその今日のエピソードの中で出てきたところのなんか語彙の質問というか



  • ハッシュって言ってたじゃないですかあれなんかすごい言語によって呼び方違うなって思うんですよねハッシュって何言語の時ハッシュでしたっけあれCはハッシュって言うと思いますCはハッシュパイソンだと辞書とかディクショナリーって言いますよねPHPだと連想配列って言うんですよほう日本語ですねめちゃくちゃはい



  • 英語だとASOCって出てくるからアソシエートなんちゃらだと思うんだけどちなみにRubyはハッシュですねRubyはハッシュなんだJavaScriptはないんですよねそういうのがないの?確かオブジェクトになっちゃうオブジェクトかオブジェクトあればいいかワンチャンJSONみたいなもんですからねJSONだねJSONがそんな感じで使われてますね



  • なんでこんなに違うんですかねマジで一緒にしてほしいですよね配列だけはさなんか高松配列なのにさ配列ってリストですよねリスト以外の言い方アレイルビーアレイですね確かPHPもアレイですねでパイソンリストですねマジでA単語としての意味の違いよく分かってないですアレイがそれ系のやつちょっと今おさらいしてみます



  • タプルとかもあるじゃないですかタプルありますねタプルセットはタプルセットですねタプルセット以外見たことないですタプルとセットはタプルとセット以外見たことないそうだよねタプルが変更できない配列ですよね中身をセットはなんだ重複なくした配列ですね重複をなくした配列かストリングイントイントはねビット数どうのとか指定ありますけどね



  • 小数ちょっと分かれる気がするなフロート?フロートとかショートってショートあるわショートってちっちゃいイントじゃね?ちっちゃいイントだっけ?ダブルじゃなくてダブルかダブルとフロートは違いますね倍精度だからそうか他なんかあるかなちなみにJavaScriptはイントがなくてナンバーですね出ました



  • 出ましたナンバー型っていう言語他にあるんですかねナンバーレアだよねでもレアだと思いますよデータベースかオラクルのデータベースはナンバー型ってあるなハッシュって聞くとハッシュ関数思いついちゃいますよねいやそうハッシュって言われてさっきハッシュ化すんのと思っちゃったけど違いますねそういうことねわかりづらいはい



  • まあちょっとここはね気を付けていきましょうっていう感じですねそうねまあこの本というか僕が読んでたこのプログラミング力を鍛える本ではハッシュって言い方されてますねなるほどまあ書かれてる答えに書かれてる言語はまあそうですねいろいろ問題によるんですよねオブジェクト思考の言語のところは言語じゃないオブジェクト思考のところはジャバだった気がしますけどさっきのアルゴリズムジャバだったのかな違う気がするな関数で書かれてたからうん



  • ちょっと注意していきましょうそうですねありがとうございますいい気づきでした終わりますか終わりますかでは最後ハッシュタグひまじんプログラマーでハッシュ



  • ハッシュハッシュタグハッシュタグ気になっちゃうじゃんマジかマジかコメントとか募集してますのではいXにてポストお願いしますよろしくお願いしますあと説明欄にGoogleフォームからお便り送れるようになってますので番組の要望質問なんでも募集してますのでお願いしますはいこういう問題解いてほしいとかもねぜひほうきついなおー震えちゃうぜそんなの答えとセットで送ってくださいはい



  • 読まないでね答え部分はそうねチャレンジしてあたかも出されて悩んだ上でリアルタイムに解いたみたいな感じにするんで本当にそういう時はだいたい僕とじゅんぺいがメール読んでないんで読まないでくださいって言われる時ありますからねまあだいたい言ってますねそうですねそうじゃないと成り立たないしねはい



  • それではお願いしますはいでは引き続きまた面白いトピックがあったら共有しますよろしくお願いしますではまた次回バイバイ



  • さあ皆さん次の商品は目玉商品ですこちらめちゃくちゃでかいエンターキーわー大きいこれがあるとストレス発散生産性アップ快適な睡眠もえ枕にしちゃうんですかこちらの商品はお値段など1024円わー2の10乗



  • そして今番組終了1時間以内にGoogleフォームよりお便りを送った方はちっちゃいスペースキーも付いてきますポケットに入れて持ち運べますね番組の高評価フォローもすると会員割引なんと90%オフほぼただ今すぐご応募

0:00 40:47

#174 より良いコードを書きたいあなたへ。コーディング問題が面白すぎたので、シェアしたい!