#10/20 Sorting: Bubble Sort [Cracking the Coding Interview Challenges]

#10 Sorting: Bubble Sort www.hackerrank.com solution 与えられた数値をバブルソートアルゴリズムを使って昇順にソートし、スワップ回数、ソートの最初と最後を指定のフォーマットで出力する問題。 以下、rubyでの解答。 def bubbleSort(n, elements) tota…

#9/20 Tries: Contacts [Cracking the Coding Interview Challenges]

#9 Tries: Contacts www.hackerrank.com シンプルなコンタクトリスト管理アプリケーションを作成する問題。 以下のフォーマットの入力が与えられる。 4 add hack add hackerrank find hac find hak 1行目はオペレーション数、2行目以下は、スペース区切りで…

#7/20 Trees: Is This a Binary Search Tree? [Cracking the Coding Interview Challenges]

#7 Trees: Is This a Binary Search Tree? www.hackerrank.com データ構造が二分探索木になっているかどうかをチェックする問題。 The value of every node in a node’s left subtree is less than the data value of that node. The value of every node in…

メアリと魔女の花を観た

*以下の内容はネタバレを含みます。 「メアリと魔女の花」を観てきた。 www.maryflower.jp 以前映画館で予告を観た時、とても面白そうだと思った。 予告を見る限り、どう観てもジブリ作品にしか見えないが、スタジオポノックというアニメ制作会社の作品らし…

#8/20 Heaps: Find the Running Median [Cracking the Coding Interview Challenges]

#8 Heaps: Find the Running Median www.hackerrank.com 以下のような入力が与えられる。 1行目は、データの数、2行目以下はデータリストに追加する数となっている。 6 12 4 5 3 8 7 上記の入力が与えられた場合、1行毎にデータリストへ値を追加し、その時点…

#6/20 Queues: A Tale of Two Stacks [Cracking the Coding Interview Challenges]

#6 Queues: A Tale of Two Stacks www.hackerrank.com キュー操作を行う問題。以下のような入力を受け取る。 6 1 42 2 1 14 3 1 28 1行目はデータの数。2行目以下は、1つもしくはスペース区切りで2つの数値が入力される。 最初の数値をtype、2つめの数値をx …

#5/20 Stacks: Balanced Brackets [Cracking the Coding Interview Challenges]

#5 Stacks: Balanced Brackets www.hackerrank.com 括弧記号のみで構成される文字列が入力として渡される。 {, }, (, ), [, ] 文字列の括弧が均衡していれば、YES、それ以外は NO を出力する。 例えば{[(])}は均衡していない。なぜなら閉じていない([) 部分…

#4/20 Linked Lists: Detect a Cycle [Cracking the Coding Interview Challenges]

#4 Linked Lists: Detect a Cycle www.hackerrank.com linked lists(連結リスト)を題材にした問題。 リストを走査中にいずれかのノードが1回以上訪問された場合、trueを、それ以外の場合はfalse を返す。 solution 解答可能な言語選択にrubyがなかったため、…

#3/20 Hash Tables: Ransom Note [hacker rank / Cracking the Coding Interview Challenges]

#3 Hash Tables: Ransom Note www.hackerrank.com 3行の入力が与えられる。 1行目: スペース区切りで、magazineの単語数、ransom note の単語数がそれぞれ数値で指定。 2行目: magazine の単語がスペース区切り 3行目: ransom note の単語がスペース区切り …

GitHub pages でnode_modules下のファイルが404で読み込めない

問題 GitHub pages に置いてたページがwebで表示するとなぜか崩壊していた。 いつの間にか(何も変更してないのに!)、node_modules/ 下のファイルが404で読み込まなくなっていて、node_mosules/下のcssやjsファイルを読み込めむことができず、崩壊に至った様…

#2/20 Strings: Making Anagrams [Cracking the Coding Interview Challenges]

#2 Strings: Making Anagrams www.hackerrank.com 2つも文字列を受け取って、両者がアナグラムになるまで不要な文字列を削除して削除した文字数を返す、という問題。 a = gets.strip.split("").sort b = gets.strip.split("").sort deletion = 0 until (a+b)…

#1/20 Arrays: Left Rotation [Cracking the Coding Interview Challenges]

暇つぶしに、hacker rankの Cracking the Coding Interview Challenges を初めた。 平日毎日1題ずつ解けば20日で終わる程度のボリュームで良さそう。基本的にはrubyで解くつもり。 DATA STRUCTURES 9題 ALGORITHMS 6題 TECHNIQUES/CONCEPTS 5題 www.hackerra…

目黒でイスラエル人と熟成肉ステーキを食べる

同僚のイスラエル人の誘いで仕事終わりに、イスラエル料理を食べにいくことになった。 目黒にある Pink camila というお店。 www.pinkcamila.com 雑居ビルの2階にあるこじんまりとしたお店で、店内はテーブルが4つほど、イスラエル人シェフが1人で料理を作…

Apache Kafkaインストールからチュートリアルまで

Apache Kafkaとは? Apache Kafka is an open-source stream processing platform developed by the Apache Software Foundation written in Scala and Java. The project aims to provide a unified, high-throughput, low-latency platform for handling r…

RabbitMQインストールからPub/Sub機能チュートリアルまで

RabbitMQとは RabbitMQ(ラビットエムキュー)は、Advanced Message Queuing Protocol(AMQP)を使用した、オープンソースのメッセージ指向ミドルウェアである。 RabbitMQ Serverは、Erlang言語で記述されており、クラスタリングとフェイルオーバーのためにOpen …

和キッチンかんなのかき氷を食べる

世田谷区にある「和kitchen かんな 」のかき氷がとても人気だという話を聞いたので行ってきた。 twitter.com よく午後に店外に行列を作っているのを見かける。ここはかき氷専門店ではなく、キッチンと銘打っているいるように、食事も提供している。(しかし行…

PHP7でデザインパターン入門23/23 Interpreterパターン

Interpreter パターンとは Interpreter パターンの基本的な考えは、定義された種類の問題を素早く解くために、ドメインに特化した言語を実装することである。 Interpreter パターン - Wikipedia Interpreterパターンでは、プログラムが解決しようとしている…

RedisインストールからPub/Sub機能を使うまで

Redisとは? Redisは、データ構造サーバーを実装するオープンソースソフトウェアプロジェクトである。いわゆるNoSQLデータベースの一つであり、Redis Labs(英語版)がスポンサーとなって開発されている。ネットワーク接続されたインメモリデータベースでか…

PHP7でデザインパターン入門22/23 Commandパターン

Command パターンとは 動作を表現するオブジェクトを示す。Command オブジェクトは、動作とそれに伴うパラメータをカプセル化したものである。 Command パターン - Wikipedia クラスが仕事を行う時、自分のクラスや他のクラスのメソッドを呼び出す。メソッド…

PHP7でデザインパターン入門21/23 Proxyパターン

Proxy パターンとは Proxy(プロキシ、代理人)とは、大まかに言えば、別の物のインタフェースとして機能するクラスである。その「別の物」とは何でもよく、ネットワーク接続だったり、メモリ上の大きなオブジェクトだったり、複製がコスト高あるいは不可能…

PHP7でデザインパターン入門20/23 Flyweightパターン

Flyweight パターンとは 等価なインスタンスを別々の箇所で使用する際に、一つのインスタンスを再利用することによってプログラムを省リソース化することを目的とする。 Flyweight パターン - Wikipedia flyweighという名がついているように、このデザインパ…

PHP7でデザインパターン入門19/23 Stateパターン

State パターンとは 振る舞いに関する(英語版) デザインパターンの一種である。このパターンはオブジェクトの状態(state)を表現するために用いられる。 State パターン - Wikipedia Stateパターンでは、「状態」というものをクラスとして表現する。「状…

PHP7でデザインパターン入門18/23 Mementoパターン

Memento パターンとは オブジェクトを以前の状態に(ロールバックにより)戻す能力を提供する。 Memento パターン - Wikipedia オブジェクト指向のプログラムでundo(やり直し)を実現するには、インスタンスの持っている情報を保存しておく必要がある。 ただし…

PHP7でデザインパターン入門17/23 Observerパターン

Observer パターンとは プログラム内のオブジェクトの状態を観察(英: observe)するようなプログラムで使われるデザインパターンの一種。出版-購読型モデルとも呼ばれる。 Observer パターン - Wikipedia 観察対象の状態をが変化すると、観察者に対して通知…

PHP7でデザインパターン入門16/23 Mediatorパターン

Mediator パターンとは Mediator パターンを用いると、オブジェクト間の通信は mediator によってカプセル化され、オブジェクト同士で直接通信せず、mediator を介して行うようになる。 Mediator パターン - Wikipedia mediatorとは、「調停者」「仲介者」と…

PHP7でデザインパターン入門15/23 Facadeパターン

Facade パターンとは Facade(ファサード)とは「建物の正面」を意味する。異なるサブシステムを単純な操作だけを持ったFacadeクラスで結び、サブシステム間の独立性を高める事を目的とする。 Facade パターン - Wikipedia プログラムというのは段々大きくな…

第220回TOEIC結果

結果 score: 770 listening: 405 (+5) reading: 365 (+25) スコア推移 伸びてるのか最近はよくわからなくなってきたので、2015年からのテスト結果をスプレッドシートでグラフ化してみた。亀のようなスピードで伸びていることがわかった。 感想 part7長文問題…

PHP7でデザインパターン入門14/23 Chain of Responsibilityパターン

Chain of Responsibility パターンとは Chain of Responsibility パターン - Wikipedia 一つの コマンドオブジェクトと一連の 処理オブジェクトから構成される。各処理オブジェクトは、処理できるコマンドオブジェクトの種類と、自身が処理できないコマンド…

多重配列内の特定のキーを検索しその値を取り出す

下のような多重配列があるとする。 [ 'bar' => [ 'user_id' => 10 ] ] ]; この配列構造を知らない状態で、'user_id'キーの値だけ検索して取り出したい。 再帰処理を書けばいいだけなんだけど、PHPの標準ライブラリで実現できないかと思って検索すると、でき…

PHP7でデザインパターン入門13/23 Visitorパターン

Visitor パターンとは アルゴリズムをオブジェクトの構造から分離するためのデザインパターンである。分離による実用的な結果として、既存のオブジェクトに対する新たな操作を構造を変更せずに追加することができる。 Visitor パターン - Wikipedia データ構…