List of Permutation - text.Baldanders.info
tag:text.Baldanders.info,2020-07-03:/tags
2020-07-03T16:31:48+09:00
帰ってきた「しっぽのさきっちょ」
https://text.baldanders.info/images/avatar.jpg
https://text.baldanders.info/images/avatar.jpg
プリキュアしりとりで遊ぶ【Go言語版】
tag:text.Baldanders.info,2020-07-03:/golang/precure-shiritori/
2020-07-03T07:31:48+00:00
2021-12-04T02:40:05+00:00
しりとりって順列(permutation)のバリエーションなんだね。
Spiegel
https://baldanders.info/profile/
<p>久しぶりに Qiita を巡回してたら面白い記事があった。</p>
<ul>
<li><a href="https://qiita.com/Hokkaidosm/items/5c5fbd5a1535d1fd239f">Q. プリキュア名でしりとりをしたとき、最大で何人登場するか? - Qiita</a></li>
</ul>
<p>上の記事では C# で書いていたが,せっかくなので <a href="https://go.dev/">Go</a> で解いてみよう。</p>
<h2>問題</h2>
<p>今回のお題は以下の通り。</p>
<blockquote>
<p>プリキュア名でしりとりをしたとき、最大で何人登場するか?</p>
</blockquote>
<p>これだけだとアレなので,もう少し詳しく見てみよう。</p>
<h3>しりとりのルール</h3>
<p>しりとり(shiritori)って外来語として通用するんだねぇ。</p>
<p>それはともかく,しりとりの基本的なルールは以下の通りとする。</p>
<ol>
<li>最初の単語は任意</li>
<li>単語の最後の文字(Unicode 符号点単位)を先頭の文字とした単語を繋げていく
<ul>
<li>漢字・記号はそのまま解釈する</li>
<li>先頭・末尾の役物は無視する(役物のみの単語はないという前提)
<ul>
<li>長音(ー)</li>
<li>繰り返し記号(「々」など)</li>
<li>句読点</li>
<li>括弧類</li>
</ul>
</li>
<li>濁点・半濁点は無視する(例:「へ」「べ」「ぺ」は同じとみなす)</li>
<li><ruby><rb>拗音</rb><rp> (</rp><rt>ようおん</rt><rp>) </rp></ruby>および促音の文字は直音文字と同じとみなす(例:ュ→ユ,っ→つ)</li>
</ul>
</li>
<li>各単語(文字列)は1回のみ使用可能(複数回使用は不可)</li>
<li>終了条件は以下の通り
<ul>
<li>単語の最後が「ん」または「ン」で終わった場合</li>
<li>次に繋げる単語が無くなった場合</li>
</ul>
</li>
</ol>
<p>「音」じゃなくて「文字」ベースなのでこんなところだろう。</p>
<p>今回「㍻ (U+337B)」や「㈱ (U+3231)」といった合成文字や半角カナ文字は <a href="https://text.baldanders.info/golang/unicode-normalization/" title="Go 言語と Unicode 正規化">Unicode 正規化</a>の NFKC 変換したもので解釈することにした。
たとえば「㍻」の先頭文字は「平」で末尾文字は「成」とみなす。
また「㈱」では先頭・末尾の役物は無視するので先頭・末尾文字はいずれも「株」となる。</p>
<h3>プリキュア特別ルール</h3>
<p>プリキュアしりとりでは上の基本ルールに加えて以下の2つのルールを追加する。</p>
<ol>
<li>単語として使える語はプリキュア名のみとする</li>
<li>プリキュア名の先頭の「キュア」は無視する</li>
</ol>
<p>先頭の「キュア」を無視するのは「キュア◯◯」って名前が多すぎるため(笑)</p>
<h3>プリキュア名のリスト</h3>
<p>ぶっちゃけ「日アサ」の番組編成が変わってからプリキュアは観なくなったので<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>,特に最近のシリーズは分からないのだが,幸いにも以下のリポジトリにデータがある。</p>
<ul>
<li><a href="https://github.com/sue445/rubicure">sue445/rubicure: All about Japanese battle heroine “Pretty Cure (Precure)”</a></li>
</ul>
<p>ただ,ここにあるデータ構造はちょっと使い辛かったので YAML ファイル中の <code>precure_name</code> 項目がある行だけを拾って一覧を作った。
劇場版オリジナルキャラも併せて,以下の66人でいいはず<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</p>
<blockquote>
<p>キュアアクア, キュアアムール, キュアアンジュ, キュアイーグレット, キュアウィンディ, キュアエコー, キュアエトワール, キュアエース, キュアエール, キュアカスタード, キュアグレース, キュアコスモ, キュアサニー, キュアサンシャイン, キュアショコラ, キュアジェラート, キュアスカーレット, キュアスター, キュアスパークル, キュアセレーネ, キュアソレイユ, キュアソード, キュアダイヤモンド, キュアトゥインクル, キュアドリーム, キュアハッピー, キュアハニー, キュアハート, キュアパイン, キュアパッション, キュアパルフェ, キュアビューティ, キュアビート, キュアピース, キュアピーチ, キュアフェリーチェ, キュアフォンテーヌ, キュアフォーチュン, キュアフローラ, キュアブライト, キュアブラック, キュアブルーム, キュアブロッサム, キュアプリンセス, キュアベリー, キュアホイップ, キュアホワイト, キュアマカロン, キュアマシェリ, キュアマジカル, キュアマリン, キュアマーチ, キュアマーメイド, キュアミューズ, キュアミラクル, キュアミルキー, キュアミント, キュアムーンライト, キュアメロディ, キュアラブリー, キュアリズム, キュアルージュ, キュアレモネード, キュアロゼッタ, シャイニールミナス, ミルキィローズ</p>
</blockquote>
<h3>「順列」の派生としてのしりとり</h3>
<p>コードを考えながら思ったが,しりとりって順列(permutation)のバリエーションなんだね。
順列といえば2年前に</p>
<ul>
<li><a href="https://qiita.com/spiegel-im-spiegel/items/90332789f8a6f98c670d">日能研の問題をGo言語で力づくで解いてみた(2018/11) - Qiita</a></li>
</ul>
<p>という記事を Qiita で書いたが,あれの応用と考えたら後は早かった。
まぁ for 文まわして力ずくで解いてるんだけど(笑)</p>
<h2>解答</h2>
<p>今回用に組んだコードを以下のリポジトリに置いている。</p>
<ul>
<li><a href="https://github.com/spiegel-im-spiegel/precure-shiritori">spiegel-im-spiegel/precure-shiritori: Shiritori (Japanese Word Chain Game) with Precure (Pretty Cure)</a></li>
</ul>
<p>しりとりのルールをできるだけ汎用に書こうとして思ったよりコード量が多くなっちゃたので,中身の解説は割愛する。
速度的な効率は重視してなくて,愚直なだけのコードなので言語的に難しいところはない筈。
強いて言うなら,順列探索の再帰処理で配列のコピーを渡す点がポイントかな。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">shiritori</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">//Remove メソッドは指定した語を抜いた残りのリストのコピーを返す
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">func</span> <span class="p">(</span><span class="nx">ws</span> <span class="o">*</span><span class="nx">Words</span><span class="p">)</span> <span class="nf">Remove</span><span class="p">(</span><span class="nx">word</span> <span class="o">*</span><span class="nx">Word</span><span class="p">)</span> <span class="o">*</span><span class="nx">Words</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="p">!</span><span class="nx">ws</span><span class="p">.</span><span class="nf">In</span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">ws</span><span class="p">.</span><span class="nf">Clone</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line hl"><span class="cl"> <span class="nx">wss</span> <span class="o">:=</span> <span class="nb">make</span><span class="p">([]</span><span class="o">*</span><span class="nx">Word</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">cap</span><span class="p">(</span><span class="nx">ws</span><span class="p">.</span><span class="nx">words</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
</span></span><span class="line hl"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">w</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">ws</span><span class="p">.</span><span class="nx">words</span> <span class="p">{</span>
</span></span><span class="line hl"><span class="cl"> <span class="k">if</span> <span class="p">!</span><span class="nx">w</span><span class="p">.</span><span class="nf">Equal</span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line hl"><span class="cl"> <span class="nx">wss</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">wss</span><span class="p">,</span> <span class="nx">w</span><span class="p">)</span>
</span></span><span class="line hl"><span class="cl"> <span class="p">}</span>
</span></span><span class="line hl"><span class="cl"> <span class="p">}</span>
</span></span><span class="line hl"><span class="cl"> <span class="k">return</span> <span class="nf">NewWords</span><span class="p">(</span><span class="nx">wss</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">Do</span><span class="p">(</span><span class="nx">strs</span> <span class="o">...</span><span class="kt">string</span><span class="p">)</span> <span class="p">[]</span><span class="o">*</span><span class="nx">List</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nx">ws</span> <span class="o">:=</span> <span class="nf">NewWords</span><span class="p">(</span><span class="nf">NewWordSlice</span><span class="p">(</span><span class="nx">strs</span><span class="o">...</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">ws</span><span class="p">.</span><span class="nf">Len</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">[]</span><span class="o">*</span><span class="nx">List</span><span class="p">{}</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="nx">slst</span> <span class="o">:=</span> <span class="p">[]</span><span class="o">*</span><span class="nx">List</span><span class="p">{}</span>
</span></span><span class="line"><span class="cl"> <span class="nx">w</span> <span class="o">:=</span> <span class="nx">ws</span><span class="p">.</span><span class="nf">Begin</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">w</span> <span class="o">==</span> <span class="kc">nil</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">break</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line hl"><span class="cl"> <span class="nx">l</span> <span class="o">:=</span> <span class="nf">do</span><span class="p">(</span><span class="nx">w</span><span class="p">,</span> <span class="nx">ws</span><span class="p">.</span><span class="nf">Remove</span><span class="p">(</span><span class="nx">w</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"> <span class="nx">slst</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">slst</span><span class="p">,</span> <span class="nx">l</span><span class="o">...</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="nx">w</span> <span class="p">=</span> <span class="nx">ws</span><span class="p">.</span><span class="nf">Next</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">slst</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">do</span><span class="p">(</span><span class="nx">first</span> <span class="o">*</span><span class="nx">Word</span><span class="p">,</span> <span class="nx">rest</span> <span class="o">*</span><span class="nx">Words</span><span class="p">)</span> <span class="p">[]</span><span class="o">*</span><span class="nx">List</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">rest</span><span class="p">.</span><span class="nf">Len</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">[]</span><span class="o">*</span><span class="nx">List</span><span class="p">{</span><span class="nf">NewList</span><span class="p">(</span><span class="nx">first</span><span class="p">.</span><span class="nf">String</span><span class="p">())}</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="nx">tail</span> <span class="o">:=</span> <span class="nx">first</span><span class="p">.</span><span class="nf">Tail</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">tail</span> <span class="o">==</span> <span class="sc">'ん'</span> <span class="o">||</span> <span class="nx">tail</span> <span class="o">==</span> <span class="sc">'ン'</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">[]</span><span class="o">*</span><span class="nx">List</span><span class="p">{</span><span class="nf">NewList</span><span class="p">(</span><span class="nx">first</span><span class="p">.</span><span class="nf">String</span><span class="p">())}</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="nx">wlst</span> <span class="o">:=</span> <span class="nx">rest</span><span class="p">.</span><span class="nf">Filter</span><span class="p">(</span><span class="nx">tail</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">wlst</span><span class="p">.</span><span class="nf">Len</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">[]</span><span class="o">*</span><span class="nx">List</span><span class="p">{</span><span class="nf">NewList</span><span class="p">(</span><span class="nx">first</span><span class="p">.</span><span class="nf">String</span><span class="p">())}</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="nx">slst</span> <span class="o">:=</span> <span class="p">[]</span><span class="o">*</span><span class="nx">List</span><span class="p">{}</span>
</span></span><span class="line"><span class="cl"> <span class="nx">next</span> <span class="o">:=</span> <span class="nx">wlst</span><span class="p">.</span><span class="nf">Begin</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">next</span> <span class="o">==</span> <span class="kc">nil</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">break</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line hl"><span class="cl"> <span class="nx">ll</span> <span class="o">:=</span> <span class="nf">do</span><span class="p">(</span><span class="nx">next</span><span class="p">,</span> <span class="nx">rest</span><span class="p">.</span><span class="nf">Remove</span><span class="p">(</span><span class="nx">next</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">l</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">ll</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nx">slst</span> <span class="p">=</span> <span class="nb">append</span><span class="p">(</span><span class="nx">slst</span><span class="p">,</span> <span class="nf">NewList</span><span class="p">(</span><span class="nx">first</span><span class="p">.</span><span class="nf">String</span><span class="p">()).</span><span class="nf">AddList</span><span class="p">(</span><span class="nx">l</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="nx">next</span> <span class="p">=</span> <span class="nx">wlst</span><span class="p">.</span><span class="nf">Next</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">slst</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>詳しくはリポジトリを見てください,ということで(笑)</p>
<p>で,最初のお題の解答は「9人」。
コードの実行結果の詳細は以下の通り。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ go run main.go
</span></span><span class="line"><span class="cl">9 : キュアホイップ, キュアブラック, キュアグレース, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">9 : キュアホイップ, キュアフェリーチェ, キュアエース, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">8 : キュアパルフェ, キュアエース, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">8 : キュアフェリーチェ, キュアエース, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">8 : キュアハッピー, キュアピース, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">8 : キュアホイップ, キュアプリンセス, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">8 : キュアホイップ, キュアブラック, キュアグレース, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">8 : キュアホイップ, キュアフェリーチェ, キュアエース, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">8 : キュアブラック, キュアグレース, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアハッピー, キュアピース, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアプリンセス, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアミューズ, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアフェリーチェ, キュアエース, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアエース, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアホイップ, キュアフローラ, キュアラブリー, キュアリズム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : シャイニールミナス, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアホイップ, キュアプリンセス, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアピース, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : ミルキィローズ, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアパルフェ, キュアエース, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアホイップ, キュアフェリーチェ, キュアエース, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアグレース, キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアハッピー, キュアビューティ, キュアイーグレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアブラック, キュアグレース, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">7 : キュアホイップ, キュアブラック, キュアグレース, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアブラック, キュアグレース, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアショコラ, キュアラブリー, キュアリズム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアビューティ, キュアイーグレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアピース, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアプリンセス, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : シャイニールミナス, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアホイップ, キュアブライト, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアグレース, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアスター, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアロゼッタ, キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアハッピー, キュアピース, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアホイップ, キュアフローラ, キュアラブリー, キュアリズム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">6 : キュアエース, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアホイップ, キュアプリンセス, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアホイップ, キュアブラック, キュアグレース, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアホイップ, キュアフェリーチェ, キュアエース, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアパルフェ, キュアエース, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアメロディ, キュアイーグレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアウィンディ, キュアイーグレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアフェリーチェ, キュアエース, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアミューズ, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアハッピー, キュアビート, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : ミルキィローズ, キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">6 : キュアフローラ, キュアラブリー, キュアリズム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアスカーレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアハッピー, キュアピース, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアホイップ, キュアフェリーチェ, キュアエース, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアミント, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアハッピー, キュアビューティ, キュアイーグレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアピース, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアハート, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアダイヤモンド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアラブリー, キュアリズム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアベリー, キュアリズム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアソード, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアパルフェ, キュアエース, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアホイップ, キュアブラック, キュアグレース, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアブラック, キュアグレース, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアホイップ, キュアブルーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアプリンセス, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアジェラート, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアホイップ, キュアブロッサム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアショコラ, キュアラブリー, キュアリズム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">5 : キュアホイップ, キュアプリンセス, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアビート, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : シャイニールミナス, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアグレース, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアレモネード, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアカスタード, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアエース, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアマシェリ, キュアリズム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアブライト, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアフローラ, キュアラブリー, キュアリズム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">5 : キュアフェリーチェ, キュアエース, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアミューズ, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアイーグレット, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : ミルキィローズ, キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアホワイト, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">5 : キュアマーメイド, キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアハッピー, キュアビート, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアウィンディ, キュアイーグレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアフェリーチェ, キュアエース, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : ミルキィローズ, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアビューティ, キュアイーグレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアマシェリ, キュアリズム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">4 : キュアグレース, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアメロディ, キュアイーグレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアピース, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアエース, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアブラック, キュアグレース, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアブルーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアホイップ, キュアプリンセス, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアブロッサム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアホイップ, キュアブロッサム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">4 : キュアプリンセス, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアホイップ, キュアブルーム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">4 : キュアパルフェ, キュアエース, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアスター, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアロゼッタ, キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアミューズ, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアベリー, キュアリズム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">4 : キュアホイップ, キュアフェリーチェ, キュアエコー, キュアコスモ
</span></span><span class="line"><span class="cl">4 : キュアホイップ, キュアフェリーチェ, キュアエトワール, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアラブリー, キュアリズム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">4 : キュアリズム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアホイップ, キュアブライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアドリーム, キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアハッピー, キュアピース, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">4 : キュアホイップ, キュアフェリーチェ, キュアエール, キュアルージュ
</span></span><span class="line"><span class="cl">4 : シャイニールミナス, キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアミント, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアアクア, キュアアムール, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアリズム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">3 : キュアブライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアレモネード, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアダイヤモンド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアソード, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアパルフェ, キュアエコー, キュアコスモ
</span></span><span class="line"><span class="cl">3 : キュアプリンセス, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアパルフェ, キュアエトワール, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアスカーレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアパルフェ, キュアエール, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアジェラート, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアブロッサム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">3 : キュアミューズ, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアカスタード, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : ミルキィローズ, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアエース, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアブルーム, キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">3 : キュアホワイト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアビート, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアハート, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : シャイニールミナス, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアフェリーチェ, キュアエコー, キュアコスモ
</span></span><span class="line"><span class="cl">3 : キュアフェリーチェ, キュアエトワール, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアフェリーチェ, キュアエール, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアイーグレット, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアマーメイド, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアピース, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアグレース, キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">3 : キュアムーンライト, キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">2 : キュアハッピー, キュアピーチ
</span></span><span class="line"><span class="cl">2 : キュアマジカル, キュアルージュ
</span></span><span class="line"><span class="cl">2 : キュアアクア, キュアアンジュ
</span></span><span class="line"><span class="cl">2 : キュアミラクル, キュアルージュ
</span></span><span class="line"><span class="cl">2 : キュアアムール, キュアルージュ
</span></span><span class="line"><span class="cl">2 : キュアホイップ, キュアフォーチュン
</span></span><span class="line"><span class="cl">2 : キュアホイップ, キュアフォンテーヌ
</span></span><span class="line"><span class="cl">2 : キュアエコー, キュアコスモ
</span></span><span class="line"><span class="cl">2 : キュアムーンライト, キュアドリーム
</span></span><span class="line"><span class="cl">2 : キュアエトワール, キュアルージュ
</span></span><span class="line"><span class="cl">2 : キュアエール, キュアルージュ
</span></span><span class="line"><span class="cl">2 : キュアスパークル, キュアルージュ
</span></span><span class="line"><span class="cl">2 : キュアトゥインクル, キュアルージュ
</span></span><span class="line"><span class="cl">1 : キュアマリン
</span></span><span class="line"><span class="cl">1 : キュアハニー
</span></span><span class="line"><span class="cl">1 : キュアルージュ
</span></span><span class="line"><span class="cl">1 : キュアパイン
</span></span><span class="line"><span class="cl">1 : キュアソレイユ
</span></span><span class="line"><span class="cl">1 : キュアセレーネ
</span></span><span class="line"><span class="cl">1 : キュアパッション
</span></span><span class="line"><span class="cl">1 : キュアサンシャイン
</span></span><span class="line"><span class="cl">1 : キュアサニー
</span></span><span class="line"><span class="cl">1 : キュアコスモ
</span></span><span class="line"><span class="cl">1 : キュアピーチ
</span></span><span class="line"><span class="cl">1 : キュアフォンテーヌ
</span></span><span class="line"><span class="cl">1 : キュアフォーチュン
</span></span><span class="line"><span class="cl">1 : キュアアンジュ
</span></span><span class="line"><span class="cl">1 : キュアミルキー
</span></span><span class="line"><span class="cl">1 : キュアマカロン
</span></span><span class="line"><span class="cl">1 : キュアマーチ
</span></span></code></pre></div><p>いやぁ,キュアホイップから始まるしりとり最強! そしてキュアルージュで終わるパターン大杉(笑)</p>
<p>でも最初に挙げた記事としりとりの内容がだいぶ違うんだよなぁ。
違う理由は何となく想像がつくけど… まぁ,いいか。</p>
<h2>今後の課題</h2>
<p>いや,ちゃんと YAML 勉強しようかと思って。</p>
<p><a href="https://gopkg.in/yaml.v3">gopkg.in/yaml.v3</a> パッケージを使えば YAML のアンカーとかも解釈できるようなので,調べてみたい。</p>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/B099928SJD?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/416Stewy0NS._SL160_.jpg" width="123" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/B099928SJD?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">プログラミング言語Go</a></dt>
<dd>アラン・ドノバン (著), ブライアン・カーニハン (著), 柴田芳樹 (著)</dd>
<dd>丸善出版 2016-06-20 (Release 2021-07-13)</dd>
<dd>Kindle版</dd>
<dd>B099928SJD (ASIN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">Kindle 版出た! 一部内容が古びてしまったが,この本は Go 言語の教科書と言ってもいいだろう。感想は<a href="https://text.baldanders.info/remark/2016/07/go-programming-language/" >こちら</a>。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2021-05-22">2021-05-22</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- プログラミング言語Go -->
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>なんで「題名のない音楽会」を土曜日に移動したんだ。ぶつぶつぶつ。まぁ実家では私にテレビ・チャンネル権はないので,そもそもテレビを観ないのだが。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p>今回は 2020-03-28 コミット時のものを使っている。 <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>