タグ

ブックマーク / qiita.com (184)

  • USI (Universal Shogi Interface) の現状調査 - Qiita

    はじめに 将棋GUIAI の間でよく用いられている USI (Universal Shogi Interface) ですが、標準化機関が作成するような詳細なドキュメントは存在しません。 事実上のスタンダードである将棋所の文書で網羅されていない部分について、開発者の間でしばしば議論になることがあります。 そこで、筆者が調べた USI の利用実体についての情報を簡単にまとめます。 この文書は批評を目的としたものではありません。 パブリックな場所で USI に関する個人的な不満を述べる人が居ますが、この文書を利用してそういった主張をすることは歓迎しません。 仕様策定の経緯 近年の有力な将棋 AI の多くは GUI を組み込まずに、将棋所や ShogiGUI、ShogiHome などのフロントエンドと標準入出力で連携する方法を採用しています。 その際に用いられる仕様が USI と呼ばれる

    USI (Universal Shogi Interface) の現状調査 - Qiita
  • Electronを使ったPC向け将棋アプリ開発 - Qiita

    はじめに 2022 年 1 月から、趣味PC 向けの将棋アプリを開発しました。その中で取り組んだことや学んだことについて簡単にまとめます。 作ったもの Electron将棋 (electron-shogi) GitHub: sunfish-shogi/electron-shogi GitHub Pages: Electron将棋 背景 最近ではスマホやタブレットでも将棋の対局や研究ができるようになりましたが、格的に将棋の勉強や研究をするには必ずしも十分ではなく、特に将棋 AI を動す上で PC の処理能力やカスタマイズ性は有用です。 2010 年あたりからオープンソースの将棋 AI が増えましたが、その多くは GUI や通信対局機能を備えておらず GUI のアプリケーションと組み合わせて使う必要があります。AIGUI がやりとりするための USI という共通仕様があり、 USI

    Electronを使ったPC向け将棋アプリ開発 - Qiita
    sugyan
    sugyan 2024/05/11
    素晴らしいまとめ。いつか自分もTauriで作ってみたいと思いつつ何もできぬまま3年くらい経ってる…
  • Othello is Solved 論文解説 (私見) - Qiita

    今朝起きたら、とんでもない論文を見つけました。 Othello is Solved ゲームの オセロが"解かれた(弱解決)" というのです。飛び起きました。それで、16時まで二度寝してから読みました。 注意すべきは、この論文が査読を経て公開されているわけではないこと、つまり形式上特にチェックを受けたものではないことです。ただ、タイトルからして非常に衝撃的ですので、個人的に読んでみました。この記事では、私がこの論文(およびソースコード)を読んでわかったことを、なるべくわかりやすくまとめます。随時更新します。 余談ですが、このタイトルはどうやら、チェッカーというゲームが以前弱解決された際の論文"Checkers Is Solved"のオマージュだろうという話です。 この記事には専門用語が出てくるので、最後の方に基礎知識として重要な用語や知識をまとめました。 お詫びと訂正 この記事の内容は、私が

    Othello is Solved 論文解説 (私見) - Qiita
    sugyan
    sugyan 2023/11/15
  • 難解言語 Malbolge は HelloWorld に「2 年」かかった - Qiita

    TL; DR こちらが難解プログラミング言語 Malbolge で HelloWorld を行うプログラムになります。プログラムとはいったい・・・ (=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@b=`{^Lx8%$Xmrkpohm-kNi;gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543s+O<oLm Malbolge Malbolge は 1998 年 Ben Olmstead により開発された難解プログラミング言語です。オリジナルのホームページはとっくに消滅していますが、幸いにもアーカイブは残っていました。 Malbolge は難解プログラミング言語の中でも特に難解であること自体を目的に開発された、文字通り地獄みたいな言語です。 Malbolge was truly created with the i

    難解言語 Malbolge は HelloWorld に「2 年」かかった - Qiita
    sugyan
    sugyan 2023/08/29
    全然知らない世界だった。面白いな〜
  • Trees that Grow in OCaml - Qiita

    要約 抽象構文木のような再帰的データ構造に対して、再帰的に各ノードに付加情報を付けられるようにする、Tree decoration問題というのがある。Haskellでは開いた型族(open type family)を使ってこの問題を解決しており、TypeScriptではインタフェースを型パラメータに渡すことで解決できる(入れ子構造を自由に拡張する – TypeScript版「Trees that Grow」を参照)。OCamlでは多相バリアントとオブジェクト型を使うと、より拡張性を高めた形でこの問題を解決することができる。 問題設定 次のような、整数リテラル、変数参照、代入、関数式、関数呼び出しのある言語を考える。 type expr = | Literal of int | Variable of string | SetVariable of string * expr | Func

    Trees that Grow in OCaml - Qiita
    sugyan
    sugyan 2023/04/04
  • 【ChatGPTと作る】あしのさきの動物パンプリン占い【クソアプリ】 - Qiita

    クソアプリ歴3年目のゆきです。一昨年はデスクトップでお寿司を回し、去年は世の動くサイトを粉砕しました。 今年も…って思ったけど、毎回自分でハードル上げ過ぎてしんどくなるので、今年は全部AIに任せてみようと思います こちらが完成した「あしのさきの動物パンプリン占い」です アプリ: https://yuneco.github.io/animal-panpudding/ ※ スマホでも動きます リポジトリ: https://github.com/yuneco/animal-panpudding これは一体何?? 🤖 「あしのさきの動物パンプリン占い」はクソアプリの究極の仕上がり! 脚の先の写真から天気を推定し、おすすめの動物パンプリンと占いをお届けします。 無駄に面白くて、もっともっと意味不明な占いが楽しめるかも? お試しあれ! アンダスタン? では始めましょう ChatGPTとアイデアを練る

    【ChatGPTと作る】あしのさきの動物パンプリン占い【クソアプリ】 - Qiita
    sugyan
    sugyan 2022/12/15
    アイデアだけで終わらずに本当に動くものまでちゃんと作っていてすごい
  • 世界に衝撃を与えた画像生成AI「Stable Diffusion」を徹底解説! - Qiita

    追記: U-Netの中間層は常にSelf-Attentionとなります。ご指摘いただきました。ありがとうございます。(コード) オミータです。ツイッターで人工知能のことや他媒体の記事など を紹介しています。 @omiita_atiimoもご覧ください! 世界に衝撃を与えた画像生成AI「Stable Diffusion」を徹底解説! 未来都市にたたずむサンタクロース(Stable Diffusionで生成) 2022年8月、世界に大きな衝撃が走りました。それは、Stable Diffusionの公開です。Stable Diffusionは、テキストを受け取るとそれに沿った画像を出力してくれるモデルです1。Stable Diffsuionは10億個近いパラメータ数をもち、およそ20億個の画像とテキストのペア(LAION-2B)で学習されています。これにより、Stable Diffusionは入

    世界に衝撃を与えた画像生成AI「Stable Diffusion」を徹底解説! - Qiita
  • 【ショートコーディング】 Pythonで空のシーケンスを渡せない関数の周辺 - Qiita

    このように、iterableが引数に取れるけど、空のシーケンスを渡すとエラーになってしまう関数があります。このエラーをどうやって回避するのかというのが今回のお題です。 それ具体的にはどの関数? このような関数はPythonの組み込み関数だと、私はmin()とmax()ぐらいしか思いつきません。他にもあればコメント欄で教えてください。 max()は引数が1つの時はiterableとみなされる いま、シーケンスが空の時は、0を出力したいとします。またLの要素はすべて1以上であるとします。 次のように書けばどうかと言われるかも知れませんね。

    【ショートコーディング】 Pythonで空のシーケンスを渡せない関数の周辺 - Qiita
  • 拡張ユークリッドの互除法 〜 一次不定方程式 ax + by = c の解き方 〜 - Qiita

    NTT データ数理システムでアルゴリズムの探求をしている大槻 (通称、けんちょん) です。好きなアルゴリズムは二部マッチングです。今回は、歴史の記録に残る最古のアルゴリズムの 1 つとして知られるユークリッドの互除法について書きます。 ユークリッドの互除法は、最大公約数を求めたり、一次不定方程式 $ax + by = c$ に応用したりなど、大学受験でもお馴染みのアルゴリズムですが、整数論的アルゴリズムや数え上げアルゴリズムにおいて根幹を成す重要なものでもあります。 今回の記事では特に、一次不定方程式 $ax + by = c$ の整数解を一般に求めるアルゴリズムとして知られる「拡張ユークリッドの互除法」の理解を目指します。 1. ユークリッドの互除法とは ユークリッドの互除法は、2 つの整数 $a$, $b$ の最大公約数を効率よく求めるアルゴリズムです。記事では $a$ と $b$

    拡張ユークリッドの互除法 〜 一次不定方程式 ax + by = c の解き方 〜 - Qiita
  • Deno のめっちゃ難しいバグを修正した - Qiita

    2022年4月、Deno に以下のバグが報告されました。 fetch API を使って 300KB ぐらいあるファイルをアップロードすると、一定確率でアップロードされたファイルが壊れるというバグの報告です。 報告者によれば、1.20.6 まではバグは発生しておらず、1.21.0 から発生するようになったという事です。1.20.6 の次のリリースが 1.21.0 なので、パッチバージョン1個分まで、バグの発生時期が特定されている状態です。 fetch 周りは自分はほぼ実装していないので「担当範囲ではない」感覚だったので、普通にスルーしていました。 自分に限らず、Deno Land コアチームの誰もこの issue にピンと来る人が居なかったようで、stale ボット (数ヶ月進捗の無い issue を自動的にクローズしようとするボット) に2回もクローズされかけていました。Deno の st

    Deno のめっちゃ難しいバグを修正した - Qiita
  • PydanticがRustで爆速になるという話 - Qiita

    はじめに 最近ポッドキャスト聴く時間が少し減ってしまったんだけど、久しぶりに Talk Python to Me を聴いたらPydanticの話題でした(エピソードのリンクはこちら)。作者のSamuel Colvinさんが秋に予定しているメジャーバージョンアップの話をし始めたのですが、冒頭で「コアをRustで実装して17倍速くなる」と言っていて、リンク張られていたドキュメントを読みました。この記事はそこで語られていた内容を中心にPydantic v2についてご紹介します。 Pydanticとは v2の話の前に、そもそもPydanticとは何かについて簡単に触れておきます。PydanticはPythonの型ヒント情報を使ってデータバリデーション(データの妥当性検証)を行うライブラリです。予めデータの構造を定義しておいて、入力されたデータがその構造に合っているかを調べてくれます。 例えば、id

    PydanticがRustで爆速になるという話 - Qiita
  • 世界四連覇AIエンジニアがゼロから教えるゲーム木探索入門 - Qiita

    はじめに 書籍化 記事を元に ゲームで学ぶ探索アルゴリズム実践入門~木探索とメタヒューリスティクス という書籍を出版することになりました! 記事を読んで気になっていただけたらご購入をご検討いただけるとうれしいです! この記事で得られる技術 ゲームルールに適した探索アルゴリズムを選択する ゲーム木探索をするのに適したクラス設計 主要なゲーム木探索アルゴリズムの実装 この記事の特徴 汎用アルゴリズムの実装例による他ゲームへの応用力と、実際に動作可能なサンプルコードによる具体的実装イメージの両視点でわかりやすくした(片方しか記載のない記事が多い) サンプルコード付き日語記事がほぼないDUCTを解説している サンプルコードは印のついたメソッドを実装したクラスさえ書けば、アルゴリズム部分を変更せずそのまま他のゲームで動作可能になっている この記事で扱わない関連技術 探索の高速化 多様性の確保

    世界四連覇AIエンジニアがゼロから教えるゲーム木探索入門 - Qiita
  • Rust xmas! - Qiita

    メリークリスマス!! Rust xmasです(言いたかっただけ 初Rustなので作法もわかってませんが、npmにあったxmasを移植してみました source 書いてみて 文字列の扱いが慣れてないためか難しい 型推論してくれるんだけど、constはよくわからなかった rand::seq::SliceRandom便利だった 参考 https://memo.sugyan.com/entry/20111225/1324744827 https://github.com/sugyan/npm/blob/89d6663e318916abb744c5f7f5f94a206efcd51c/lib/xmas.js

    Rust xmas! - Qiita
    sugyan
    sugyan 2021/12/25
    なつかしネタ
  • フレッツ光回線でscpが遅かった話 - Qiita

    この記事は、Supershipグループ Advent Calendar 2021の7日目の記事になります。 先日、sshを使用したファイル転送が回線速度と比べて異常に遅いという現象に遭遇したので、その際に行った調査を再現しつつ原因や対策について書いてみたいと思います。 要約 OpenSSHはデフォルトでinteractiveなセッションに af21 、non-interactiveなセッションに cs1 をDSCP値としてIPヘッダに設定する フレッツ網はIPヘッダのDSCP値を帯域優先サービスで使用しており、契約に応じて指定された優先度以外が設定されたパケットの転送は保証されない そのため、OpenSSHをデフォルト設定のままフレッツ網で使うと通信ができなかったり、速度低下などの悪影響を受ける可能性がある OpenSSHがDSCP値を設定しないようにするためには、IPQoS noneを設

    フレッツ光回線でscpが遅かった話 - Qiita
  • RustでJSONパーサーをフルスクラッチで実装する - Qiita

    この記事はRust Advent Calendar 2021 カレンダー2の1日目の記事です。 はじめに エンジニアは一度はJSONパーサーをフルスクラッチで実装したほうが良いという天啓を受け、RFC 8259を読みつつRustでJSONパーサーを実装してみました。パーサーの実装は面白く勉強になり満足しましたが折角なのでhands-on形式の記事にしようと思いこの記事を書きました。 Rustの基的な文法が分かる方向けに記事を書きましたが、これからRustを勉強してみたい方にもぜひ挑戦してほしいです。 複雑な機能は使っていないので、分からない文法や標準ライブラリは公式ドキュメントを読めば十分補完できると思います。 The Rust Programming Language 日語版 Rust by Example 日語版 monkey-json 記事ではRustでJSONパーサー(mo

    RustでJSONパーサーをフルスクラッチで実装する - Qiita
    sugyan
    sugyan 2021/12/01
    段階踏んでtestも丁寧に書きつつ進めていて勉強になる…
  • コンパイルキャッシュでRustのビルド時間を短縮しよう - Qiita

    これはRustその3 Advent Calendar 2019の初日の記事です。 sccache — Mozillaが開発したRust製のコンパイルキャッシュ Rustはコンパイル言語です。個人的にはRustのコンパイル速度は遅くはない方だと思っていますが、依存しているクレートが多いとビルドにかかる時間が長くなります。特に非同期I/Oを行うWebクライアント/サーバーのクレートを使ったときや、Cargo自体をライブラリとして使うCargoサブコマンドをビルドするときなどは、依存クレートが200個くらいになることがあり、マシンの性能によってはビルドにかなりの時間を要します。 ビルド時間を短縮するためにコンパイルキャッシュという種類のソフトウェアがあります。これはコンパイルによって作られた成果物をディスクなどにキャッシュしておき、同じ条件のコンパイル要求があったときには、キャッシュしたものを返

    コンパイルキャッシュでRustのビルド時間を短縮しよう - Qiita
  • Rust のデバッグチートシート - Qiita

    Rust Debugging Cheatsheet 開発の基 エディタ VSCode + rust-analyzer - https://marketplace.visualstudio.com/items?itemName=matklad.rust-analyzer 推奨 neovim + vim-lsp-settings - https://github.com/mattn/vim-lsp-settings lsp の最低限の機能が使える neovim + coc - https://github.com/fannheyward/coc-rust-analyzer 構造に対する置換などの rust-analyzer 固有の機能が使える rust-analyzer ガイド - https://rust-analyzer.github.io/manual.html#structural-

    Rust のデバッグチートシート - Qiita
  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の当の理由を知ると優れた文法が見えてくるShellScriptBashUNIXshellPOSIX はじめに シェルスクリプトの変数代入で = の前後にスペースを置くことができない理由は、検索すれば「プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話」のような記事がすぐに見つかります。記事に書いてあるとおり変数代入とコマンド呼び出しと区別がつかないからです。それは間違いではないんですが、私はもう少し説明が足りないと感じています。そこで今回は = の前後にスペースを置けない当の理由を解説したいと思います。 の前に皆さんにはこの話を読みながら、自分がシェルスクリプトの言語設計者だったとしたら、どういう言語仕様にするかを考えて欲しいです。なぜかと言うとシェルスクリプトの文

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
    sugyan
    sugyan 2021/11/11
  • 「998244353 で割ったあまり」の求め方を総特集! 〜 逆元から離散対数まで 〜 - Qiita

    1. なぜ 998244353 で割るのか? 最初はこのような設問を見るとぎょっとしてしまいますが、実はとても自然な問題設定です。 $998244353$ で割らないと、答えの桁数がとてつもなく大きくなってしまうことがあります。このとき以下のような問題が生じます: 多倍長整数がサポートされている言語とされていない言語とで有利不利が生じる 10000 桁にも及ぶような巨大な整数を扱うとなると計算時間が膨大にかかってしまう 1 番目の事情はプログラミングコンテストに特有のものと思えなくもないですが、2 番目の事情は切実です。整数の足し算や掛け算などを実施するとき、桁数があまりにも大きくなると桁数に応じた計算時間がかかってしまいます。実用的にもそのような巨大な整数を扱うときは、いくつかの素数で割ったあまりを計算しておいて、最後に中国剰余定理を適用して復元することも多いです。 なぜ 9982443

    「998244353 で割ったあまり」の求め方を総特集! 〜 逆元から離散対数まで 〜 - Qiita
  • 【追記あり】ES2022 Array#at がちょっとおかしい #fix_ecmascript_at - Qiita

    既に Stage 4 になっているので諦めていたんですが、流石に見逃せないかなと思ったので TC39 の Discourse にトピックをたててみました。意見がある方はこちらにお願いします。 https://es.discourse.group/t/fix-at/983 議論に伴って私が実際に欲しかったものをモジュールにして公開してみました。 https://github.com/petamoriken/safe-at それといまいちユーザーからの声が伝わっていない感じがしたのでハッシュタグ #fix_ecmascript_at を用意してみました。協力をよろしくおねがいします。 String#char{At, CodeAt} という存在を忘れてたんですが、この似た名前のメソッドたちが引数を整数に丸めるのに String#at が丸めないのはたしかに変だということに気づいてしまったので、自

    【追記あり】ES2022 Array#at がちょっとおかしい #fix_ecmascript_at - Qiita