タグ

algorithmに関するsnaka72のブックマーク (41)

  • Flashでグニグニ曲がるUIを作る方法 - しっぽのブログ

    前にtwitterアイコンやpixivの画像をプヨプヨすることのできるpuyopixというコンテンツを作りました。 Puyopix -プヨプヨにするよ- このページの右上にあるブログパーツもこれです。 解説をやると言っておいて、ずっと書いていなかったので書きます。 あんまりコードだらけにしても面白くないし、方法の概念的なものを図を交えながら説明していきます。 画像をプヨプヨする方法の概要と、それをUIに応用する方法です。 プヨプヨの実装 骨組みを作る 格子状バネという、わりと普通の実装をしています。 格子状に並んだ各点をばねのように接続します。 バネはお互いの点の距離が一定になるように、2つの点に逆方向の力をかけます。 フックの法則というのがあって、「F = -kx」とかいう式もありますが、プログラムとしての感覚は「来あるべき距離の方向へ、ズレた分の○%だけ加速度をつける」って感じになり

  • ベクター→ビットマップ - Webと文字

    白黒はっきりつける程度の能力 /\___ |ヽ.   , '"::|l 閻 l|::::::`ヽ./| |:::::\'::::,.r-y-y-、___/:::::/ |::_r'ァ'-':: ̄i:::::::i::::`ーヽ二<] [>r'7:::/::ヽ!、ハ::::ハ_;!::ィハ:::::Y::Yト、 Y:::::|:ハア;ニ; レ' ,ア;ニ;ヽ!ハ|:::::| iヽ. //レヘレi ! !_r!   !_r! ノ|::ト、|:::| \〉 |__|/ く|:::|"       "|:::|ソ::::;イ |::i>、   ̄  ,.イ|::|ヘ:::::::| ゝイ_;!ィ`7二T<、!_|::ハヘ/ ,'  .Y/::::`T´::::::7ゝヽ.! .〈  /i::::::::Ф:::::::::|l   〉 ,' ` ハ::::::::Ф:::::::::7 ´ ',

  • 手作り有限状態機械で字句解析

    a.py #!/usr/bin/env python class Parser(object): def __init__(self): self.parse1 = self.parse_main self.items = [] self.item = '' return def feed(self, text): i = 0 while i < len(text): (self.parse1, i) = self.parse1(text, i) return def parse_main(self, text, i): c = text[i] if c == ',': self.finish_item() return (self.parse_main, i+1) elif c == '"': return (self.parse_quote, i+1) elif c == '\\':

  • プログラミング言語を作る yaccとlex

    yacc/lexとは Cでプログラミング言語の処理系を実装するのであれば、 多くの場合、yaccとlexというツールを使います。 実のところ、Cとyacc/lexで簡単なプログラミング言語を作る、というのは、 以前、「C言語ヨタ話 」で書いた「 電卓を作ってみよう」 の焼き直しになります。yaccとlexの説明もそちらに簡単に書いたので、 そちらを見てください――と言いたいところですが、 まあここでも軽く説明します。 内容的には重複、というかコピペしている部分もありますが。 プログラミング言語の処理系は、通常、以下のような手順を取ります。 字句解析 ソースプログラムを、「字句(トークン)」の並びに分割する処理です。 構文解析 トークンの並びから、解析木を構築する処理です。 この後、Cなどの機械語を吐くコンパイラや Javaのようなバイトコードを吐くコンパイラなら、 「コード生成」という処理

  • 形態素解析・構文解析入門

    back 注意: このページの内容には、おそらく多くの間違いがあります。 リンクされているので残しておきますが、利用には注意してください。(2008年3月、新山) 目次 背景知識 形態素解析とは 構文解析とは 練習問題 言語処理関係の論文によく出てくる重要語 1. 背景知識 まず「形態素」、「構文」などといった用語は、ほとんどが 現在の科学的な「言語学」という分野に帰するものであることを 最初に知っておく必要がある。体系だった言語学は、おもに チョムスキー言語学の創始とともに始まった。 チョムスキーは 1960年代に、世界じゅうの数多くの言語には、 実はそのすべてに共通する「普遍文法 (universal grammer)」がある、と言った。 またチョムスキーはそのような文法を数学的な人工言語で 厳密に表現する方法をも開発した。彼によれば、言語にはその理想化された かたち (言語が言い間違

    snaka72
    snaka72 2010/05/05
    参考程度に..
  • 述語論理(1)

    静岡大学情報学部 自然言語処理・知的教育システム研究会の W… Read more »

  • お手軽パーザー

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

    snaka72
    snaka72 2010/05/05
    お手軽な構文解析器のつくり方
  • Diff algorithm - 枕を欹てて聴く

    id:smoking186 さんの指摘を受け, First Authorの名前などを付加しました. どうもです. 記事内のcodeは最適化などを施しておらず, 冗長に, 定義どおりに書いています. ifがまとめられたりとかしますが, そのあたりはご容赦を... Rubyでlevenshtein距離を見て以来, 個人的にdiffブームが来ていた. 計算量O(ND) / O(NP)のalgorithmなどがあるのは知っていたが, 論文(英語)および, 解説のみ, またはソースコードのみなど分かれているものが多く, algorithmに疎い自分には理解するのに大変時間がかかってしまった. しかしやっとわかったので, 解説+JS実装してみる. 解説とソースコードがセットだと, 多少はわかりやすくなるかと... 自分は正直これくらい細かく言われないとすぐにはわかんない人なので(the O(ND)だけ

    Diff algorithm - 枕を欹てて聴く
    snaka72
    snaka72 2009/10/23
    あとでよむ
  • Hadoopで、かんたん分散処理 (Yahoo! JAPAN Tech Blog)

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、地域サービス事業部の吉田一星です。 今回は、Hadoopについて、Yahoo! JAPANでの実際の使用例を交えながら書きたいと思います。Hadoopとは、大量のデータを手軽に複数のマシンに分散して処理できるオープンソースのプラットフォームです。 複数のマシンへの分散処理は、プロセス間通信や、障害時への対応などを考えなければならず、プログラマにとって敷居が高いものですが、 Hadoopはそういった面倒くさい分散処理を一手に引き受けてくれます。 1台では処理にかなり時間がかかるような大量のデータも、複数マシンに分散させることで、驚くべきスピードで処理を行うことができます。 例えば、今まで1台でやっていた、あるログ集計処理

    Hadoopで、かんたん分散処理 (Yahoo! JAPAN Tech Blog)
  • diff O(np) javascript implementation « ku

    昔文書比較アルゴリズムで書かれている G.Myers, W.Miller, An O(NP) Sequence Comparison Algorith をSTLで実装したもの(Edit Distance固定のてきとうなもの)をjavascriptで書き直した。 /* Copyright (c) 2007, KUMAGAI Kentaro Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of

  • クラスタリングの定番アルゴリズム「K-means法」をビジュアライズしてみた - てっく煮ブログ

    集合知プログラミング を読んでいたら、K-means 法(K平均法)の説明が出てきました。K-means 法はクラスタリングを行うための定番のアルゴリズムらしいです。存在は知っていたんだけどいまいちピンときていなかったので、動作を理解するためにサンプルを作ってみました。クリックすると1ステップずつ動かすことができます。クラスタの数や点の数を変更して、RESET を押すと好きなパラメータで試すことができます。こうやって1ステップずつ確認しながら動かしてみると、意外に単純な仕組みなのが実感できました。K-means 法とはK平均法 - Wikipedia に詳しく書いてあるけど、もうすこしザックリと書くとこんなイメージになります。各点にランダムにクラスタを割り当てるクラスタの重心を計算する。点のクラスタを、一番近い重心のクラスタに変更する変化がなければ終了。変化がある限りは 2. に戻る。これ

    snaka72
    snaka72 2009/04/10
    おもしろい
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Latest topics > 今更聞けない可変フレームレートなトゥイーンの基本 - outsider reflex

    Latest topics > 今更聞けない可変フレームレートなトゥイーンの基 宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行まんがでわかるLinux シス管系女子の試し読みが可能! « ツリー型タブにアニメーション処理(トゥイーン)を加えつつある Main 立った! フラグが立った! » 今更聞けない可変フレームレートなトゥイーンの基 - Apr 08, 2009 1つ前のエントリに書いた、可変フレームなトゥイーン効果の実装の話。 今時は便利なJavaScriptのアニメーション用ライブラリが色々あるからわざわざ自分で書くような必要はないんだろうけど、自分はほんの一箇所だけのためにライブラリ全部突っ込むというのは気が引けるタイプなので、ピンポイントな実装とその理屈を(雑学として)書いておこう。 先に

  • JavaScript: 普通に同期処理 - mayokara note

    var defer = function(/* f1, f2, ... */){ var self = this, fn = Array.prototype.slice.call(arguments); (function(/* arg2, arg3, ... */){ var args = Array.prototype.slice.call(arguments); (fn.shift()).apply(self, [arguments.callee].concat(args)); })(); }; defer(function(next){ var t=1; alert(t); window.setTimeout(function(){ next(t+1); }, 1000); // 1秒後に第2引数を2として次の関数を呼ぶ }, function(next,t){ alert(t);

  • JavaScript: yieldで同期処理 - mayokara note

    New in JavaScript 1.7 - MDC JavaScript1.7 の yield を使って、非同期処理を同期処理のように書く方法 - IT戦記 // ==UserScript== // @name defer // @namespace http://mayokara.info/ // @description sample script // @include http://* // ==/UserScript== (function(cdata){ // type指定しないとyieldが使えない var s = document.createElement("script"); s.type = "application/javascript;version=1.7"; s.textContent = cdata.toString(); var head = docu

  • JavaScript: ベイズフィルタ - mayokara note

    Naive Bayes classifier - Wikipedia, the free encyclopedia var BayesFilter = function(aMemory){ this._memory = aMemory || { t: 0, f: 0, prior: {} }; }; BayesFilter.prototype = { getMemory: function(){ return this._memory; }, train: function(bool, params){ this._memory[bool ? "t" : "f"]++; params.forEach(function(v){ if (!this._memory.prior[v]) { this._memory.prior[v] = { t: 0, f: 0 }; } this._memor

  • アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法 : 404 Blog Not Found

    2009年01月31日01:00 カテゴリLightweight LanguagesMath アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法 これなのですが.... 同じ文字列のn回繰り返しを作る最速の方法を探求してみた - muddy brown thang ちょっとした事情により、ある文字列のn回繰り返しを作る関数 (PHPでいうところのarray_repeat(), Perlで言うところの「"..." x n」、RubyPythonで言うところの「"..." * n」) を高速に実装しなければならない状況に遭遇したのでベンチマークをとってみたところ、その結果がとても新鮮で驚いたので、これを共有しつつもダメ出ししてもらえないかなーと思って晒してみることに。 なぜかもっとシンプルな奴がなかったので。 以下、比較。初期値はIEにあわせてあります。Firefox/Saf

    アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法 : 404 Blog Not Found
    snaka72
    snaka72 2009/02/01
    すばらしい
  • フラクタルタイポグラフィー - lab

    Web Designing(2009年2月号)の特別企画「Webデザイナーのためのタイポグラフィ大特集」に掲載させていただいた「Fractal Type」についてご紹介します。 Web Designing誌にも書きましたが、アートディレクターで師匠の永原康史さんのアイデアで、「デザイン言語2.0」の装丁に使う「行間、字間、書体を文章中の各文字にバラバラに適用するグラフィック」のためのプログラムをJavaScriptで実装しているときに、フラクタル的な造形の中に文字を投げ込んでみたらどうなるかという興味で作ったものです。

    snaka72
    snaka72 2009/01/31
    かっこいいなぁ
  • ソートアルゴリズムの可聴化 - ならば

    Sorting Algorithm Animationsなどのサイトでは、ソートアルゴリズムの可視化の例を見ることができる。今回は可視化に倣ってソートアルゴリズムを可聴化した。聴覚化すると、情報を分かりやすく提示するという方向から外れるけど。 ソートする対象は50から90までの整数をランダムに並べた列。可聴化の方法は、整数をMIDIノート番号とみなして、ソートアルゴリズムが各時点でポイントしている位置にある、MIDIノート番号の音高の音を鳴らすようにした。ChucKのプログラムはいつもより長くなったから最後に載せる。 録音したもの。元の整数列は全部同じで、サイズ(整数の数)は30。 バブルソート 選択ソート 挿入ソート シェルソート クイックソート マージソート ヒープソート 拡張としては、 より詳細に情報を提示する方向(例:整数同士の位置の交換時に音色を変える) サウンドアートな方向(例

    snaka72
    snaka72 2009/01/17
    性能は置いといて音的には選択ソートが好きだオレ
  • タグクラウドのアルゴリズム - モノノフ日記

    タグクラウドを生成する際のアルゴリズムをオープンソースのコードを参考にして現在考えてます。 symfonyの公式サイトで見つけたアルゴリズム <?php while ($rs->next()) { if (!$max_popularity) { $max_popularity = $rs->getInt('count'); } $tags[$rs->getString('tag')] = floor(($rs->getInt('count') / $max_popularity * 3) + 1); } すごいシンプルでびっくり。 処理の流れ タグの最大カウント数をmax_popularityとする 各タグのカウント数をmax_popularityで割り、タグクラウドの範囲から1引いた値をかける(ここでは3) 算出された値を切り上げて、0が無くなるように+1 この算出アルゴリズムだと最大の

    タグクラウドのアルゴリズム - モノノフ日記