並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 72件

新着順 人気順

再帰の検索結果1 - 40 件 / 72件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

再帰に関するエントリは72件あります。 プログラミングprogrammingアルゴリズム などが関連タグです。 人気エントリには 『MySQLで階層構造を扱うための再帰的なクエリの実装方法と実用例』などがあります。
  • MySQLで階層構造を扱うための再帰的なクエリの実装方法と実用例

    1.はじめに RDBでの階層構造の関係を持つデータを扱う上で、 効率的なデータの持ち方や抽出方法について検証を行っています。 結論から先に 階層構造を扱う方法として下記の種類があります。 隣接リスト 経路列挙 入れ子集合 閉包テーブル 再帰クエリ(WITH RECURSIVE)を使うと階層データを扱う上でのパフォーマンスが得られます。 検索性、更新量、データ量など加味すると隣接リストで再帰クエリを用いるのがよさそう。 2.階層構造を持つデータの概要 階層構造を持つデータとは 複数の要素(データ)が親子関係で結びついている構造を持つデータ 1つの要素が複数の要素の親になることができ、 また、1つの要素が複数の子要素を持つこともあります。 ある要素を親として、細分化された子要素であったり、 類似する要素を抽象化したものを親要素とするようなデータ。 階層構造を持つデータの例 組織における事業部、

      MySQLで階層構造を扱うための再帰的なクエリの実装方法と実用例
    • 「ループ・再帰・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 氏の回答の和訳を引用します。 マイクロソフト社のデータサイエンティスト Conn

        「ループ・再帰・gotoを使わず1から100までの数値を印字する」Conner Davis 氏の回答の考察 - Qiita
      • 再帰的な構造のデータの同値性判定はどうしたらいいか - 貳佰伍拾陸夜日記

        数日前にTwitterで, JavaScriptのオブジェクトに対する===の挙動が初心者には難しいみたいな話を見かけた. 発端や周辺の議論をちゃんと追いかけてないからとくに出典は貼らない. たぶん元々の話は「へぇ, こういう挙動なんだ, 簡単ではないね」くらいの話だったのかもしれない. 自分のタイムラインの観測範囲では「そうだそうだ, (参照の同一性ではなく)同値性にしとけばいいのに」と思っている人もそれなりにいそうに見えた. 個人的にも同値性が簡単に確認できるとよい気はするものの, 「なんでそうしないんだ, オブジェクトの中身を確認していくだけだろ!」みたいな簡単な話ではないことも知っているため, 以下のようなツイートをしたのだった. JavaScriptのオブジェクトの同値性、再帰的な構造とか作るとぜんぜん自明じゃないんだよなぁ。リンクの構造は違うけどプロパティを辿ったときのパスはど

          再帰的な構造のデータの同値性判定はどうしたらいいか - 貳佰伍拾陸夜日記
        • それ、非再帰で書けます - Qiita

          この記事は再帰自体を全否定する趣旨ではありません。 両方の良さを理解した上で非再帰で書きたいと思ったときの参考にしていただければと思います。 まだ再帰関数書いてるの? 再帰関数はプログラミング言語の有用な機能で、深さ優先探索をベースとする様々なアルゴリズムの実装として有用です。 その一方で、関数呼び出しはオーバーヘッドが大きく、定数倍が弱くなります。また、JavaやPythonなどのスタック領域の制限が厳し目の言語では深すぎる再帰のせいでRuntime Errorが発生する場合があります。 C++などのコンパイル言語ではインライン展開によって関数呼び出しのオーバーヘッド解消されることもありますが、再帰関数は中でもインライン展開の難易度が高く、深い再帰ではそのまま実行せざるを得ない状況になります。 ところが、再帰関数は生のスタックを自分で用意するなどして非再帰に書き直すことができます。(「停

            それ、非再帰で書けます - Qiita
          • 競走馬の血統をSQLで再現できる! 再帰クエリ徹底活用してみた - asoview! Tech Blog

            アソビュー! Advent Calendar 2022の10日目です。 8月に入社しアソビューでバックエンドエンジニアをしている長友です。 みなさま再帰クエリ使っていらっしゃるでしょうか! 最近アソビューではmysqlの8系へのバージョンアップを行った為、再帰クエリの利用が可能となりました。 そこで本日は、アソビュー競馬部にも所属しておりサラブレッドの血統好きな私が再帰クエリを使ってツリー構造の血統表を作成してみるというお話です。 血統表とは ~ 本稿の目的 再帰クエリについて mysqlにおける再帰クエリの構文 再帰クエリとナイーブツリー構造 血統表作成における再帰クエリ 血統表のデータ構造 血統表を作成するクエリ ポイント1. 世代を表すgenerationを0で初期化し、各再帰の中でインクリメントする ポイント2. 世代内での配置を表すpositionを初期値1で定義し、再帰で取得す

              競走馬の血統をSQLで再現できる! 再帰クエリ徹底活用してみた - asoview! Tech Blog
            • よくやる再帰関数の書き方 〜 n 重 for 文を機械的に 〜 - けんちょんの競プロ精進記録

              時は 2020 年 5 月 3 日。 ここ最近、AtCoder では、「再帰関数を用いた DFS な全探索」というタイプの問題が激増しています!!! AtCoder ABC 165 C - Many Requirements (昨日のやつ) AtCoder ABC 114 C - 755 AtCoder ABC 119 C - Synthetic Kadomatsu AtCoder ABC 161 D - Lunlun Number パナソニックプログラミングコンテスト D - String Equivalence これらの多くは緑後半から水色前半の difficulty を叩き出す、とても恐れられている問題たちです。しかし実のところ、「ちょっと複雑だけど、単純に全探索するだけ」という側面もあります。 これらの出題が最近急増しているのは、おそらくは AtCoder 社側に 最近の AtCo

                よくやる再帰関数の書き方 〜 n 重 for 文を機械的に 〜 - けんちょんの競プロ精進記録
              • 幻想再帰のアリュージョニスト(最近) - カクヨム

                私が「小説家になろう」に投稿を始めたきっかけが、このカルト的人気を誇る作品でした。 当時の衝撃を今でも覚えています。 とあるまとめサイトに紹介されていた本作品を読んだとき、私は「こんなに自由に書いていいんだ!」と思いました。 サイバーパンク的なSF用語とハイファンタジーが高度なレベルで融合しており、それでいて物語がドラマチックで面白い。 物語の風呂敷がもう笑っちゃうほどクソデカに広がっていて、作者の好きなもの(?)がこれでもかと思うぐらいぎっしりと詰まっています。 そして、こんな書き方をしてもいいんだ、こんな書き方してみたい、と目からウロコが落ちました。 私の中で、小説の書き方の『幅』…続きを読む

                  幻想再帰のアリュージョニスト(最近) - カクヨム
                • 関数の再帰的な定義に名前付けは必要か - 貳佰伍拾陸夜日記

                  結論から言うと, 名前を付けることなく再帰的な関数を定義することは可能. 特定のプログラミング言語でどうかというよりは抽象概念としての関数の再帰を名前なしに実現可能かどうかという話(名前なしに実現できるプログラミング言語は存在するかという話). 発端 id:naoyaさんがこういうツイートをしていた. 再帰を書くときに何気なく関数に名前つけたり let で束縛したりしてたけど「再帰には三項関係が必要でありその実現には記号が本質的に関わる」とあり、名前づけの行為が必然だったことが分かった。プログラミングするときの視点が変わるな— naoya (@naoya_ito) 2022年8月12日 たとえば以下のように書いたときのlet fact =みたいな話. let fact = n => n <= 1 ? 1 : n * fact(n-1) ちなみに, 話は一見逸れるけど, こう書けると必然的に

                    関数の再帰的な定義に名前付けは必要か - 貳佰伍拾陸夜日記
                  • 新卒エンジニア向け機械学習研修2022〜機械学習と再帰化〜 - ペパボ研究所ブログ

                    研究員の渡辺(@watasan) です。 先日、ペパボ研究所のメンバーが社内で実施した、新卒エンジニア向け機械学習研修についてご紹介します。 ペパボ研究所は2020年から、新卒エンジニア研修1の一環として機械学習研修を実施しています2。 今年で3年目となりますが毎年アップデートを重ねており、今年はより「ペパボらしさ」の強い研修となりました。 このエントリでは本研修の目的やコンテンツについてご紹介できればと思います。 本研修の位置付けと目的 GMOペパボ(以降ペパボ)では、新卒入社したエンジニアに向けて、様々な技術要素について「現時点で一番良いやり方」を学んでもらうための研修を毎年行っています2。 フロントエンド、バックエンド、インフラ、セキュリティなど、Webサービスを構築するための技術に関して「現時点で一番良いやり方」を学ぶことが研修全体のゴールとして設定されています。 この新卒エンジニ

                      新卒エンジニア向け機械学習研修2022〜機械学習と再帰化〜 - ペパボ研究所ブログ
                    • [数学×Python]再帰呼び出しをマスターしよう

                      再帰に対して多くの人が持つであろう苦手意識を払拭(ふっしょく)するために、再帰の基本から、その考え方とプログラミングの方法を見ていく。動的計画法を利用した最小コストの計算法などについても紹介する。 連載目次 前回は、積分の数値計算法を見ました。今回は、「計算」から少し趣を変えて、再帰呼び出し(以下、必要がなければ「再帰」と略記します)のPythonプログラミングを見ていきます。 再帰とは関数の定義の中でその関数を呼び出すプログラミングの方法です。自分自身を呼び出すようなイメージなので「訳が分からない」と再帰に苦手意識を持つ人も多いようですが、基本は高校で学んだ「漸化式(ぜんかしき)」をそのままコードとして表すだけです。漸化式も名前はいかめしいですが、要するに「芋づる式」に、順に値を求めていくことです。今回は、漸化式と再帰の基本的な考え方を押さえた後、応用例として、メモ化により計算量を減らす

                        [数学×Python]再帰呼び出しをマスターしよう
                      • 「聖なるものを人間化する」若者たち―『再帰的近代のアイデンティティ論 ポスト9・11時代におけるイギリスの移民第二世代ムスリム』(晃洋書房)/安達智史(著者) - SYNODOS

                        2020.12.11 「聖なるものを人間化する」若者たち―『再帰的近代のアイデンティティ論 ポスト9・11時代におけるイギリスの移民第二世代ムスリム』(晃洋書房) 安達智史(著者)社会学理論、政治哲学 「イスラーム」あるいは「イスラーム教徒(以下、ムスリム)」と聞くと、どんなイメージをもつでしょうか。頭・全身を覆うスカーフやヴェールを着用する女性、白い帽子や首から足下までが隠れるガウンを着こなす男性などを思い浮かべるかもしれません。ヨーロッパに旅行した人なら、西洋の都市空間のなかに異質な文化的景観を作り上げる、少しとっつきにくい人たちという印象を抱くかもしれません。あるいは、より近年では、ヨーロッパやその他の地域で相次ぐ過激主義者による「テロ」となんとなく紐付けてイメージする人も多いかもしれません。 ここで紹介する拙著『再帰的近代のアイデンティティ論―ポスト9・11時代におけるイギリスの移

                          「聖なるものを人間化する」若者たち―『再帰的近代のアイデンティティ論 ポスト9・11時代におけるイギリスの移民第二世代ムスリム』(晃洋書房)/安達智史(著者) - SYNODOS
                        • 【Python】再帰関数を使ったプログラミング問題の解き方を解説する - paiza times

                          StartupStockPhotosによるPixabayからの画像 こんにちは。倉内です。 プログラミング問題には、計算問題だけでなく配列や文字列を操作したり、図形から法則を見つけたりといろいろなものがあります。その中でも「関数を定義して処理を書くのは苦手だな…」と感じている方は多いのではないでしょうか。 私もまさにそのひとりで、基本は学んだものの使いこなせていません…。そこで今回は、さまざまな問題を集めた「レベルアップ問題集」の中から再帰関数を使って解く問題に挑戦しようと思います! 今回はスマートな解き方や綺麗なコードを書くというよりは、プログラミング初心者でもこういう方針を立てて、こう考えてみたら解けるかもということを重視して解いていきます。 プログラミング学習を始めたばかりの初心者の方もぜひ参考にしてみてください。 レベルアップ問題集「山折り谷折り」をPythonで解く paizaで

                            【Python】再帰関数を使ったプログラミング問題の解き方を解説する - paiza times
                          • 再帰的ニューラルネットワークとは?自然言語処理に強いアルゴリズムの仕組み

                            再帰的ニューラルネットワークとは 再帰的ニューラルネットワーク(Recurrent Neural Network: RNN)」は、回帰型・循環型とも呼ばれるニューラルネットワークです。 このネットワークは単語に含まれる「再帰的」という言葉の意味を理解していると、その本質が理解しやすくなります。ただ、「再帰」という単語はコンピューターや数学に関わっていない人には聞き慣れないかもしれません。再帰というのは、事象の結果が原因になり得る状態を指す言葉で、一種の「ループ」をイメージすると分かりやすいでしょう。 たとえば、「ニワトリは卵から生まれ卵はニワトリから生まれ、そのニワトリは卵から……」とか「ジュースを売ったお金で売ったジュースを買い戻し、そのジュースを売ったお金で……」というのは再帰的な事象と言えます。延々と続きそうな現象ですが、「ニワトリが卵を生む前に死ぬ」「お店が閉店する」といった事象が

                              再帰的ニューラルネットワークとは?自然言語処理に強いアルゴリズムの仕組み
                            • [アップデート] Lambda 関数が再帰ループを検出して停止するようになりました | DevelopersIO

                              サポートリージョン アジアパシフィック (香港、ジャカルタ、大阪、ムンバイ、ソウル、シンガポール、シドニー、東京) アフリカ (ケープタウン) カナダ (中部) ヨーロッパ(フランクフルト、アイルランド、ロンドン、ミラノ、パリ、ストックホルム) 南米 (サンパウロ) 米国東部 (オハイオ、北部バージニア) 米国西部 (オレゴン、北部カリフォルニア) 検証 以下 Lambda 関数の再帰ループ検出についての AWS ブログを参考に、再帰ループする Lambda 関数と SQS キューを作成します。 GitHub のサンプルコードは以下を利用します。 AWS SAM CLI を使って環境を構築します。 私は開発環境として Cloud9 を利用しました。 Cloud9 環境の作成 Name:sam-environment Description:sam-environment Cloud9 環境

                                [アップデート] Lambda 関数が再帰ループを検出して停止するようになりました | DevelopersIO
                              • どんな物体も“ステルス”加工できる技術 東大などが開発 形状の再帰性反射を最小化

                                Innovative Tech: このコーナーでは、テクノロジーの最新研究を紹介するWebメディア「Seamless」を主宰する山下裕毅氏が執筆。新規性の高い科学論文を山下氏がピックアップし、解説する。Twitter: @shiropen2 東京大学梅谷研究室とイスラエルのライマン大学、オーストリア科学技術研究所に所属する研究者らが発表した論文「Stealth Shaper: Reflectivity Optimization as Surface Stylization」は、元の形状を保持しつつ表面の再帰性反射を最適化することで物体をステルスデザインに変形するフレームワークを提案した研究報告である。 ステルスデザインとは、戦闘機や戦艦などでよく見られる、形状の再帰性反射を最小限に抑えることでレーダーからの検知を避けるためのデザイン手法であり、シャープな折り目を多く持つ特徴的な「幾何的スタ

                                  どんな物体も“ステルス”加工できる技術 東大などが開発 形状の再帰性反射を最小化
                                • npm scripts で rimraf を使わずディレクトリを再帰的に削除する

                                  3 行で Node.js >= v14.14.0 であること rimraf dist は node -e 'fs.rmSync(`dist`, {recursive:true, force:true})' で置き換えられる rimraf dist/*.bundle.js みたいな glob を含むものは置き換えできない 長い説明 npm scripts で不要なキャッシュやビルドの出力ファイルを削除したい場合は rimraf というパッケージを POSIX の rm -rf の代わりに使うことが多いと思います。これは Windows で npm run の実行に使われる コマンドプロンプト (cmd.exe) に rm がないのを始めとした環境依存の問題を避けるためです。 とはいえパッケージなしではディレクトリの再帰的削除もできない、というのはちょっと困るので、v12.10.0 で fs.

                                    npm scripts で rimraf を使わずディレクトリを再帰的に削除する
                                  • type family を使って再帰的 ADT をオープンにする

                                    元ネタは Trees that grow . Haskell では代数的データ型 (ADT) を使ってプログミングに使うデータ構造を定義し,その構造を操作することによりプログラミングを行う. ADT はパターンマッチが容易で,再帰的に定義でき,基本的に閉じた構造になっている.そのため便利な反面,その機能が保守で仇となる場合もある.この問題は古くから知られており,いくつかの解決策も提案されてきた.今回はこのうち,現在 GHC で採用されつつある type family を使った解決方法を紹介する. なお,環境として以下を想定している. The Expression Problemプログラミング,特に Haskell を使用したプログラミングにおいて,データ型は非常に重要な役割を持つ.特に,一部のプログラムにおいては,根幹をなすデータ型がいくつか存在するような場合もある.この場合データ型の扱い

                                      type family を使って再帰的 ADT をオープンにする
                                    • Swiftにおける末尾再帰とCompilerによる最適化を探る | メルカリエンジニアリング

                                      SwiftのCompilerはOSSとして公開されているので、興味のある方はぜひチェックしてください。 github.com また、Swift Compilerのアーキテクチャについては、こちらの記事がとても分かりやすいです。 qiita.com 末尾再帰にしたとして、最適化を無効にしたときと有効にしたときで実行結果が変わってくるのであれば、Compilerの生成物も当然異なっているはずです。 それでは、最適化を無効にしたときと有効にしたときで、上記のどのタイミング(Component)でどのような生成物の違いがあるのか、見ていきます。 各Componentにおける差分 次の内容をsum.swiftとして保存し、生成物の差分を実際に見ていきます。 func sum(_ n: Int, _ res: Int) -> Int { if n == 0 { return res } return

                                        Swiftにおける末尾再帰とCompilerによる最適化を探る | メルカリエンジニアリング
                                      • 再帰 - Qiita

                                        Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

                                          再帰 - Qiita
                                        • TypeScriptの型で遊ぶ時、再帰制限を(合法的に)突破する - Qiita

                                          TypeScriptの型の再帰は50が上限です。 先日、 @kgtkr さんがTypeScriptの型で遊ぶ時、再帰制限を無効化するという記事で、 その再帰制限を、ソースコードを書き換えることで突破して、型レベル BrainF**k などで遊んでいるのを見ました。 タイトルで合法的と言っておきながら、別にソースコードを書き換えるのが何らかの法に触れる訳ではないのですが、とは言え @kgtkr さんも記事の中で、 当然ですがプロダクトで使うことは想定していません、やめましょう。 と言っている通り、これをプロダクトに採用するわけにはいきません。 というわけで、ソースコード書き換えをせずに再帰制限を突破してやろう、というのがこの記事の趣旨です。 文字列を分割する(再帰制限に引っかかる例) Template literal types がマージされたので、 typescript@next を使えば

                                            TypeScriptの型で遊ぶ時、再帰制限を(合法的に)突破する - Qiita
                                          • 『幻想再帰のアリュージョニスト』は「ラノベ天狗」をいかに意識したか?

                                            リンク い(い)きる。 アリュージョニストに○される - い(い)きる。 「幻想再帰のアリュージョニスト」というなろう小説があります。幻想再帰のアリュージョニスト - 小説家になろう作者は「最近」(これがペンネーム)。別作品で既に商業デビューも果たしている実力派作家です。アリス・イン・カレイドスピア 1 (星海社FICTIONS)作者: 最近,あずき出版社/メーカー: 講談社発売日: 2015/07/16メディア: 単行本(ソフトカバー)この商品を含むブログ (10件) を見るこの「アリュージョニスト」自体は書籍化されていませんが、異世界転生俺TUEEEハーレムをベースにしなが 29 users リンク WINDBIRD ラノベ天狗 VS アリュージョニスト作者 - WINDBIRD (たぶん多くの人は全く興味がないと思いますが)おなじみラノベ天狗ことsrpglove氏と、カルト的な人気を

                                              『幻想再帰のアリュージョニスト』は「ラノベ天狗」をいかに意識したか?
                                            • TypeScript の型の再帰上限を突破する裏技 - Object.create(null)

                                              TypeScript 4.1 で再帰的な conditional type の定義に制限がなくなり (ref), 今後ますます再帰的な型定義をする / 触れることが多くなろうかと思います. 一方で TypeScript が型をインスタンス化する際の再帰の上限はそこそこ厳しく, ちょっと複雑なことをするとすぐに頭を打ってしまいます. 困りましたね. ということで裏技を使ってこの再帰上限を突破する方法を紹介します. 実は以前に型レベル Brainfuck インタプリタを実装した時にも使っていたのですが, あまり知られていないようなので改めて. ちなみにこちらの記事のように TypeScript 自体のコードに手を入れたりはしません. 以下使用している TypeScript のバージョンは 4.1.0-dev.20200911 です. 上限を突破する例 まずは実際に再帰的な型定義を行い, 上限を

                                                TypeScript の型の再帰上限を突破する裏技 - Object.create(null)
                                              • Rust入門を兼ねてプロジェクト・オイラーの問題を解く - 再帰の反復blog

                                                とりあえず問100まで解くことに決めて始めたのだけど、問題の難易度やプログラムを書く面倒さが速いペースで増加していくので割と早い段階で問題を解くことが優先になって、Rustの機能やライブラリを理解することがおざなりになってしまった。 それでも言語の初歩的な部分についてはそれなりにRustの感覚が得られた気がする。 1. 整数とベクター 大部分の問題は、整数、整数のベクター、整数のベクターのベクター等々だけを使って解ける。 そのため、プログラムを書くときに所有権などのせいで書き方に困ることはあっても、そうした所有権とか生存期間とかの規則が問題を解く上で本質的な障害になることはそんなに無い。 「gotoしかない言語でプログラムを書いていた人がforやwhileだけでプログラムを書く」とか「破壊的変更が普通の言語を使っていた人がデータは基本的に不変な言語を使う」ような感じかも。 ベクターすら使う

                                                  Rust入門を兼ねてプロジェクト・オイラーの問題を解く - 再帰の反復blog
                                                • 生成AIのデータがインターネットを汚染、基盤モデルを崩壊させる「再帰の呪い」

                                                  ChatGPTなどの生成AI(人工知能)が大量のデータをつくり出す中、フェイクなどによる事件や悪影響が懸念される。さらに、生成AIがつくり出したデータによって生成AIのモデル自体が崩壊する恐れも出てきた。今回は番外編として、この問題を取り上げる。 生成AIの基盤となるのは大規模言語モデル(LLM)や画像などを生成するための拡散モデルである。こういった基盤モデルはインターネット上の膨大なデータを使って学習させる。そのほとんどは人間がつくったデータだ。 だが生成AIの普及により、生成AIがつくった大量のデータがインターネットに日々放出されている。このため今より後の世代のモデルは、人間によるデータだけではなく前の世代のモデルがつくったデータを使って学習することになる。これを繰り返すと、モデルは一体どうなってしまうのだろうか――。 2023年5月から6月にかけて、このテーマに関する研究論文が相次い

                                                    生成AIのデータがインターネットを汚染、基盤モデルを崩壊させる「再帰の呪い」
                                                  • プログラミング言語における再帰の初出はLISPではなかった - Arantium Maestum

                                                    ポール・グレハムの記事の一つにWhat Makes Lisp Different?というものがある: www.paulgraham.com ポール・グレハムらしくよく書かれていて、C言語などと比較した場合のLispの特徴をうまく捉えているように思う。 その中の一つが Recursion. Recursion existed as a mathematical concept before Lisp of course, but Lisp was the first programming language to support it. (It's arguably implicit in making functions first class objects.) こうある通り、私も今まで深く考えたこともなく「プログラミングにおける再帰はLispが由来」と考えていたのだが、前回の記事を書く

                                                      プログラミング言語における再帰の初出はLISPではなかった - Arantium Maestum
                                                    • Linuxコマンドのお勉強 再帰的にパーミッションを変更 - Qiita

                                                      このコマンドだと全てのファイル・ディレクトリが変更されてしまう。 findを使用して再帰的にパーミッションを変更 ディレクトリのみ

                                                        Linuxコマンドのお勉強 再帰的にパーミッションを変更 - Qiita
                                                      • bit 全探索を「再帰関数」で書く 2 つの流儀 - けんちょんの競プロ精進記録

                                                        0. はじめに bit 全探索は、世の中で「AtCoder 温室育ちだと弱い」と言われるタイプの問題の代表かもしれません。何も考えずに思考停止して全探索すればよいのですが、ちょっと実装が重たい傾向にあって、書き切るのが大変という感じです。difficulty を見ても ABC-C の中でも高めの傾向です。 ABC 147 C - HonestOrUnkind2 (972) ABC 128 C - Switches (728) ABC 119 C - Synthetic Kadomatsu (1306) ABC 104 C - All Green (1396) bit 全探索の考え方や実装は、以下の記事にまとめてみました。 drken1215.hatenablog.com しかし、全探索アルゴリズムにおいて、より汎用的な方法として再帰関数を用いるというのがあります。むしろ、再帰関数を自在に書

                                                          bit 全探索を「再帰関数」で書く 2 つの流儀 - けんちょんの競プロ精進記録
                                                        • インタビュー:21世紀のサイバネティクス——ユク・ホイ『再帰性と偶然性』をめぐって - Research Network for Philosophy and Technology

                                                          インタビュー:21世紀のためのサイバネティクス——ユク・ホイ『再帰性と偶然性』をめぐって 出典:E-flux Journal #102(2019年9月) URL = https://www.e-flux.com/journal/102/282271/cybernetics-for-the-twenty-first-century-an-interview-with-philosopher-yuk-hui/ 訳:伊勢康平 新著『再帰性と偶然性』(2019年)のなかで、香港の哲学者ユク・ホイは、再帰性とは単なる機械的反復ではないと主張している。かれは「規範からの不規則な逸脱」に関心をもち、新生気論者〔neovitalist〕とでも言うべき立場を築いている。これは、ロボットには生命がある(あるいはやがて生命をもつだろう)というような、昨今の大衆文化のなかで有力な見方を乗り越えるものだ。「器官学」

                                                            インタビュー:21世紀のサイバネティクス——ユク・ホイ『再帰性と偶然性』をめぐって - Research Network for Philosophy and Technology
                                                          • オブジェクト指向におけるVisitorパターンは、F代数によるμ再帰を Church encoding したもの

                                                            某所で オブジェクト指向 (OOP) における Visitorパターン について話されていたので、自分の関数型プログラミングのメモ用に整理してみたいと思います。 (Twitterで書くには少し長すぎたので、こちらに整理) 2021/01/10 EDIT: Church (Boehm–Berarducci) エンコーディングとVistorパターンについての具体的な事例は、こちらの記事が分かりやすいので、ご参照ください。 Haskell for all: The visitor pattern is essentially the same thing as Church encoding 概要 OOP における Visitor パターンは、関数型プログラミング的に言えば、(パターンマッチする)F代数によるμ再帰を Church encoding したもの。 つまり、 を関数適用して、結果 a

                                                              オブジェクト指向におけるVisitorパターンは、F代数によるμ再帰を Church encoding したもの
                                                            • Rustで有名アルゴリズムに挑戦(11) Rustで再帰を使ってシダを描画しよう

                                                              Rustの良さの一つがC/C++に匹敵する実行速度です。昨今のスクリプト言語も十分高速なのですが、画像生成など単純な計算が頻出する場面ではRustを使うと有利です。今回は、シダを描画してPNGで保存するプログラムを作ってみましょう。 Rustでシダを描画しPNG形式で保存したところ 画像データの保存について Rustで画像を描画しようと思った場合、いくつかの方法があります。本連載6回目で紹介したように、Bitmap形式の画像データを生成してファイルに保存することもできますし、本連載7回目で紹介したように、imageクレートを使って画像データをPNG形式で保存することもできます。今回は、imageクレートを利用して、画像を描画してみましょう。 「imageクレート」(https://crates.io/crates/image)は、Rustの画像処理ライブラリです。基本的な画像処理の機能を備

                                                                Rustで有名アルゴリズムに挑戦(11) Rustで再帰を使ってシダを描画しよう
                                                              • 再帰関数が苦手なエンジニアのための再帰関数入門 - Qiita

                                                                エンジニアに転職して早2年半。いまだに再帰関数が苦手です。 再帰関数を含むコードレビューがあると「よく分からんけど、動作も良いしテストも書かれてるしヨシ!!approved!!」としてしまったことも...(絶対あかん😇)。 さすがにそれはヤバイと、再帰関数を学び直したのでその結果をまとめてみました。 再帰関数とは? 再帰関数とは、関数内で、自分自身を呼び出す関数です。 この時点で謎ですよね。最初にみたときは「無限ループでは?」って思いました。 以下再帰関数の例として度々あげられる階乗の計算です。 const factorial = (n: number): number => { if (n < 2) { return 1; } return n * factorial(n - 1); }; test('factorial' => { expect(factorial(0)).toBe(

                                                                  再帰関数が苦手なエンジニアのための再帰関数入門 - Qiita
                                                                • 不動点コンビネータを用いた無名再帰関数の実行まとめ - Qiita

                                                                  諸般の理由で『Pythonのlambda式を用いたラムダ計算の基礎表現』を書いた後にHaskellに触れたところ,無名再帰関数を実行する不動点コンビネータfixがとんでもなく簡単に書けたため,同じ方法で他のプログラミング言語でもできないか試したところ,これまたあっさりできたので,まとめメモ的に新しく記事にした. このような内容がQiitaや書籍,ネット上に星の数の更に星の数乗ほどあることは承知しているが,この手の話はYコンビネータが大きな割合を占めており(実際,元記事でも取り上げている),関心のある人々の数多ある参考資料のひとつ程度に捉えてもらえると幸いである.ツッコミ,編集リクエスト歓迎. 不動点コンビネータの定義 不動点コンビネータとは,$f(g(f))=g(f)$が成り立つ関数$g$を指す.この記事では,Haskellの呼称であるfixを不動点コンビネータの関数名とする. Haske

                                                                    不動点コンビネータを用いた無名再帰関数の実行まとめ - Qiita
                                                                  • 関数のカリー化って何だ? JavaScriptの関数の使い方をマスターできる解説書が発売/ECMAScript 2021に対応。関数定義の書き方からクロージャや再帰の応用までカバー【Book Watch/ニュース】

                                                                      関数のカリー化って何だ? JavaScriptの関数の使い方をマスターできる解説書が発売/ECMAScript 2021に対応。関数定義の書き方からクロージャや再帰の応用までカバー【Book Watch/ニュース】
                                                                    • ディープラーニングと脳の関係とは? 人工ニューロンや再帰型ニューラルネットワークを解説

                                                                      ビジネスやアートなど様々な分野で関心を集め、実際の活用が進む人工知能。人間の脳が持つ機能の一部を模倣している人工知能は、具体的に脳のどんな機能や構造を参考にしているのでしょうか。今回は人工知能を支える人工ニューロンやディープラーニングに焦点を当て、AI関連の教育と研究開発に携わっている我妻幸長さんによる『あたらしい脳科学と人工知能の教科書』(翔泳社)から脳と人工知能を比較して解説した「Chapter4」を紹介します。 本記事は『あたらしい脳科学と人工知能の教科書』の「Chapter4 脳と人工知能」から一部を抜粋したものです。掲載にあたり編集しています。 4.1 概要:脳と人工知能 最初に、このChapterの概要を解説します。機械学習は人工知能の一分野ですが、図4.1に脳と機械学習の関係を示します。 図4.1 脳と人工知能 機械学習は、教師あり学習、教師なし学習、強化学習に大きくグループ

                                                                        ディープラーニングと脳の関係とは? 人工ニューロンや再帰型ニューラルネットワークを解説
                                                                      • Kotlin1.4と末尾再帰と継承 - Juju-62q's blog

                                                                        この記事はKotlin Advent Calendar 2019 15日目の記事です。 また、OpenSaaS Studio Advent Calendar 2019 18日目の記事としてクロスポストをしています。 GraalVMの話を書くと言いましたが、あれは嘘です。 TL;DR 11/20ごろから Tailrec on open members is deprecated と言う警告が出るようになった 末尾再帰の関数には final 修飾子か拡張にするなどして継承できないようにする必要がある 末尾再帰関数を継承してoverrideした場合にバグが混入する場合がある Kotlin 1.4以降では末尾再帰関数は継承できない状態にしないとコンパイルできない ことの始まり 11/21日にInteliJ IDEAのKotlin Pluginを1.3.60へアップデートしました。 すると今までなに

                                                                          Kotlin1.4と末尾再帰と継承 - Juju-62q's blog
                                                                        • 圏論における普遍性と普遍射 - 再帰の反復blog

                                                                          数学における普遍性の概念は、どういうものなのか一言で説明しにくいものだけど、圏論では普遍射を使って定義するのが普通。 と思ったら、『ベーシック圏論』は副題(訳書での追加?)が「普遍性からの速習コース」だけど、本文中に普遍射という言葉がそもそも出てこない。普遍元は出てくるけど、これも脇役的な扱いという感じがする。 目次: 普遍性と普遍射の説明 n次元ベクトル空間に関する普遍性 普遍射 内側からの特徴付け、外側からの特徴付け 普遍性の定式化 例: 集合の直和とベクトル空間の直和 集合の直和 ベクトル空間の直和 直和の持つ普遍性 圏論的な定式化 直積 例: 商集合 商集合の作り方 商集合の持つ普遍性 普遍要素による定式化 例: 核(カーネル)と余核(コカーネル) 例: ベキ集合 例: 像(イメージ) 普遍射を使わない定式化と表現可能関手 1. 普遍性と普遍射の説明 1.1. n次元ベクトル空間に

                                                                          • 「Try Kotlin」でフィボナッチ数列を算出してみる(再帰呼び出しをやってみたかっただけ) - Little Strange Software

                                                                            どうも!LSSです!! 今回はまた、Try Kotlinで「フィボナッチ数列」を算出してみます! フィボナッチ数列とは? フィボナッチ数列のもうひとつの特徴『黄金比』 Try Kotlinでコードを書いてみました コード解説 再帰呼び出しを実行したら、どんな風に計算される? 再帰呼び出しの怖いところ 「数列」を出力するためにmainの内容を書き換えます ついでに、『黄金比』への収束、も試してみます フィボナッチ数列とは? 昔、フィボナッチさんという人が考えた事なんですが、「最初に0があり、次に1がある」状態 0,1 から始まり、その次に「前の数+前の前の数を足した数」がくる、つまり「0+1」で 0,1,1 になる。以降、ずっと「前の数+前の前の数を足した数」を続けていく、というルールで数を続けていくと、 0,1,1,2,3,5,8,13,21,34… という数の並びになります。 この「数の

                                                                              「Try Kotlin」でフィボナッチ数列を算出してみる(再帰呼び出しをやってみたかっただけ) - Little Strange Software
                                                                            • 無限に生命の誕生・進化・死を再帰し続ける恐るべきインタラクティブシミュレーション「Life Universe」

                                                                              イギリスの数学者ジョン・ホートン・コンウェイが考案した、生命の誕生と死をシミュレートする「ライフゲーム」の宇宙を再帰的に探索し続けられるようにしたインタラクティブコンテンツ「Life Universe」が公開されています。無限に広がる大宇宙に、どこまでも生命の営みが続いています。 Life Universe https://oimo.io/works/life/ どんなコンテンツなのかざっくりとわかるムービーはこんな感じ。 「Life Universe」で無限に再帰するライフゲームの世界を漂ってみた - YouTube ライフゲームのルールはシンプル。画面は細かいマス目で区切られていて、黒いマスは周囲3マスに色つきのドットがあると、次の世代では色つきドットになります(誕生)。色つきドットは、周囲に2つか3つの色つきドットがあれば次の世代も色つきドットになります(維持)。条件を満たさない色つ

                                                                                無限に生命の誕生・進化・死を再帰し続ける恐るべきインタラクティブシミュレーション「Life Universe」
                                                                              • kaz / AI Academy on Twitter: "神サイト見つけた。 ヤン・ルカン氏のニューヨーク大学の講義が無料公開されている。(動画は英語だが、サイトは日本語対応) 講義は全15回で構成されて、深層学習による教師あり・なし、畳み込み、再帰型NN、距離学習、自然言語処理、音声認… https://t.co/CboXdz9lp7"

                                                                                神サイト見つけた。 ヤン・ルカン氏のニューヨーク大学の講義が無料公開されている。(動画は英語だが、サイトは日本語対応) 講義は全15回で構成されて、深層学習による教師あり・なし、畳み込み、再帰型NN、距離学習、自然言語処理、音声認… https://t.co/CboXdz9lp7

                                                                                  kaz / AI Academy on Twitter: "神サイト見つけた。 ヤン・ルカン氏のニューヨーク大学の講義が無料公開されている。(動画は英語だが、サイトは日本語対応) 講義は全15回で構成されて、深層学習による教師あり・なし、畳み込み、再帰型NN、距離学習、自然言語処理、音声認… https://t.co/CboXdz9lp7"
                                                                                • Go Generics で実装する Y コンビネータ、再帰関数を汎用的にメモ化する - アルパカの徒然文

                                                                                  先日面白い記事を読んだ。The Y combinator in Go with generics である。 一番最初目に入ってきたのは難解なジェネリクスのコードである。 type Func[T, U any] func(T) U type TagFunc[T, U any] func(Func[T, U]) Func[T, U] type CombinatorFunc[T, U any] func(CombinatorFunc[T, U]) Func[T, U] func Y[T, U any](f TagFunc[T, U]) Func[T, U] { return func(self CombinatorFunc[T, U]) Func[T, U] { return f(func(n T) U { return self(self)(n) }) }(func(self Combinat

                                                                                    Go Generics で実装する Y コンビネータ、再帰関数を汎用的にメモ化する - アルパカの徒然文

                                                                                  新着記事