ゲーム

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

    福岡の写真とペンの収納できるリングノートがよかった話

    本日は彼女と彼女の妹二人と弟一人の計5人で福岡に買い物に行ってきました…

  2. スポット

    江戸時代の豪農の家が想像以上に立派だった。諫早ゆうゆうランド

    先日、彼女と彼女の妹と一緒にぶらぶらしている内に、「諫早ゆうゆうランド…

  3. レビュー

    これからの時期の汗臭い人々に朗報。一本あれば3年持つコスパ最強の防臭用品

    先日、福岡へ向かっている途中の事でした。その日は彼女と…

  4. レビュー

    気持ちが落ち込んだ時に僕が考えている事。「反応しない練習」を読んで。

    生きてたら色々ありますので、なんだか暗い気持ちになってしまうことも…

  5. お店紹介

    Evernote使っている人は絶対買ったほうがいいiPhoneアプリ「Todayee」

    周りを見渡してみると、Evernoteを使っていない人の方が多い感じな…

  6. Linux

    bashからzshに変更しました。僕のたまごっち的な仕事道具

    GUI一般的なパソコンを使う人々はGUI(グラフィカルユーザーイン…

コメント

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

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

  1. 日記

    32歳になりました
  2. お金

    マイホームとリスクマネジメントについて考えてみた
  3. 日記

    「かわいい」って最強だと思う
  4. お店紹介

    【写真】マイナス10度のフラワーアイスカフェに行ってきましたinハウステンボス
  5. レビュー

    許すまじ宇宙ゴミ。アニメのプラネテスが面白すぎて紹介したい
PAGE TOP