ゲーム

「連鎖ノ試練」 答え合わせ- エンジニア専用RPG CODE QUESTで使ったコード

ツイッターを見ていたら面白そうなツイートが流れてきた。

CODE QUEST 〜伝説ノエンジニア、求ム〜|GeekOut : https://geek-out.jp/cp/code-quest/

ちょっくらやってみっかと挑戦してみたところ、1個めと2個めの問題はすぐにクリア出来たのだけど、3個めの問題はプログラムを組まないとクリアできなさそうな問題だった。

問題の内容は

"イアラ","ウェイト","オメガロ","ガルヒ","ガングリオンズ","クリオ","ジェノバ","スノウガ","ズビズバ","スペシウム","タグアズ","ドドンパ","トルネ","ネメシス","バイナリル","ハザード","パリピファイア","バルース","ヒラケゴマ","フェイク","プリズマ","ホルーガ","マッハ","マホマホ","ムート","ラリホフ","ランス","ループ","ロールウェイブ","ワロス"

という30個の魔法をシリトリで繋げて20個以上連鎖させるというもの。

最初は魔法の重複があっても良いと思っていたので、そういうコードを書いてたけど、実際に答えを入力してみると重複は許されないらしい。

これはたしかに、人間がやると大変そうな良問題。

ということでコンピューターの力を使って強引に、組合せをランダムにシャッフルしながら多数の試行を重ねて解くという、いわゆるブルートフォースアタック的なやり方で解決した。

なるべくわかりやすいように丁寧にコメント書いてみました。

やりかたは色々あると思うんですが、この場合再帰を使うのが一番やりやすいかなと思いました。

自力でクリアしたい人はネタバレになってしまいますので気をつけて…。


#! /usr/bin/env ruby

@spells = ["イアラ","ウェイト","オメガロ","ガルヒ","ガングリオンズ","クリオ","ジェノバ","スノウガ","ズビズバ","スペシウム","タグアズ","ドドンパ","トルネ","ネメシス","バイナリル","ハザード","パリピファイア","バルース","ヒラケゴマ","フェイク","プリズマ","ホルーガ","マッハ","マホマホ","ムート","ラリホフ","ランス","ループ","ロールウェイブ","ワロス"]
@result = ""
@count = 0

def get_spell(arr,key)
  #文字の最初と最後がマッチするスペルの検索
  r = arr.select{|s| s[0]==key[-1]}

  #接続単語発見時
  if(r.length > 0)then
    #発見した要素を結果に追加
    @count += 1
    @result += r[0] + " "

    #発見した要素を消す
    arr.delete(r[0])
    #再帰
    get_spell(arr,r[0])

  #接続単語が発見出来なかった時
  else
    #20個以上の単語接続が出来ていたら
    if(@count >= 20)then
      #終了処理へ
      return true

      #20個未満の単語接続ならやり直し
    else
      #ダメだった結果表示
      puts @count
      puts @result

      #イニシャライズ
      @count = 0
      @result = ""
    end
  end

end

while(1)

  #接続単語を見つける度にリストの単語を消化用の配列を用意
  #毎回同じ結果に鳴らないように、初期化の度に配列の要素をシャッフルする
  dic = @spells.clone.shuffle

  buf = dic[0]
  #先頭の単語を結果に入れる
  @result += buf + " "
  dic.delete(buf)
  #接続単語数のカウンターをインクリメント
  @count +=1

  #再帰処理
  #20個以上の単語接続が出来ていたらループ脱出
  if(get_spell(dic,buf) == true)then
    break
  end

end

#最終結果表示
puts "*****clear*****"
puts @count
puts @result

実行結果は以下の通り。

どうやら連鎖は20個がマックスじゃないかな〜。

 

この記事が気に入ったらいいね!しよう
🍀

更新情報をお届けします

穴あきのパーカーと打ち捨てられたエビたちの尻尾前のページ

肩すかしブレードランナー2049と”新米野郎!”の呼び声に秘められた愛について次のページ

関連記事

  1. Mac

    知っとかないと損しちゃう。今、パソコンは中古で買うべき3つの理由。

    表題のとおり、本日ノートパソコンを新しく購入しました。これまで使っ…

  2. レビュー

    この価格帯でこの音質はすごいかも。Jayfi JA40を使ってみた感想

    今回の記事は、Jayfiさんのご提供でお送りします。というのも…

  3. レビュー

    無意味で、全てであるもの。映画「セッション」を見た感想。

    先日、「セッション」という映画を見ました。※多少中身に触れるの…

  4. レビュー

    本を集中して読むために使えるテクニック

    最近気になる本はすぐに買ってしまうために、部屋に未読の本が積みあがる、…

  5. レビュー

    矛盾を飲み込めてからが大人

    理屈で言えば生きる意味なんてないってわかりきってるのに死にたくないし、…

  6. コンピューター

    稀代の妙問「モンティ・ホール問題」をコンピューターでシミュレートしてみた

    知らない人だとほぼ全員が首をかしげる、人の直感と事実のズレまく…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

  1. イベント

    二回目のもくもく会を終えての感想と、GOPROでの撮影テスト
  2. キャンプ

    スーパー低コスト。最低限必要なキャンプ道具について
  3. ウェブサービス

    Amazonプライムに入っちゃった。プライムビデオ、PS3でも見れるよね。
  4. お店紹介

    豊かなるアシカの表情筋 – マクセルアクアパーク品川の旅
  5. 日記

    Mac使いでブログを書くなら絶対損しないからMarsEditを買ったほうがいいよ…
PAGE TOP