タグ

algorithmに関するharry0000のブックマーク (50)

  • なんと!異世界の地図を生成できるジェネレーター -Fantasy Map Generator

    映画ゲーム、アニメ、ラノベなどの世界、この地球上にはないファンタジーの世界や異世界の地図を生成できるジェネレーターを紹介します。 Fantasy Map Generator Fantasy Map Generator -GitHub ジェネレーターはMITライセンスで、地図を作成するのもコードを活用するのにも利用できます。 というわけで、Fantasy Map Generatorを使ってみました。 まずは、地形のベースとなるポイントを設定します。お気に入りの形状になるまで、何度でも作成できます。

    なんと!異世界の地図を生成できるジェネレーター -Fantasy Map Generator
  • プログラミング面接を突破する方法 (後編) | POSTD

    この記事の前編はこちら: プログラミング面接を突破する方法 (前編) 5. 成果を強調する される可能性のある質問の3種類目は、経験です。面接官は、過去に完成させたプログラミングプロジェクトについて話すよう要求してきます。この質問で多くのエンジニアが犯す間違いは、技術的に興味深いサイドプロジェクトについて話をすることです。多くのプログラマは、ニューラルネットワーク分類器を実装した経験や、Twitterボットを書いた経験について話そうとします。しかし、その選択は間違っています。面接官がそういった分野のことを評価するのは、非常に難しいからです。多くの求職者が単純なサイドプロジェクトを誇張します(実際にやったことがない場合もある)が、面接官には、あなたがそれをやっているかどうかを知る方法はありません。 解決法は、結果を生んだプロジェクトを選んで、結果を強調して話すことです。必ずしも技術的に興味深

    プログラミング面接を突破する方法 (後編) | POSTD
  • プログラミング面接を突破する方法 (前編) | POSTD

    稿は来、当サイト会員にお渡しする資料として作成したものですが、このたび公開することにしました。 プログラマとして腕が立つということが、その職で入社面接を受けた時の合否にどれほど影響するかというと、意外なほど重要性は低いのです。生産性の高いプログラマならば必ず、何週間も何カ月も広範囲に拡大し続ける問題を解決する力を持っているはずです。これに対して面接での質疑応答は、1つのトピック当たりせいぜい1時間です。そんな面接で成功するためには、緊張する中で小さな問題を素早く解決し、同時にあなたの考えを明確に説明しなければなりません。これはプログラミングとは異なるスキルです ^(1) 。まず断っておきたいのは、面接官の中には往々にして場慣れしておらず、どこか上の空な態度で求職者に接し(そういう面接官は面接よりもプログラミングがしたいのでしょう)、実際の業務とは全く無関係な質問をしてくる人がいます。そ

    プログラミング面接を突破する方法 (前編) | POSTD
  • Scalaで型レベル”だけ”でクイックソート | POSTD

    Scalaの型システムが先進的であることは、皆さんもご存じのことかと思います。この投稿では、Scalaの型システムのみを使った クイックソート アルゴリズムの実装方法をご紹介したいと思います。なお、ここで紹介するデモの完全なコードは こちら をご覧ください。 自然数 まずは準備から。ソートアルゴリズムを実装するには、ソートする対象が必要ですよね。ここでは自然数を用います。もちろん、Scalaの型システムには利用可能な自然数はありません。そんなわけで、全ての自然数の型を作る必要があります。 型を無限に作るというのは、恐らく時間の浪費になるでしょうから、ここはもう少し賢い手を考えます。そう、数学を使いましょう。 ペアノの公理 ペアノの公理とは、自然数を形式的に定義するためのシンプルな方法のことです。 0 は特別なものとする。 0 は自然数である。 全ての自然数 n には、それに続くもう1つ別の

    Scalaで型レベル”だけ”でクイックソート | POSTD
  • Haskellで無限個の無限リストをソートされた形で結合する - プログラムモグモグ

    CodeforcesやProject Eulerの問題には、無限リストをうまく使うと綺麗に解くことができる問題がたくさんあります。 数列の性質から探索範囲の上界を決めて解を探索することが多いのですが、きちんとした根拠を持って上界を決めることができることは少なく、余裕を持って十分に広い範囲で計算して解を求める解法がよく取られます。 Haskellの特徴である遅延評価とその洗練された糖衣構文を用いると、無限リストを簡単に扱うことができます。 上界を適当に定める解法よりも、より宣言的で美しく、時に効率的なコードで同じ解を得ることができます。 しかし、無限リストをきちんと、それも無限個の無限リストをきちんと扱うとなると、意外と苦労します。 この記事では、無限個の無限リストをソートされた形で結合する方法について説明します。 一般的な無限リストではなく、条件はかなり絞っていてます (そうでないと原理的

    Haskellで無限個の無限リストをソートされた形で結合する - プログラムモグモグ
  • WebGLで暴力的な並列ソートに挑戦する

    日照時間足りてますか?やまだです。 KLab Advent Calender 11日目の記事です。 最近WebGLで実装できるちょっと強そうなソートアルゴリズムを知ったので書いてみました。 WebGLよくわかんないやーって人も雰囲気だけでも伝われば幸いです。 強さの秘訣 WebGLは3Dを描くAPIとして著名ですが、2Dはもちろん、工夫次第で汎用計算(GPGPU)にも応用できます。 WebGLでの演算は通常のJavaScript演算とは違い、GPUを使った並列な浮動小数点演算を可能とします。 そして、ソートアルゴリズムの中には計算量こそ地味なものの、並列処理が可能なものがあります。 そのうちの一つがバイトニックソートです。 GPUを使い、物量で計算する暴力的な並列ソートをやっていきましょう。 バイトニックソートとは 前述のとおり、並列処理が可能なソートアルゴリズムです。 配列を小さい領域に

    WebGLで暴力的な並列ソートに挑戦する
  • サルでも分かるwaifu2xのアルゴリズム

    ログイン

    サルでも分かるwaifu2xのアルゴリズム
    harry0000
    harry0000 2015/06/10
    プログラミング界のネコとサルの頭の良さは異常
  • 何回で満点とれる?【ちょまど問題に挑む人々】

    @chomado さんの「社内のセキュリティ研修のテスト(4択全10問)」を満点をとるまで延々とやらされる場合に何回やり直せば満点を取れるかという問題に立ち向かった人々の記録です。 ■ちょまど問題(引用・加筆) 4択問題10問のテストを全部埋めて提出すると正解数がわかります。 何回提出すればすべての正解を知ることができますか。 続きを読む

    何回で満点とれる?【ちょまど問題に挑む人々】
  • 整数を可逆スクランブルする - C Sharpens you up

    2年前につぶやいた内容の詳しい説明。 32ビット整数をとりあえずスクランブルするすごく簡単な方法に気付いてしまった。なにか奇数をかけると、それにかければ元の数に戻るような奇数が必ずひとつあるから、それを力任せで見つけてしまえばいいんだ。ビット回転→奇数をかけるを3回繰り返すとほぼバラバラ。— ゆば大好き (@yuba) October 18, 2011 整数を、暗号ライブラリ使うほどじゃないんだけどスクランブルしたいことってあるんですよね。たとえば、IDを連番で振ってるんだけど連番だってことがユーザーにわかってしまうと具合が悪いとか。そういうときの簡単なスクランブル方法です。ただし、符号なし整数でしか使えないのでこの時点でJavaは対象外ごめんなさい。 まず32ビット整数版のC,C++,C#で動くコードです。 uint Scramble(uint v) { // 奇数その1の乗算 v *=

    整数を可逆スクランブルする - C Sharpens you up
  • AAAI2015で発表した - でかいチーズをベーグルする

    AAAI2015で発表してきた。タイトルは"OMNI-Prop: Seamless Node Classification on Arbitrary Label Correlation"。必殺チェアーからの質問による時間稼ぎは出ずにちゃんと聞いてくれてる人たちから質問が出たから良かったかな。 今回はソーシャルネットワークにデータを限らずに出来るだけ広範囲のグラフに適用できるアルゴリズムを提案した。話を一般的にしようとすればするほど大変だといういい経験が出来た。ドメインに特化した問題を解くアルゴリズムももちろん重要だけど、やっぱりいろんなデータに対して適用できるアルゴリズムを提案するってのはその分野の発展にも寄与できるしもっと重要だと思う。 OMNI-Prop: Seamless Node Classification on Arbitrary Label Correlation from

    AAAI2015で発表した - でかいチーズをベーグルする