<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Algorithms on Lin's Blog</title><link>https://coder.tw/ja/tags/algorithms/</link><description>Recent content in Algorithms on Lin's Blog</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Sun, 05 Jun 2011 01:00:07 +0000</lastBuildDate><atom:link href="https://coder.tw/ja/tags/algorithms/index.xml" rel="self" type="application/rss+xml"/><item><title>シャッフルアルゴリズム（交換法）</title><link>https://coder.tw/ja/posts/shuffle-algorithm-swap-method/</link><pubDate>Sun, 05 Jun 2011 01:00:07 +0000</pubDate><guid>https://coder.tw/ja/posts/shuffle-algorithm-swap-method/</guid><description>&lt;p&gt;&lt;a href="https://pub-6c026d2742d14927bfa2d850c31eac91.r2.dev/wp-content/uploads/2011/06/2011-06-05_005920.jpg"&gt;&lt;img class="size-large wp-image-534 aligncenter" title="2011-06-05_005920" src="https://pub-6c026d2742d14927bfa2d850c31eac91.r2.dev/wp-content/uploads/2011/06/2011-06-05_005920-540x352.jpg" alt="" width="540" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;シャッフルアルゴリズムは、重複しない乱数を生成できるアルゴリズムの一つです。たとえば、10 個の乱数を生成し、そのすべてが「重複しない」必要があるとします。多くの人は、まず rand 関数で乱数を 1 つ取得して配列に格納し、配列にすでにある数字と比較する方法を思いつくと思います。この方法は簡単ですが、性能がとても悪くなります。ここで紹介するシャッフルアルゴリズムは、性能の面でその方法とは天と地ほどの差があります。シャッフルアルゴリズムの原理は実はとても単純で、まず配列に数字を入れ、その後に数字を打ち散らす（シャッフルする）というものです。&lt;/p&gt;</description></item><item><title>【C++】数字の反転・文字列の反転（応用：型変換、文字列処理、ループ）</title><link>https://coder.tw/ja/posts/c-reverse-number-and-string/</link><pubDate>Sun, 06 Mar 2011 11:18:22 +0000</pubDate><guid>https://coder.tw/ja/posts/c-reverse-number-and-string/</guid><description>&lt;p&gt;&lt;a href="https://pub-6c026d2742d14927bfa2d850c31eac91.r2.dev/wp-content/uploads/2011/03/2011-03-06_111510.jpg"&gt;&lt;img class="size-large wp-image-342 aligncenter" title="2011-03-06_111510" src="https://pub-6c026d2742d14927bfa2d850c31eac91.r2.dev/wp-content/uploads/2011/03/2011-03-06_111510-540x382.jpg" alt="" width="540" height="382" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これはかなり簡単な問題で、数字や文字列を反転させるだけです。たとえば「linroex」と入力すると「xeornil」が、123 と入力すると 321 が出力されます。解き方は難しくありません。C++ では文字列を配列のようにアクセスできる特徴を利用して、入力文字列の長さをループの終了値に設定します。ループを 1 回まわすたびに、文字列 X の最後の文字を文字列 Y の先頭に移します。ループが終わったとき、反転が完了しています。&lt;/p&gt;
&lt;p&gt;</description></item><item><title>【VB】【C++】n!（階乗）の計算</title><link>https://coder.tw/ja/posts/vb-c-factorial-n-2/</link><pubDate>Wed, 05 Jan 2011 05:58:10 +0000</pubDate><guid>https://coder.tw/ja/posts/vb-c-factorial-n-2/</guid><description>&lt;p&gt;&lt;a href="https://pub-6c026d2742d14927bfa2d850c31eac91.r2.dev/wp-content/uploads/2011/01/2011-01-05_054100.jpg"&gt;&lt;img class="alignnone size-large wp-image-4369" title="2011-01-05_054100" src="https://pub-6c026d2742d14927bfa2d850c31eac91.r2.dev/wp-content/uploads/2011/01/2011-01-05_054100-520x253.jpg" alt="" width="520" height="253" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;n の階乗を計算するのは、とても簡単なことです。このプログラムを書いたのは、順列・組み合わせのためでした。答えがおよそどれくらいの数になるのかを知りたかったので、階乗の値を求める n! の関数を書きました。階乗とは 1&lt;em&gt;2&lt;/em&gt;3&amp;hellip;..&lt;em&gt;n のことです。順列では、並べるものが5つあれば、結果は最大でも 5&lt;/em&gt;4&lt;em&gt;3&lt;/em&gt;2*1 の値、つまり最大120通りの答えになります。&lt;/p&gt;
&lt;p&gt;以下では n! を Function として作成しました。VB 版と C++ 版があります。ループを学び始めたばかりの人は、この関数でループの使い方を練習できます。また、integer では値が収まらないかもしれないと心配したため、戻り値は string で返すようにしました。この Function を使うときは、戻り値を先に数値型に変換する必要があります。&lt;/p&gt;
&lt;h2&gt;</description></item></channel></rss>