コード思考:ホバーブロックを使って回文を作る
要約
本記事では、エシック、ヘッジ、オクタヴィアが直面した問題について説明します。彼らは、オクタヴィアのホバーブロックを使って渓谷を渡り、強力なアーティファクトがある塔に到達する必要があります。本記事では、文字のスタックから回文を作成する問題をより効率的に解決する方法について説明します。
目次
- 問題
- 単純な解決策
- より効率的なアプローチ
- 冒険を続ける
問題
エシック、ヘッジ、オクタヴィアは、強力なアーティファクトがある塔に到達するために、渓谷を渡る必要があります。ただし、ヘッジの燃料計は空になっているため、オクタヴィアのホバーブロックを使用して橋を建設する必要があります。ホバーブロックは、回文的な並び順で配置された場合にのみ安定した橋を形成できます。回文を形成できない場合、橋は崩壊し、その上にいる人は渓谷に落ちてしまいます。
単純な解決策
この問題の単純な解決策は、すべての可能なブロックの配置を試し、回文を形成するかどうかを確認することです。しかし、ブロックの数が増えると、可能な配置の数が指数関数的に増加するため、膨大な時間がかかります。
より効率的なアプローチ
エシック、ヘッジ、オクタヴィアは、既存の回文を分析し、ほとんどの文字が偶数回出現し、最大で1つの文字だけが1回だけ出現することに気づきました。したがって、最大で1つの文字だけが奇数回出現し、残りは偶数回出現する必要があると結論付けました。ヘッジは、文字を辞書に整理し、奇数文字の数を数えることができます。奇数文字が2つ未満の場合、スタックを回文にすることができます。このアプローチは、単純な解決策よりもはるかに高速であり、階乗時間ではなく線形時間がかかります。ヘッジは、各山を個別にアプローチし、適切な山を見つけたら停止するようにループを書くことができます。
冒険を続ける
ヘッジのスピードが速くても、すべての山を通過するにはまだ時間がかかります。本記事では、『Think Like a Code』のエピソード7で冒険を続けるか、エピソード1からやり直して購読することを提案しています。