関数などのルーチンが自分自身を呼び出して実行すること。
ある種の複雑な問題を解くコードをシンプルに記述できる場合があるが、再帰による入れ子の数に応じて占有するメモリが増加する上、実行速度も効率的とは言えず、非再帰的に記述できるならそうすべきである。 再帰によって簡潔に記述できる処理の例としては「ハノイの塔」と呼ばれるゲームの解法が有名。
水色なのにCでWA出たのでだめです A - Difference Max を大きくするとの値も大きくなる。逆に、を大きくするとの値は小さくなる。なので、の値を最大化する場合、は最大に、は最小にすればよい。つまりが答え。 最大化するときの基礎的な考えが問われる良問。計算量は、。 B - Round Down C++を使ってる前提で話すと、なんてデカい数は扱えない。文字列で受け取れば、「小数点以下を切り捨て」したいので、文字列の先頭からピリオドが登場する手前までを切り取って出力すればよいことがわかる。先頭から1文字ずつピリオドかどうか判定しながらちまちま出力すればよい。計算量は、。 C - Dou…
ks2m - AtCoder33歳から競プロを始めた35歳業プロerのks2mです。 2021/2/20にAtCoderで黄色になったので、一度くらいはよくある色変記事を書いてみようと思いました。 水色や青になった時に書かなかった分、長くなります。遅筆な上、最近時間がなく、黄色になってからこれを書き終えるまで2週間も経ってしまいました。 AtCoderを始めるまで 高校まで 大学 社会人 AtCoderを始める前からできたor知っていたこと 灰~緑色(2019年1月~4月) 水色になる頃までに習得orライブラリ整備したもの 水色(2019年5月~10月) 青色になる頃までに習得orライブラリ整…
Top→Discord Botの作り方 - 1/(1+e^(-ax)) prev→Discord Botでファイル構造を送信する - 1/(1+e^(-ax)) next→未定 今回が最後のつもりでしたが思ってたよりもやることが残っていたので手っ取り早くやります。 フォルダを指定して再生する botのステータスに曲名を表示する、ループ再生を可能にする フォルダの表示をembedの文字数上限に合わせる 音楽を制御する 現在再生中の曲の詳細情報(ファイルの位置)を表示する 一定時間何もしないとbotが勝手にボイスチャンネルから落ちる フォルダを指定して再生する 次の項目と絡んでいるのでまとめてやり…
Top→Discord Botの作り方 - 1/(1+e^(-ax)) prev→リストを埋め込み形式で送信する - 1/(1+e^(-ax)) next→Discord Botで音楽再生用Botを作る(完結編) - 1/(1+e^(-ax)) ファイル構造をリストで取得した後に、それを前回作ったsend_list関数で送信するようにします。 ファイル構造を取得するmake_filetree関数は次のようになります。 import pathlib def make_filetree(path, layer=0, is_last=False, nest = -1): if (nest == 0)…
Top→Discord Botの作り方 - 1/(1+e^(-ax)) prev→特定のフォルダにあるファイルの一覧を作成する - 1/(1+e^(-ax)) next→Discord Botでファイル構造を送信する - 1/(1+e^(-ax))bgmの入ったファイル構造や、再生キューの状態を送信するために、リストを簡単に送信する関数を作ります。 リストをそのまま送るのは見づらいため、まずはリストを文字列に変換する関数を作ります。 ↓埋め込み(Embed)はこんな感じのやつです。↓ 基本的には要素ごとに改行で区切りますが、リストの中にリストがある場合は複数の区切り文字を設定するようにします。…
さて、前回は Swift の配列における典型的な操作(filter / map / reduce)について、Haskell の場合にどのように書けるのか見てきました。 今回は、リストの正体と再帰について見ていきます。 前回の訂正 リストの実体 リストを定義する Haskell のリストの実体 再帰的な関数 リストの再帰処理 リストのパターンマッチ 再帰的な型・関数が重要な理由 再帰的な考え方に慣れる length filter 練習問題 まとめ あとがき 前回の訂正 前回の記事で 1 add 2 という書き方を「セクション記法」と説明していましたが、 正しくは (+1) のように演算子を部分適…
PythonのFlaskとJavaScriptを使って、Android端末の傾きに応じてブラウザ上でボールを動かすプログラムを試します。メモ。 動作中のキャプチャ画像 傾けるとボールが動きます。 JavaScriptってどう書くの? JavaScriptはどうやって動かすの? PythonのWebアプリでJavaScriptが動くんじゃない? JavaScriptで端末の傾きセンサー値が取得できるの? というサッパリな状況で作っております。htmlとJavaScriptは写経。リンクは最後に貼っています。 目次 目次 1. 実行環境 1.1 AndroidにTermuxとPythonが入ってな…
アルゴリズムとデータ構造の学習 この記事は以下の本で学んだ内容を自分なりにまとめたものです。 bookclub.kodansha.co.jp 前回に引き続き、今回は全探索・再帰・分割統治法についてまとめていきたいと思います。 全探索 全探索とは、解きたい問題に対して、考えられる可能性を全て調べ上げることによって解決する手法です。 線形探索法 線形探索法とは全探索の一種で、一つひとつの要素を順に調べていく手法です。例として、ある数列の中から特定の要素が含まれているかを判定する問題に対して、全ての要素を順番に確認していくプログラム等が挙げられます。このように1重のfor文によるアルゴリズムの計算量…
目次 目次 とある日 RECURSIVEとは WITH(共通テーブル式) RECURSIVE(再帰共通テーブル式) 実践 テーブル定義 再帰共通テーブル SQLエラー [3636] 発生 比較IDミス SQL修正 〆 参考記事 とある日 RECURSIVEを使ってみたかった。 ただそれだけの理由。 RECURSIVEとは RECURSIVEとはを知る前に、WITH句について知る必要があります。 このWITH句は便利なので多用してます。 WITH(共通テーブル式) 共通テーブル式(CTE)は、単一のステートメントのスコープ内に存在し、後でそのステートメント内で、場合によっては複数回参照できる、名…
IndexOutOfBoundsException=配列や文字列、コレクションの範囲外であることを表す例外 ←下記二つのスーパークラス ArrayIndexOutOfBoundsException=配列の要素の外のアクセスを表す例外 StringIndexOutOfBoundsException=文字列の範囲外を表す例外 NullpPointerException=nullに対してメソッドを呼び出すコードを記述した場合に発生する例外 IllgalArgumentException=不正な引数を渡した場合に発生する例外(JVMではなくプログラムが任意にスローする) IllgalStateExce…
Japan.pm 2021に参加して、2日間Perlの勉強をしていた。 オフラインの勉強会では、HUBや和民などを巡って参加者と深夜まで喋り続けるのが楽しみだったので、オンラインになってから、交流部分が減っていて寂しい思いをしていた。 今回は、交流会としてDiscordで好きなチャンネルで会話するスタイルだったので、型チャンネルで型チェックの話ができて嬉しかった。いきなり知らない人と型の話をすると、型好きじゃない人かもしれないし、会話成功率は非常に低い。ところが、型チャンネルがあれば、開口一番、型の話ができてたいへん便利だった。 Perlでは実行時に型のバリデーションするのが一般的で、再帰呼び…
コーディングを支える技術――成り立ちから学ぶプログラミング作法 WEB+DB PRESS plus作者:西尾 泰和発売日: 2018/11/14メディア: Kindle版 よく初心者向けの定番書籍として『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)』の名前が上がるけど、『コーディングを支える技術』もなるべく早い時期に読むことをお勧めする1冊だと思う。 この本の冒頭で、技術の学び方には、以下の3つがあると説明している。 比較から学ぶ 歴史から学ぶ 作ることで学ぶ 「作ることで学ぶ」系の本も非常に有効だけど、この本は筆者は「比…
今日は Ractor.receive でのブロックに割り込みが効かない不具合の修正などがありました。 [739f9297c5] David CARLIER 2021-02-02 13:05:19 UTC addr2line.c の NetBSD でのビルド時に実行している実行形式ファイルのパスを procfs から得る実装の対応を追加しています。読むファイルパスは Linux とは異なっていて "/proc/curproc/exe" のようです。 https://github.com/ruby/ruby/pull/4079 [b0fb208218] Nobuhiro IMAI 2020-03-…
日曜日。晴。 プログラミングの再帰呼び出しの夢を見る。わけがわからない(笑)。記号の解体は記号のシンプルさを齎す。それはともすれば一種の貧しさに見られるであろうが、そのように見る人間は、所詮世界という書物を直接読むことができていない。むしろそちらの方が問題なのである。記号のシンプルさは得て然るべきなのだ。#午前中、甥っ子の勉強を見る。 昼食は甥っ子と博多ラーメン「まっしぐら」にて。 午後もお勉強。この三日間で高校物理全範囲をざっと見直したな。しんどかった。これまで一年半甥っ子の勉強を見てきたが、今日でおしまい。最初はひどい状態だったけれど、随分頑張って勉強できるようになった。不思議とウチでは素…
こんにちは。福岡研究所の岩本(@odiak_)です。 みなさん、Kotlinのコルーチンを使っていますか? 私は、最近久しぶりにAndroidのコードを触る機会があり(3年ぶりくらいでしょうか)、以前から存在は知っていたものの詳しく知らなかったコルーチンを少し使ってみました。まずドキュメントを読んでみたのですが、よくデザインされているなと感じました。今回は使っていませんが、ChannelやFlowなども良さそうです。 この記事では、Kotlinのコルーチンを支える言語機能の1つである、suspend修飾子付き関数の動きをバイトコードから読み解いていきます。 対象読者としては、KotlinをAn…