ゲーム

「連鎖ノ試練」 答え合わせ- エンジニア専用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. レビュー

    僕が戦争映画を見る理由。「FURY」を見た感想

    先日、ブラッド・ピット主演の、第二次世界大戦を題材にした「FURY」と…

  2. レビュー

    紙のメモがエモい。今更ながら普通のメモ帳を買った件

    タイトルの通りで、1ヶ月くらい前に紙のメモ帳を買いました。んで使っ…

  3. レビュー

    最近で一番買ってよかったもの – ジェットウォッシャードルツ

    ジェットウォッシャードルツここ半年くらいの間で一番買っ…

  4. レビュー

    あなたはもうバーチャル・リアリティ(VR)の致命的な欠点を知っているか

    先日、友達がVRデバイスOculus Rift(以下オキュラス)を購入…

  5. コミック

    (親孝行も親不孝も)世のマザコンの皆さんにおすすめしたいと思った漫画

    先日、こんなツイートが僕のタイムラインに流れてきました。「こん…

  6. レビュー

    世界には神も魂もない。初期仏教がじつに科学的なことに驚いたこと。

    最近ぼくは仏教に興味があるということを以前、記事に書きました。…

コメント

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

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

  1. お金

    「心の豊かさ」とは何か
  2. コンピューター

    プログラミングの勉強、上達を目指す人におすすめの方法
  3. レビュー

    パナソニックの食器洗浄機NP-TH1を3ヶ月使用してみての感想
  4. ニュース

    AmazonでFireTVStickを3000円値引きで買った話
  5. スポット

    【写真】武雄「白岩スケートパーク」に行ってきた
PAGE TOP