タグ

Algorithmとalgorithmに関するcrafのブックマーク (346)

  • hashアルゴリズムとハッシュ値の長さ一覧

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 「ハッシュ値の衝突」(コリジョン)や「データの改ざん」などの対策で、ベストなハッシュ・アルゴリムを判断するために、ハッシュ値の「長さ」や「速度の目安」一覧が欲しい。 ハ ... ... ハッシュ? ... ってか、ハッシュって、そんなにおいしいの?圧縮された暗号とちゃうん? TL; DR (今北産業) この記事はハッシュ関数の出力結果を桁数ごとに、まとめたものです。 ハッシュ関数の各々の「アルゴリズムが最大何文字・・の 16 進数で返してくるか」の事前確認に利用ください。 マスター、一番強いヤツをくれ。 バランス優先 👉 sha3-5

    hashアルゴリズムとハッシュ値の長さ一覧
  • バレンタインデーにquadsortがやってきた・・・けど - Qiita

    quadsortとは? それはバレンタインデーにやってきた 「なんか、qsortよりも良い結果がでたっぽいんだけど!」という話がでてきて、みんな色々検証をしていた。 もとスレッドは「モダンってなんだよ!」とか「それならこっちのアルゴリズムとか見たほうが良いんじゃ?」とか、なかなかエキサイティングしているっぽい。 ソースコードとか技術的な説明はこちら。 性能検証結果 quadsort: sorted 1000000 elements in 0.074616 seconds. (random order) qsort: sorted 1000000 elements in 0.101402 seconds. (random order) quadsort: sorted 1000000 elements in 0.000912 seconds. (forward order) qsort: s

    バレンタインデーにquadsortがやってきた・・・けど - Qiita
  • ぷよぷよのアルゴリズムとMSX BASIC

    再帰が現実的でないBASICで「盤面が与えられた時にどのぷよが消えるか」を計算するアルゴリズムが当時どうしても思いつかず「ぷよぷよ」にハマった時からずっと考えていました。 そしてある授業中に突然アルゴリズムがひらめきました。 以下がそのアルゴリズムのご紹介です。 フィールドが以下の様になっていると想定します。形だけ見ると「連鎖を作ろうとしてたけどやらかしちゃった」形ですね。 この場合、赤い「ぷよ」が消えることになります。 基的な方針としては「左上から注目する場所(セル)を右下まで走査する」「注目したセルにある「ぷよ」がいくつつながっているか調べる」です。 1. まず、左上のセルに注目します。 2. 左上のセルには何も無かったので次のセルに注目します。 このセルには赤い「ぷよ」が居ました。 これ以降はこの赤い「ぷよ」がいくつつながっているか(=消せるか)をチェックします。 3.「この「ぷよ

    ぷよぷよのアルゴリズムとMSX BASIC
  • クイックソート VS 挿入ソート、ファイッ! - ABAの日誌

    昇順に並べたいクイックソートと降順に並べたい挿入ソートが殴り合う動画です pic.twitter.com/YxsN1aSI0A— ABA (@abagames) 2020年1月18日 コードとライブデモはこちら。 アルゴリズムの王道ソートアルゴリズムでコードバトリングをしてみたかったので作った。左(赤)のコードが昇順に、右(青)のコードが降順に同一の配列をソートしようとして戦う。昇順に揃ったら左の勝ち、降順に揃ったら右の勝ち。 コードは普通のJavaScriptとして書く。以下の2つの特殊な関数がある。 get(i): 配列からi番目の要素を取得する swap(i, j): 配列のi番目とj番目の要素を交換する setはできない。setを許すとコード内のメモリに配列を逃しておいてソート、一気に書き込むというインチキができるから。右の降順側のgetは要素のマイナスの値が帰ってくるので、右のコ

    クイックソート VS 挿入ソート、ファイッ! - ABAの日誌
  • 『週末レイトレーシング』を読んだ - a.out

    以前からレイトレーシングをやってみたいと思っていたので、正月の連休を使って『週末レイトレーシング』というを読んだ。 C++ を使ってフルスクラッチでレイトレーサーを実装していくという内容で、タイトルの通り週末にやりきれる分量にまとめられている。 tatsu-zine.com レイトレーシングのついでに Go の練習もしたかったので、C++ のコードを参考に Go で実装した。 最後まで実装できる確証もないまま始めてしまったが、interface など必要な機能が一通り揃っていたおかげで問題なく実装できた。 ただ、C++ と違って演算子のオーバーロードができないため、ベクトル計算の部分は記述量が多くなってしまい少しつらかった。 以下はレイトレーサーが実装されていく過程。 画像 説明 まずは画像の出力。このでは PPM 形式の画像を扱う。 中身はプレーンテキストなのでプログラムで簡単に生成

    『週末レイトレーシング』を読んだ - a.out
  • 「ループ・再帰・gotoを使わず1から100までの数値を印字する」Conner Davis 氏の回答の考察 - Qiita

    2019年6月に以下の記事が投稿されました。 ループ、再帰、gotoを使わずに1から100までを印字するC++プログラムは書けますか?に対するIchi Kanayaさんの回答 - Quora 英語版の記事「How to print 1 to 100 in C++ without a loop, goto or recursion - Quora」から興味深い回答を抜き出して、それにランク付けをしながら和訳してくださっている記事です。 初級や中級は「まぁあるよね(C++知らないけれど……)」という感じですが、 上級とされた「マイクロソフト社のデータサイエンティスト Conner Davis 氏」の回答が面白かった ので、ご紹介を兼ねてその発想の源泉を推測してみることにしました。 Conner Davis 氏の回答 以下に Conner Davis 氏の回答の和訳を引用します。 マイクロソフト

    「ループ・再帰・gotoを使わず1から100までの数値を印字する」Conner Davis 氏の回答の考察 - Qiita
  • 古典プログラマ向け量子プログラミング入門 [フル版]

    サブタイトル:ショアのアルゴリズムから巡回セールスマン問題まで プログラマ向けに量子プログラミングの解説をした資料です。できるだけソースコード付きにすることで独習可能な内容になっています。また必要となる数学の知識に関しても解説しています。よろしければご活用ください!

    古典プログラマ向け量子プログラミング入門 [フル版]
  • メルセンヌツイスタはそんなに衝突しない - Qiita

    κeenです。こちらのスライドが話題になっているようです。 10秒で衝突するUUIDの作り方 - Speaker Deck 笑い話としても乱数の難しさの側面としても面白いのですが、これを見た人たちの反応がちょっと勘違いしてそうだったので補足します。 別に私は暗号とか乱数とかの専門家ではないです。 発表者の方のコードは読みましたか? 少し速度が必要になるのでRustに移植します。 [package] name = "genuuidv4" version = "0.1.0" edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] rand = "0.7.2" sfmt = "0.6.0" use

    メルセンヌツイスタはそんなに衝突しない - Qiita
  • 10秒で衝突するUUIDの作り方

    11/25(月) LT Party presented by GeekHub (大阪) エンジニア向けゆるいフリーテーマLT大会!

    10秒で衝突するUUIDの作り方
  • Java における乱数生成器とのつき合い方 / #JJUG CCC 2019 fall に登壇してきました

    一般公募の枠で CfP 出してあえなくリジェクトされたテーマを、スポンサー枠で勝手に敗者復活させてお話してきました。 はじめに Java 標準のクラスライブラリには、いくつかの乱数生成器の実装 (クラス) が存在しています。長年 Java でアプリケーションを書いている方であれば状況に応じてそれらの実装を使い分けることも難しい話ではありませんが、Java を扱い初めて間もない方にとってはそう簡単な話ではありません。 たとえば java 乱数 のようなクエリでググるとその状況がうかがい知れるのですが、巷にはプログラミングスクール各社の SEO を目的としたコンテンツが溢れていて、それらはいずれも「java.util.Random とか Math.random() とかなんでそんなレガシーなクラス/メソッドしか紹介しないの? この記事を書いたライターというかエンジニアの人たちは J2SE 1.

    Java における乱数生成器とのつき合い方 / #JJUG CCC 2019 fall に登壇してきました
  • 動的計画法によるDVDのディスク分割の改善

    こんにちは。「家族アルバム みてね」の開発チームに所属している黒川と申します。今回は、その「みてね」の機能の1つで、写真や動画をDVDにして注文できる機能を動的計画法を使って改善した話をします。 「みてね」では家族の写真や動画をアップロードし、アプリ上で月ごとに振り返ることが可能になっています。一方、たとえば自宅のテレビやパソコンでまとめて振り返りたいという要望もあり、「みてね」では最長過去1年間の写真や動画をDVDにまとめて注文することができます。 このときに問題となるのがDVDのディスク分割です。1年分の写真や動画はともすると1枚のディスクに収まりきらず、複数のディスクに分割する必要があります。いままでは、動画を月ごとに分けて各ディスクに入れていく、というシンプルなアルゴリズムで分割を行っていました。しかし、ユーザーさんからは「1枚のディスクにすこしの動画しかないがどうなっているのか」

    動的計画法によるDVDのディスク分割の改善
  • [iOSDC Japan 2019 リポート]「Stringの文字の数え方を完全理解する」というセッションを聞いてきました | DevelopersIO

    [イベントレポート]Stringの文字の数え方を完全理解する iOSDCの前夜祭でフェンリルの廣部さんによる「SwiftのStringの文字の数え方を完全理解する」というセッションを聞きました。 SwiftはUnicodeの扱いに非常に長けた言語であり、絵文字を含む文字列でも正しい文字数を計算してくれます。 その反面、Unicodeの複雑さに引きずられてしまい、直感的な操作ができない時もあります。たとえば、 string[2] と書いても3番目の文字を取得することはできません。 そんな複雑なところのあるSwiftの文字列処理ですが、複雑なものを受け入れてきちんと理解するのはそこまで難しいものではありません。 このトークでは、Unicodeとの関係を意識しながら、Swiftの文字数の扱い方とその裏にある考え方を解説します。 SwiftのStringの文字の数え方を完全理解する - Speak

    [iOSDC Japan 2019 リポート]「Stringの文字の数え方を完全理解する」というセッションを聞いてきました | DevelopersIO
  • ソートしないで重複行を削除する - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    ソートしないで重複行を削除する - Qiita
  • ゴー☆ジャス(宇宙海賊)をつくる - Qiita

    私の大好きな宇宙海賊ゴー☆ジャスが,先日嬉しいことに私の大学の学園祭にて公演をしてくださいました。その記念に, ゴー☆ジャスを作ってみました。Pythonでゴー☆ジャスクラスを実装しましたので,時間の無い方は一番下のクラス実装かテストの部分まで読み飛ばして下さい。 2021-12-07 いくつかの派生記事がでています Qiita: ジョイマン生成器つくってみた Qiita: BKB(バイク川崎バイク)をつくる 2019/7/16 (なんと物にツイートしていただきました) ゴー☆ジャスの頭の中ではこんなことが((((;゚Д゚)))))))!!!! ゴー☆ジャス(宇宙海賊)をつくる https://t.co/wcwo6bqt0E #Qiita — ゴー☆ジャス(宇宙海賊) (@Gorgeous55555) 2019年7月16日 サンプルWebアプリにもなっています Web App: http

    ゴー☆ジャス(宇宙海賊)をつくる - Qiita
  • awk でソートせずに重複行を削除する · Issue #11 · wada811/blog

  • mimalloc のメモリ管理 - Qiita

    Microsoft の mimalloc は面白い割り切り方で、小さいソースコードで高速なアロケータを実装しています。 確保するメモリブロックのサイズを、 Small (~8KiB), Large (~512KiB), Huge (512KiB~) の3つに分類し、 Small と Large は同じアルゴリズムで管理し、 Huge は OS 任せにして、 Small と Large は同じアルゴリズムをうまく利用しています。 基礎 OSはpage (x86では基 4KiB) ごとにメモリをプロセスに割り当てています。 しかしアプリケーションではずっと小さいメモリブロックが必要になることが多くあります。また、必要になるたびに毎回OSからメモリを割り当ててもらうのはパフォーマンスも悪いです。 mimalloc やその他の malloc 実装 (以降 malloc と呼びます) は OS か

    mimalloc のメモリ管理 - Qiita
  • Cloudflare comes clean on crashing a chunk of the web: How small errors and one tiny bit of code led to a huge mess

    Cloudflare comes clean on crashing a chunk of the web: How small errors and one tiny bit of code led to a huge mess Cloudflare has published a detailed and refreshingly honest report into precisely what went wrong earlier this month when its systems fell over and took a big wedge of the internet with it. We already knew from a quick summary published the next day, and our interview with its CTO Jo

  • スーパーマリオメーカーはチューリング完全(日曜数学会発表)

    第15回日曜数学会の発表資料です.当日の発表の様子は https://live2.nicovideo.jp/watch/lv320692098 で視聴できます(2時間24分から10分間程度).

    スーパーマリオメーカーはチューリング完全(日曜数学会発表)
  • これが現代の科学力……! 「スーパーマリオメーカーはチューリング完全」はなぜたった1年半で証明されたのか

    「マリオメーカー学会」というものをご存じでしょうか。自作ステージを作って遊べるゲーム「スーパーマリオメーカー」に斜め上過ぎる楽しみ方を見いだした“研究者”の集まりで、これまでには「クリアに20万年ほどかかるステージ」「ギミックを巧みに活用した計算機」などが開発されています。 話がぶっ飛んでいて何が何だか分からないかもしれませんが、きっとそれだけ研究が進んでいるということでしょう。今回は、5分間で数学を語るイベント「日曜数学会」から、同学会のハイレベルさが伝わる発表「スーパーマリオメーカーはチューリング完全」を書き起こしました。 拡大画像でスライドを見る スーパーマリオメーカーはチューリング完全 イベント:2019年6月29日開催の第15回「日曜数学会」(Twitter:@nichimath) 発表者:yos1upさん(Twitter:@yos1up) 発売から約2週間で、計算機になったスー

    これが現代の科学力……! 「スーパーマリオメーカーはチューリング完全」はなぜたった1年半で証明されたのか
  • 全体の行数がわからないデータからランダムにN行取り出す - Qiita

    テキストデータからランダムにN行取り出す方法ですが、まず「シャッフルしてN行取り出す」というのがあります。 しかし、データが大きいとシャッフルにも大量のメモリが必要になるので、別の方法を考えたいところです。 ここで、全体の行数がわかっていれば簡単に書ける(後で書きます)ところですが、一度行数を調べてから取り出すとなると二度手間になってしまいます。 こういうときは、Perl(-nオプション)で次のように書くと、$n個を配列に格納することができます(順序はランダムではありません)。

    全体の行数がわからないデータからランダムにN行取り出す - Qiita