ゲーム

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

    もっと早く買えばよかった。お掃除ロボットの素晴らしさに感動した

    Amazon Unlimitedで購読した雑誌にロボット掃除機について…

  2. ゲーム

    ずっとやってたい。最近マイブームの面白ボードゲーム「カタン」

    ちょっと前に人狼ゲームにハマった。https://giraffeo…

  3. お金

    コンテンツ制作に携わる人々のブルース。次回のもくもく会で話したいコト

    一ヶ月の早さを感じております。次回のもくもく会についてです。…

  4. コンピューター

    写真や画像を一括でリサイズできるrubyプログラミング

    プログラミングを使って出来る事プログラム、プログラミングという…

  5. ウェブサービス

    ウェブサービス「Pocket」がやっぱり便利な件について

    みなさんPocketというウェブサービスをご存知ですか。このブログで…

  6. レビュー

    マクロ撮影にも良く、軽くて強い!ポータブル三脚 Rangers RA010を使ってみた感想

    自転車で移動しながら街の様子や夕日を撮影するという事をやってみたんです…

コメント

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

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

  1. スポーツ

    ケアハウス和楽園にてYosakoiはーとらんどの演舞を撮影してきました。
  2. Mac

    ローカルに秘密情報を置かないという選択 – 1Password CL…
  3. 日記

    幸せになる事をやめた時、幸せは始まる。
  4. レビュー

    ネットワークセキュリティの仕組みを楽しく学べる「王様達のヴァイキング」
  5. スポット

    運について考えてみた。それと、ポートホールンの写真。
PAGE TOP