関数などのルーチンが自分自身を呼び出して実行すること。
ある種の複雑な問題を解くコードをシンプルに記述できる場合があるが、再帰による入れ子の数に応じて占有するメモリが増加する上、実行速度も効率的とは言えず、非再帰的に記述できるならそうすべきである。 再帰によって簡潔に記述できる処理の例としては「ハノイの塔」と呼ばれるゲームの解法が有名。
paizaラーニングの新・Python入門編に「新・Python入門編20: 関数の引数と再帰呼び出しを学習しよう」が追加されました。新・Python入門編では、プログラミング未経験者でもPythonとの特徴や強み、標準出力やデータ型、数値演算、変数や文字列、リストやタプルなどの使い方を動画レッスンと演習課題で学べます。今回は、「新・Python入門編20: 関数の引数と再帰呼び出しを学習しよう」の内容をご紹介します。paizaラーニングについて詳しくはこちら 【目次】 関数の引数と再帰呼び出しとは 新・Python入門編に追加されたレッスンの内容 新・Python入門編20: 関数の引数と再…
#include <iostream> using namespace std; void itakogei(){ cout << "再帰関数の大川隆法です.スゥ…「"; itakogei(); cout << "」" << endl; } int main(void){ itakogei(); }
1から5までの整数を1度ずつ使って5桁の整数を作るとき、何通りの整数が作れるか? 高校数学の基本問題である。一瞬で解ける簡単な問題だ。 しかし、それを全て書き出せと言われてたらどうだろう。かなり面倒な作業になる。こういう作業はコンピュータに任せるのがいい。 そこで、ExcelのVBAを利用して作ってみようと考えた人もいるはずだ。あいにくVBAにはPythonのpermutationsのような便利な関数は用意されていない。だから、自分でコードを書かなければならない。 もちろん、順列を書き出すコードはインターネットで検索すれば簡単に見つかる。幾人ものレビューによって洗練されたコードもある。既存のア…
これは弥生 Advent Calendar 2021 の7日目の記事です。 qiita.com PosgreSQL の WITH 共通テーブル式(Common Table Expression)は一時的なテーブルを定義するもの。 サブクエリを使って SQL がネストして深くなってしまうような場合に、便利だと思う。 PostgreSQL では WITH 句で CTE を書ける。 www.postgresql.jp こんな感じで、名前をつけた式を別の式から呼ぶことができる。便利。 WITH company_names AS ( SELECT company_name AS name FROM co…
どうも!LSSです!! もう4か月も前になりますか。 【JavaScript】続・自動生成迷路 - Little Strange Software というスクリプトを書いていました。 タイトル通り、自動的に迷路を生成するスクリプトでしたが、生成して表示するだけのものでした。 で、今回はそれに「最短正解ルート」を自動的に割り出し、表示する機能をつけてみました! 自動生成迷路 最短正解ルートの割り出しアルゴリズム コード あとがき 自動生成迷路 幅: 高さ: // ax=xmax || ay=ymax?0:parseInt(mztxt.substr(ax+ay*xmax,1)); mzw=(ax,…
非同期で再帰(UWP) 自分用:メモ: 非同期で再帰(UWP)の挙動が安定しない…。 この辺か??? devlights.hatenablog.com stackoverflow.com 自分でも書いてはみたが... var buf = new BlockingCollection<IStorageItem>(); var copyDirTask = Task.Run<Task>(async () => { await this.CopyFolderAsync(s, d, buf); buf.CompleteAdding(); }); List<AbstractStorage> result1…
こんにちは 今回は、前置審査での拒絶理由通知について考えてみたいと思います。 前置審査をする前提として拒絶査定不服審判と同時に補正をしています。 拒絶査定不服審判と同時の補正であっても、第 17 条の 2 第 3 項から第 6 項まで要件を満たさす必要があり、補正が適法でない場合は補正が認められないわけです。 前置審査では補正が適法でない場合は補正却下する代わり(164条2項)に前置報告(164条3項)となります。 条文を見てみましょう。 四法対照をお持ちのかたはそちらもご参照ください なければe-Gov 法令検索はリンクも付いているのでお勧めです。 e-Gov 法令検索 第百六十四条 審査官…
この記事は、CYBOZU SUMMER BLOG FES '24 (Newcomer Stage) DAY 2の記事です。 初めまして、Webアプリケーションエンジニア職としてサイボウズに24年新卒で入社したFujiです。 唐突ですが、皆さんは、『100万回の「I love you」』という曲をご存知でしょうか? とても素敵な曲ですので、未視聴の方、是非とも下のリンクから1度ご視聴ください!!! さて、この曲のイントロに『「愛してる」の言葉じゃ足りなくらいに君が好き 「愛してる」の言葉を100万回君に送ろう』というフレーズがあります。 Cybozu社の製品であるGaroonちゃんにも、「愛して…
yr-camp.connpass.com 今週もこちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。 再帰と反復 なぜn^3になるのか? メモ化 全体を通した感想 再帰と反復 反復は再帰と比較して、TCOを使うなどスタックフレームを節約することができるし、計算量も減るため、(メモ化などを使わない場合は)高速であるという話を確認していきました。 確認は、実際にコードレベルで書いてみて、(メモ化などを使わない)再帰のほうが処理がどうしても多くなってしまうよね、というのを考えていきました。 再帰(factorial 6)=(* 6 (factorial 5))=(* 6 (*…
メリット UDIM、複数の柔軟な対応(マルチマテリアル(統一)) Meshの名称でマスク制御(Mesh Mask) ボリュームマスク デカール 汚れを簡単に作る(Mesh Mask Builder) 大量のマテリアルアセット デメリット 2Dビューペイント機能が存在しない Mesh UV Shell Mask 選択できるアイランド数について ワイヤーフレームプレビュー Opacityのプレビュー Subsurface Scatteringのプレビュー Mesh Polygon Mask ポリゴンペイントができない。 AnchorPointが「機能」として存在しない。 Mesh Previous…
最近、Goで関数呼び出しを無限に繋げる書き方を気に入っています。文字で書いても伝わらないと思うので実例を挙げると、例えばこういう書き方。 repeat(yield)("しか", 1)("のこ", 3)("こし", 1)("たん", 2) どうやって実現しているのかというと、自身を参照する型を作ればいいだけです。 type Emitter func(s string, n int) Emitter func repeat(yield func(string) bool) Emitter 完全なコード例は以下のGo Playgroundを見てください。 range over funcでしかのこのこ…
今まで3回にわたって、行列サイズがコンパイル時にわかる場合の正方行列乗算の最適化を取り扱ってきました(行列乗算の最適化入門 - よーる、行列乗算の最適化入門(マルチコア編) - よーる、行列乗算の最適化入門(GPGPU編) - よーる)。 行列サイズがコンパイル時にわかる場合は、コンパイラの自動ベクトル化だけで限界に近い性能が出ました。 今回はちゃんとした行列積プログラム、つまり行列サイズがコンパイル時にわからない場合の正方行列乗算の最適化をやっていきます。 配列のオーバーラップを気にしているのか、どうにもコンパイラの自動ベクトル化ではうまくいかなかったので、ちょっとだけアセンブリ言語に手を出…
X/Twitter APIを使用して投稿するアプリを実装している際、 投稿する内容をどのようにバリデーションするか苦慮したため、以下に纏めました。 有効/無効を判定する X/Twitter公式がバリデーション用のライブラリを提供しているため、それを利用します。 github.com対応されていない言語に関しては、有志の方が作成しているライブラリを探してみてください。 私が必要としていたのはPHPのライブラリだったため、以下を利用させていただきました。 github.comPHPでの実装例: <?php $parser = new Twitter\Text\Parser(); $result =…
はじめに 作成したゲームの紹介 概要 スクリーンショット 遊び方 おわりに はじめに さっそくの宣伝ですが 2024/06/22(土) に 【JPPGB】ゲーム作成コンテスト #1 を開催します! イベントはオンサイトとオンラインのハイブリッド開催を行います。 オンサイトで参加される方は、イベント当日以下までお越しください。 AKKODiSコンサルティング株式会社 東京都港区芝浦3丁目4番1号 グランパークタワー3F 現地参加登録まだまだ可能ですのでご都合合う方は是非当日現地にお越しくださいー みんなでエントリーしていただけた方のゲームをプレイしたり、ゲームを作成された方に直接お話を伺ったりす…
今日は m(**nil) のように明示的にキーワード引数を受け付けない宣言をしたメソッドに空 Hash を keyword splat で渡した時の不具合修正などがありました。 [6b6fd16219] David Rodríguez 2024-06-11 16:37:53 UTC bundler の Bundler::CompactIndexClient#info で変数名の typo をしていた不具合を修正。 [1db19a2dbd] Matt Valentine-House 2024-06-11 13:06:51 UTC Variable Width Allocation による slo…
学んだこと WEB開発 フロントエンドビルドツールについて npmコマンド/npxコマンド https://zenn.dev/uniformnext/articles/c68ea2bb6cbe00 npmの役目はプロジェクト内の.js,,tsxのバージョン管理 npxの役割は,パッケージの実行である. データ構造とアルゴリズム 再帰DFSをかなり使えるようになった 再帰関数(DFSに限らず)で意識するのは,ベースケースと例外ケースの存在 ベースケースでは再帰呼び出しを行う 例外ケースでは何もしない 最終的に全ての再帰呼び出しの結果が例外ケースになる必要がある そうでないと無限再帰呼び出し編にな…
学んだこと HTML/CSS/javascript WEBインテント URLからSNSの投稿画面へ遷移.投稿内容が自動入力される機能 【Twitter, Facebook】Web IntentでSNSへのシェア機能を実装する #Twitter - Qiita twitterで使えるアクションをともなうwebリンクのつくりかた · GitHub getAttribute(),setAttribute() JavaScript | 要素の属性値を取得・設定(getAttribute,setAttribute) htmlの要素から属性を取得・追加するための関数.(html側の記法) element.…
学んだこと データ構造とアルゴリズム DFS実装 島数えの問題をDFS(スタックver)で解きたい なぜスタックで実装 pythonの再帰呼び出しは 低速・回数上限あり BFSはキュー,DFSはスタック の統一感が良い 全てのマスをDFSで探索するところまでは実装できたが,島の数を探索するにはもう一工夫必要 farma-11.hatenablog.com 難しい問題にぶつかるとついつい時間を溶かしてしまう.とはいえ,アルゴリズムの問題を解くのはあくまでコーディングテストにおいて問われるデータ構造とアルゴリズムについての知識を固めることなので(競技プログラミングをガチる予定は全くない)なるべく効…
前回の記事で、「プログラミングとの距離」を維持するためにPaiza(Paizaラーニング)というサイトのプログラミングスキルチェックの問題を継続的に解き始めることにした旨書いた。 さらに、この状況がそこそこ続いたことから、この状態を維持するために「来年度末までに『Paizaのプログラミングスキルチェック』に挑戦し続けてAランクを目指す」旨宣言した。 hiroringo.hatenablog.com paiza.jp 当然だが、現状の実力のままAランクの問題が解けるとは考えられない。 なぜなら、真面目に取り組んでいた去年の6月の段階でAランクの問題に歯が立たなかったし、現在の実力が去年の6月より…
概要 この記事では特に断りがない限り $n$ は常に $2$ 冪であるとします。 Karatsuba 法と呼ばれる長さ $n$(つまり次数 $n - 1$ 以下)の多項式同士の積を $O(n ^ { \log _ 2 (3) })$ time で計算するアルゴリズムが知られています。本記事では係数のサイズの $4n - 2$ 倍の一列に並んだメモリと $O(1)$ ワードのみを使用し、再帰関数を使わずに実装する方法をご紹介します。 おすすめの問題 Karatsuba 法でもギリギリ間に合うと思います。 問題 No.754 畳み込みの和 - yukicoder 提出(2,223 ms / 5,0…
ソースを解析する際に、人力でコードを追う方法以外に、 DLL のメタ情報から欲しい情報を抽出出来ないかと調べた所、 ↓のような素敵なライブラリが合ったので試しに使ってみました。 github.com www.nuget.orgまずは、nuget にて dnlib をインストール。 ライブラリ自体は dll への read/write 両方とも出来るようですが、 一先ず、色々と抽出したいので read に絞って実験。 private static IEnumerable<Tuple<MethodDef, IMethodDefOrRef>> GetUsedMethodsAndProperties(…