平成変換(『CodeIQの問題・パズルを考えよう!』提案その1)
『CodeIQの問題・パズルを考えよう!(by CodeIQ×はてな)』に応募してみます。
平成変換
平成変換とは?
平成変換とは、田村三郎著の「数学パズルランド—身近な素材でパズる」(isbn:4061329049、講談社ブルーバックス、絶版)で紹介されている数字パズルです。
著者の田村氏が京都府の上山秀幸氏から平成 3 年の年賀状でもらった問題として、以下のような文章が紹介されています:
下のような規則で自然数Mから別の自然数Nを生成する操作を《平成変換》と呼ぶことにする。
『自然数Mの連続した各位の数が、自然数Nの連続した各位の数の平方に成るか、または、平方根に成る。』
(例)[5]63→(256)3→(16)[3]→(49)→7 (4 step)
[問題]
(西暦)1991(年)を(平成)3(年)に《平成変換》せよ!
(Webで紹介するにあたって傍点や傍線を別の表現に置き換えました)
この問題の解答は、田村氏によって同著書内に載っています。と言っても 3→→1991 の逆向きの変換手順が載っているのですが、すぐに分かるように平成変換は可逆変換なので、どちらでも同じことです。一応、1991→→3 に向きを直した解答例を以下に示します。
19(9)1→19[31]→[19](9)61→(36)1(36)1→6(16)1→(64)1→(81)→(9)→3 (8 step)
提案する問題
これを踏まえて、こんな問題を考えてみました。
【パズル】平成変換
■平成変換とは?
西暦年を平成年に変換する数字パズルです。
以下の規則に従って、整数(>0)を別の整数(>0)に変換していきます。
『前の数の連続した各位の数が、次の数の連続した各位の数の平方に成るか、または、平方根に成る。』
(例:(西暦)1991(年)→→(平成)3(年)の場合)19(9)1->19[31]->[19](9)61->(36)1(36)1->6(16)1->(64)1->(81)->(9)->3
※このように、「平方に成る」変換部分を「[ ]」で括り、「平方根に成る」変換部分を「( )」で括ることにします。前の数と次の数は「->」でつなぎます。「->」の個数がステップ数となります。またこの例のように 1 ステップ内に 2 つ以上の変換が混在してもOKです。
■問題
今年(2013→→25)…は、残念ながら平成変換不可能(ヒント:5 は何乗しても下 1 桁が 5 のまま)なので、来年でいきましょう。
(西暦)2014(年)を(平成)26(年)に《平成変換》してください!
できる限りステップ数の短い解答を高評価とします!
■注意事項
・「[ ]」や「( )」のネスト(入れ子)は禁止です。
例:[9(9)]←×
・「[」や「(」の直後に「0」が来るのも禁止とします。
例:2(01)4←×
・「[0]」「[1]」「(0)」「(1)」は、変換前後で結果が変わらないのでこれも禁止にしておきます。
■解答方法
answer.txt
サンプル解答用ファイルにならって、1 行目に平成変換の解答を書き、アップロードしてください。
answer.txt:
19(9)1->19[31]->[19](9)61->(36)1(36)1->6(16)1->(64)1->(81)->(9)->3
■注意事項
・1 行目に、2014 を 26 に変換する平成変換の解答を書いてください。
ただし、「[ ]」は括った部分を平方(2 乗)する変換、「( )」は平方根を取る変換を表し、
「->」は前の数と次の数の区切りを表します。
・1 行目に、数字と「[」「]」「(」「)」「-」「>」と改行以外の文字を書いた解答は評価 1(最低点)になります。
・1 行目は、「2014」に「[」「]」「(」「)」のいずれかを組み合わせた文字列から始まり、必ず「26」で
終わるようにしてください。これに従っていないものは評価 1(最低点)になります。
・変換結果が正しくない場合も評価 1(最低点)になります。
・以下の禁止事項に該当するものも評価 1(最低点)になります。
・「[ ]」や「( )」のネスト(入れ子)は禁止です。
例:[9(9)]←×
・平方数でない数を「()」で平方根変換するのも禁止です。
例:7(18)8←×
・「[」や「(」の直後に「0」が来るのも禁止とします。
例:2(01)4←×
・「[0]」「[1]」「(0)」「(1)」は、変換前後で結果が変わらないのでこれも禁止にしておきます。
・採点対象は answer.txt の 1 行目だけです。2 行目以降には自由にお書きください。
例えば、自分が解答に至るまでに考えたことや作ったプログラム(言語不問)などを書いてくださってもかまいません。
もちろん、2 行目以降には何も書かなくても構いません。
こんなんでどうでしょう?
因みに私も、解答例は 1 つ見付けてはいますが、それが最短解かどうかは未確認です。てかきっともう少し短い解があるような気がしてます。
【2013/08/08 12:45 Twitterでの指摘その他を反映して微修正】
【2013/08/09 23:17 平成変換チェックスクリプトを組んでみました。今日のブログ記事参照】