タグ

algorithmに関するAmaiSaetaのブックマーク (43)

  • 分かると、実に、おもしろい! QRコードの仕組み

    少しマニアックな知識、QRコードの仕組みを紹介します。 QRコード決済、リンクをQRコードで提供するなど、日常的に使用されているQRコードにあるそれぞれのパターンがどのように機能しているか、どういう役割をしているのか、なぜ上下逆さにしても読み取れるのか、なぜ一部が隠されても読み取れるのかなどが分かります。 QR codes by Dan Hollick (@DanHollick) 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 はじめに QRコードの仕組み 終わりに はじめに QRコードがどのように機能しているのか、疑問に思ったことはありませんか? 控えめに言って、実に、おもしろい! 注意: この記事⬇では非常にマニアックな内容が含まれています。 QRコードの仕組み QRコード(Quick Response code)は自動車部

    分かると、実に、おもしろい! QRコードの仕組み
  • アルゴリズムの世界地図 - Qiita

    こんにちは、square1001 です。 現在は東京大学の学部 1 年生をしています。私は中学 1 年の頃からプログラミングをやっていて、特にアルゴリズムが大好きです。AtCoder をはじめとする 競技プログラミング にも取り組んでいて、中高生のときは 情報オリンピック にも参加していました。 記事では、アルゴリズムや競技プログラミングに興味がある方、あるいはプログラミングをやっているけどアルゴリズムをよく知らない方に アルゴリズムはどんなもので アルゴリズムを使うとどんな問題が解けて アルゴリズムが地球のように広く、多様で、奥深く、そして楽しいこと を知ってもらおうと思っています。 アルゴリズムの世界へようこそ 時代は 2020 年代に突入し、急速に IT 化 や DX が進んでいく中で、問題を効率的に解くアルゴリズム技術の重要性が、ますます高まっています。そして、アルゴリズムは、世

    アルゴリズムの世界地図 - Qiita
  • OpenDataStructures.jp

    オープンソース版 Open Data Structures 日語訳の PDF ファイルを以下で公開しています。最新のソースコードは GitHub のリポジトリ https://github.com/spinute にあり、適宜こちらの PDF ファイルに反映しています。 以下のものは C++ 版です(Java 版はこちら、疑似コード版はこちらにあります)。 目次 訳者まえがき 書の読み方 訳者謝辞 なぜこのを書いたのか 謝辞 第1章 イントロダクション 効率の必要性 インターフェース 数学的背景 計算モデル 正しさ、時間計算量、空間計算量 コードサンプル データ構造の一覧 ディスカッションと練習問題 第2章 配列を使ったリスト ArrayStack:配列を使った高速なスタック操作 FastArrayStack:最適化された ArrayStack ArrayQueue:配列を使ったキュ

    OpenDataStructures.jp
  • できるだけ嘘を書かずに計算量やオーダーの説明をしようとした記事 - えびちゃんの日記

    計算量についてのお話です。対象は、プログラミング経験はあるが計算量のことを知らない初心者から、計算量のことを知っているつもりになっている中級者くらいです。 数式を見たくない人にとっては読むのが大変かもですが、深呼吸しつつ落ちついて読んでくれるとうれしいです。 それから、この記事が自分には合わないな〜と思ったときは、(別の記事を Qiita とかで検索するよりも)この記事の一番下の 参考文献 にあるを読むことをおすすめします。Amazon の試し読みで無料で読めます*1。 TL; DR 関数の増加度合いのことをオーダーと呼ぶよ 計算量は、入力サイズ(など)を受け取ってアルゴリズムの計算回数(など)を返す関数だよ その関数のオーダーについての議論がよく行われるよ オーダーを上から抑えるときは \(O\)、下から抑えるときは \(\Omega\) を使うよ オーダーを上下両方から抑えたいときは

    できるだけ嘘を書かずに計算量やオーダーの説明をしようとした記事 - えびちゃんの日記
  • 「DIは必ずしも善ではない」| Dependency injection is not a virtue by DHH

    DHHの Dependency injection is not a virtue(2013) という記事は有名ですが、ちゃんとした日語訳が意外とないようなので、書き出してみて思ったことを要約してみた。[1] Rubyエンジニアの中には、何も考えずに他のモデルのnewを書いてる人の割合が多いという(コードレビュー時のヒアリングによる)体感があり、また8年前の記事なので経験の浅い人は読んだことがない人もいると思う。該当する方は是非読んでほしい。 全部読む時間が無い人は要約へ. 原文と訳文 In languages less open than Ruby, hard-coded class references can make testing tough. If your Java code has Date date = new Date(); buried in its guts,

    「DIは必ずしも善ではない」| Dependency injection is not a virtue by DHH
    AmaiSaeta
    AmaiSaeta 2021/06/28
    「X言語での最善手を全ての言語での最善手と思い込む」という事はやってしまっていそうなので自戒したい……(実際、脳内がHARD CODE ALERT!だったので)
  • CS50 for Japanese: コンピュータサイエンスの入門 – 当ウェブサイトは、Creative Commons ライセンスに基づいて管理されています。

    お知らせ: 2022/9/1 CS50 を活用した非営利/協賛企業による「コロナ学生支援」プロジェクトを実施中 ▼ 学生の方へ:CS50 の学習(履修証明書の取得)を一緒に取り組むプロジェクト CS50日語版の翻訳コントリビューターである CODEGYM が主催する、非営利/無償のプロジェクト「CODEGYM Academy (外部リンク)」は、昨年に続き2022年度(春/秋)も、キャリア選択を控えた学生に対し、以下の企業の協賛により無償で17週間のプログラミング教育カリキュラムを提供します。 CODEGYM Academy 協賛企業(2022年) https://codegym.jp/academy/ 今年度のエントリーは締め切りました — ようこそ! このページは、ハーバード大学 CS50 の日語版翻訳プロジェクトのページです。当サイトのドメインに掲載されているコンテンツは、Cre

    AmaiSaeta
    AmaiSaeta 2021/05/14
    米ハーバード大のコンピュータサイエンス入門講座「CS50」の日本語化コンテンツ。
  • 京都発! オープンソースなかな漢字変換の変遷

  • Suffix Array - Qiita

    これは「データ構造とアルゴリズム Advent Calendar 2018」9日目の記事です. ##はじめに Suffix array1 はよく知られたデータ構造のひとつです.1990年に提案2されて以来,その使われ方は多岐にわたります.記事では,この suffix array の基事項として, suffix array とは何か suffix array を全文索引として用いる方法 を紹介したいと思います. ##パターンマッチングと全文索引 パターンマッチング とは,文字列 $T$ から,パターンと呼ばれる文字列 $P$ を探す問題です.たとえば, $T =$ 麒麟鼬蝙蝠駱駝蝦蟇鼈樹懶鼠膃肭臍羆狒狒鰐麒麟猩猩鼠鼠鼠鼠鼠蟒蛇鼈鼬羆蜥蜴駱駝羆麒麟鼈鼬狒狒狒狒羆蝙蝠膃肭臍麒麟蝙蝠鼬蜥蜴鼬狒狒蝮樹懶鼬羆蝮膃肭臍麒麟羆駱駝蝙蝠蟒蛇狒狒蝙蝠樹懶鼈蜥蜴駱駝羆鼬羆樹懶犀鰐蝙蝠鼠狒狒蝦蟇鼬蜥蜴鼠蝮蝦蟇

    Suffix Array - Qiita
    AmaiSaeta
    AmaiSaeta 2018/12/09
    検索対象文字列から特定の文字列を探す時のアルゴリズム。この時、全ての合致する文字列の位置情報を得る事が出来る。 O(m log n)
  • 人間には真似できない?自分でカラダを作りかえて進化するボット | ギズモード・ジャパン

    人間には真似できない?自分でカラダを作りかえて進化するボット2018.11.10 22:0011,055 George Dvorsky [原文] ( Kaori Myatt ) 進化するのは生き物だけじゃなかった。 これからゲームや仮想世界が大きく変わるかもしれません。まだ実験段階ですが、人間が思いもつかないような進化をボットが自らやってのける「強化学習」という機械学習の一種が研究されています。機械学習(マシンラーニング)は今もっとも注目を浴びている分野ですね。今回の実験でわかったことは、ボットが「自分で自分を進化させることができる」ということ。米ギズモードのGeorge Dvorsky記者がGoogleAIラボ「Google Brain」で行なわれた実験をレポートしてくれました。 レプリカントがどんどん進化していく『ブレードランナー』とか、これからはありえるのかもしれません。SFの世界

    人間には真似できない?自分でカラダを作りかえて進化するボット | ギズモード・ジャパン
    AmaiSaeta
    AmaiSaeta 2018/11/19
    ?ただの(と言うと語弊が在るかもしれないけど)進化のシミュレートのように見えるが、そういう訳ではないの?
  • ランキング設計はどうあるべきか? その2|深津 貴之 (fladdict)|note

    前エントリで論じられた、正しいランキング設計の考察の続き。第2回は、ランキングの収奪性、格差の固定性を軽減する手段を、具体的に論じてみる。 前回の記事へのTwitter上のフィードバックは、Togetterにまとめてある。こちらもご興味があれば、一読の価値がある。いくつか被ってしまったものもあるけれど、諸々の後半記事。 「ランキング」以外の名称を用いるこれはほぼ確定。ランキングという名前は、「noteとして競争原理を推奨する」という強いメッセージを発する。noteの全てのユーザーが、競争原理で動いているわけではないので、これは望ましくない。 おそらく最終的には「注目」「人気」などの名称を使うことになるかと思われる(「オススメ」はパーソナライズ用にとっておく)。また、「ランキング」という名称やスタンスをやめることで、後述するようないくつかの公平性のための施策を行う余地が生まれる。 時間による

    ランキング設計はどうあるべきか? その2|深津 貴之 (fladdict)|note
    AmaiSaeta
    AmaiSaeta 2018/01/24
    ランキングの話で「そもそもランキングと呼ばない」ってのは何か眼から鱗。
  • ID生成大全 - Qiita

    セッションIDやアクセストークン、はたまた業務上で使う一意の識別子など、いろんなところで一意のIDを生成しなきゃいけないケースが存在します。 そこで世間で使われているIDの生成方法について調べてみました。 選択基準 ID生成における要求として、以下の観点が上げられるかと思います。 生成の速度 大量にデータを短期間で処理し、それらにIDを付与する場合、ID生成そのものがボトルネックとなることがあります。 推測困難性 IDを機密情報と結びつける場合、IDを改ざんされても、機密データが見れないようにできている必要があります。 順序性 採番した順にデータをソートする必要がある場合は、IDがソートキーとして使えないといけません。 それぞれについて各生成手段を評価します。 ID生成の手段 データベースの採番テーブル 採番用のテーブルを作り、そこで番号をUPDATEしながら取得していくやりかたです。古い

    ID生成大全 - Qiita
  • C/C++で整数の桁数を求める場合、1番処理が速いのはどの方法でしょうか?

    AmaiSaeta
    AmaiSaeta 2017/01/29
    sharowさんの回答のコード見て変な笑いが出た。
  • http://f-server.ics.kagoshima-u.ac.jp/~fuchida/algorithm/alg08-%E6%8E%A2%E7%B4%A2%E3%81%A8%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5.pdf

  • 【64bit】マリオメーカー計算機64で1844京+1844京を計算してみた

    コースID:9047-0000-00BA-33B4前回34bitの計算結果を表示可能な計算機(sm27383127)を発表したのですが、それをさらに発展させ45bitの表示を実現した研究者が現れてしまいました。その技術開発競争に刺激され、こちらも「夢の資源」の実用化研究を進めました。その結果再び技術革新が起こり、64桁同士の足し算の出力結果を表示可能な計算機が、ついに完成しました。マリオメーカー計算機はついに「千京」の桁に……。※加算器部分は前回のものと同様なので、その説明は前回の動画をご確認下さい。参考資料sm27335792:入力に使用したギミックの発案sm27400376:ワンワンを用いた45bit表示の提案マリオメーカー学会発表まとめ:mylist/53472912

    【64bit】マリオメーカー計算機64で1844京+1844京を計算してみた
    AmaiSaeta
    AmaiSaeta 2015/10/24
    しかしマリオメーカー開発陣は何処まで想定してるんだろう。超高難易度や自動マリオシーケンサは確実に想定内だろうし、計算する奴が出てくるのも想定内だろうけど、ここまで桁でかくなるのは想定してたんだろうか。
  • Site is undergoing maintenance

    Site will be available soon. Thank you for your patience!

    AmaiSaeta
    AmaiSaeta 2014/12/06
    intのビット長について言及が在るということはC/C++か? 右シフトが論理か算術かは実装依存だった気がするけど……?
  • String repeat のアルゴリズムとパフォーマンス - hogehoge @teramako

    ES6になると、String.prototype.repeatのメソッドが追加されるわけだが、そのアルゴリズムとパフォーマンスを追ってみている。 ES6 String.prototype.repeat の仕様では以下の様な感じでシンプルな書き方をしている。 countが 0 より小さい、または 無限大である場合は RangeError count 0 ならば、空文字列 そうでない場合は、count回、文字列を繰り返して連結する 単純に実装すれば、以下の様な感じで済む。 String.prototype.repeat = function (count) { if (count < 0 || !Number.isFinite(count)) throw new RangeError(); var result = "", str = this; for (var i = 0; i < cou

    String repeat のアルゴリズムとパフォーマンス - hogehoge @teramako
    AmaiSaeta
    AmaiSaeta 2014/04/06
    SpiderMonkey側の実装素晴らしいな。cool だ。
  • ふたつのIterator - プログラマーの脳みそ

    コードを書いているとたまにふたつのIteratorをいっしょに回すコードを書くはめになる。 /** ふたつのItaratorを並べて回すサンプル */ static boolean compare1(List<String> list1, List<Integer> list2) { if (list1.size() != list2.size()) { throw new IllegalArgumentException("個数の不一致"); } Iterator<String> ite1 = list1.iterator(); Iterator<Integer> ite2 = list2.iterator(); // 敢えてショートサーキットしない&演算を用いる while (ite1.hasNext() & ite2.hasNext()) { String v1 = ite1.nex

    ふたつのIterator - プログラマーの脳みそ
    AmaiSaeta
    AmaiSaeta 2014/03/16
    "そもそもfor-eachがIteratorそのものを回せればこんなことにはならないんだけど。" そこでC++ですよ、というのは冗談として、複数のイテレータを指すイテレータというアイディアは良いなと。
  • 自然言語処理の最新手法"word2vec"で艦これ加賀さんから乳を引いてみる - あんちべ!

    概要 この記事は自然言語処理という分野の最新手法word2vec を利用して誰でも遊べるようにするための手順を説明するものです。 word2vecを利用すると意味の計算が実現できます。 例えば"king"から"man"を引いて"woman"を足すと"queen"が出てきたり、 "東京"から"日"を引いて"フランス"を足すと"パリ"が出てくるという面白い手法です。 自然言語処理とは人間が日常的に用いる自然言語をコンピュータに処理させ、 翻訳や要約、文字入力支援や質問応答システムを作るなどに活用されている分野です。 自然言語処理と言うと耳慣れない言葉かもしれませんが、 実は検索や推薦などで私たちが日常的に利用しているなじみ深い技術でもあります。 自然言語処理の適用範囲や要素技術は幅広いのですが、 その中でもword2vecの特色は、 冒頭でも挙げたように「意味の計算」が出来ることです。 これ

    自然言語処理の最新手法"word2vec"で艦これ加賀さんから乳を引いてみる - あんちべ!
    AmaiSaeta
    AmaiSaeta 2014/03/10
    word2vec:言葉に対して意味の足し引きを行い、別の言葉を導き出せる。 | これ応用したら「天井冴太は何と何と何で出来ているか」みたいな事も出来そう? | 加賀さんに乳のイメージ無かったが、確かにでけーな……
  • PageRankアルゴリズムを使った人事評価実験 | 株式会社サイバーエージェント

    2-2-1.一般的な360度評価による評価方法 問題点 一般的に評価プロセスが公開されていないため、最終評価までのプロセスが不透明である 全員が全員を評価するのは多数の社員がいる場合は不可能である ランダム抽出によるお互いの評価を行うと、まったく違う専門分野を評価したり、まったく関わりあいのない人を評価することになり精度が下がる 2-2-2.専門分野での評価者による評価方法 問題点 *評価者になる人材の不足 高い専門スキル、会社とのビジョンマッチ、メンバーからのその専門分野での高い信頼の全てを備えている人材が専門分野毎に必要。 さらに、評価の納得性を保つためにはメンバーからの信頼がある人材ではないと評価できない。 *評価者によって評価ポイントの違いがある 同じ分野の技術者でも、スキルの価値をどこに置いているかというスタンスの違いから評価ポイントにゆらぎが発生する。 さらに評価者自体

    AmaiSaeta
    AmaiSaeta 2013/11/07
    "\(o)/" | 試行を行い、且つ公開するというのが凄く良い。 | 「自分を高評価する人を評価する」という方向に行ってしまう可能性があるので、あくまで"この結果だけを見て評価とすることは想定"出来ないか。
  • A/Bテストよりすごい?バンディットアルゴリズムとは一体何者か - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? オバマ大統領の再選に大きく寄与したことで大きな注目を集めているA/Bテスト。A/Bテストを導入した、することを検討している、という開発現場も多いのではないだろうか。 そんな中、Web上で次のような議論を見つけた。 20 lines of code that will beat A/B testing every time Why multi-armed bandit algorithm is not “better” than A/B testing 一言でまとめると「A/Bテストよりバンディットアルゴリズムの方がすごいよ」「いやいやA

    A/Bテストよりすごい?バンディットアルゴリズムとは一体何者か - Qiita
    AmaiSaeta
    AmaiSaeta 2013/04/03
    リソースがごく限られている場合、例えば文中でも言及されている大統領選の場合(時間リソースの制限が在る)はA/Bテストの方が妥当なのかな。そんな印象。