タグ

アルゴリズムとTIPSに関するiwwのブックマーク (5)

  • 4枚カード問題(ウェイソン選択課題)

    答えの前に注意:この問題の主題は論理学での正解が何かではありません。解答の偏りについて考察することが主題です。 論理学での正解は、「A」と「7」。 ルールは、母音と奇数が同じカードを禁止しているので、「Aの裏が偶数か?」と、「7の裏が母音か?」を調べるのが正解。(問題には最小限の枚数とは書いていないので、Aと7を含めていれば正解としてよいと思います。) よくある解答4枚カード問題(ウェイソン選択課題)に対しては、「A」「4」とする解答がよく見受けられます。 「4」のカードを調べても、条件を満たすことを確認するだけです。 心理学では確証バイアスと呼ばれています。 人間の思考パターンには、正しいことを確認して満足する、という傾向があるようです。 解答が偏る点が認知心理学的には重要論理学での正解である「A」「7」を選ぶ人ももちろんいますが、論理学では誤答となる解答「A」「4」が頻出します。解答に

    4枚カード問題(ウェイソン選択課題)
    iww
    iww 2015/07/15
    すげぇ。一発で腑に落ちる。
  • (0, eval)('this')とは何なのか - Qiita

    この(0,eval)('this')はいったい何なのか。調べた。 調べた結果 これはindirect eval callを使用した、どのスコープでも必ずグローバルオブジェクトのthisを取得するためのテクニックであった。 ES5ではevalを直接呼び出すと、引数のコードはそのスコープで実行されるが、間接的にevalを呼び出すと、引数のコードは必ずグローバルスコープとなるそうだ。なので引数のthisは必ずグローバルオブジェクトとなる。ブラウザではwindowとなり、Nodeではglobalになるのだ。実際どうするかだが、eval関数を変数に代入し、その変数で実行すればよい。 // Nodeで実行 var obj = new (function(){ this.direct = eval('this'); var ev = eval;// 変数に代入 this.indirect = ev('t

    (0, eval)('this')とは何なのか - Qiita
  • 競技プログラミング特有の変な実装テク - ichyo.jp

    初めに この記事はCompetitive Programming Advent Calendar 2014の15日目の記事です. 競技プログラミングでは,アルゴリズムをひらめく力や,数学やアルゴリズムの知識量などが強さを決める大きな要素ではありますが, もちろん,プログラミングを使った競技である以上は,コードの実装力が勝敗を分けることもあります. 例えば,ICPC系のコンテストでは,アルゴリズムを考える能力よりも,実装量の多いプログラムをいかにバグなく高速に実装するかが重要な 問題セットが与えられることが時々あります. 競技プログラミングと無縁なプログラマーは,実装力と聞くと, クラスの構造をうまく設計したり,変更に強い美しいコードを実装する能力だと想像する人がいるかもしれません. ですが,プログラミングコンテストに必要な実装力は,そうした保守性や拡張性ではなく, 「目的の処理をシンプルな

    iww
    iww 2014/12/16
    『int i,d,o,l,m,a,s,t,e,r;』
  • 文字列の類似度を測る(3) レーベンシュタイン距離の拡張|Colorless Green Ideas

    文字列の類似度を測る単純な尺度としてレーベンシュタイン距離というものがあるが、このレーベンシュタイン距離を拡張した様々な指標について見ていく。 はじめに 以前、文字列の類似度を測る手法として、レーベンシュタイン距離というものを紹介した。これは、ある文字列から別の文字列にする際に挿入・削除・置換を何回行うかに基づいて、文字列の類似度を測る尺度であった。レーベンシュタイン距離は簡便な指標であり、実際色々な分野で使われている。ただ、レーベンシュタイン距離だけでは捉えきれない問題もあって、そういう場合は、レーベンシュタイン距離以外の方法で文字列の類似度を測ることになる。 今回は、文字列の類似度を測るための尺度の中でも、レーベンシュタイン距離を拡張したものについて紹介していきたい。特に、Damerau–Levenshtein距離というものと、距離の標準化の話は重要になってくるので、おさえておくと何か

    iww
    iww 2014/11/24
    レーベンシュタイン距離を文字列の長さで割るやつ、楽でいい
  • ビットを数える・探すアルゴリズム

    作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを

  • 1