エンジニア×謎解き
『エンジニア向けの謎解きを作ろう!』とGIFCat QUESTがスタートしました。
どんな問題がいいか。難易度もどのくらいがいいのか。メンバーと連携して試行錯誤を重ねて問題を作成しました。
ギリギリまでブラッシュアップを続けてはエンジニアに解いてもらい...
ついに完成したGIFCat QUEST!!
ぜひ解いてみて欲しく、感想もいただけたら大歓喜でございます。。
▼▽▼それではGIFCat QUEST挑戦してみてください▼▽▼
GIFCatからの挑戦状
GIFCatから謎のPythonコードが送られてきました。
実行してみてもエラーになる...
エンジニアの皆さん!
エラー解消してキーワードを導き出してください!!
GIFCat QUEST-1
以下のコードのエラーを解消して、出力された文字列を答えてね!
def main():
data = [[3, 7, 15], [12, 8, 10], [6, 6, 18]]
analyzed = analyze_data(data)
# 各行の合計値を使い計算
offsets = [0, 4, -2, 1, -6] # 必要なオフセット値を加える
unicode_values = [(sum(row) % 123) + offset for row, offset in zip(analyzed, offsets)]
# 文字列を生成
generated_message = ''.join(chr(v) for v in unicode_values)
encoded_message = encode_message(generated_message)
decoded_message = decode_message(encoded_message)
print(decoded_message) # デコードされた文字列を出力
if __name__ == "__main__":
main()
GIFCat QUEST-2
以下のコードのエラーを解消して、出力された文字列を答えてね!
def process_data(data):
# 各行の合計値を計算し、100で割った余りを計算
processed = [int(sum(row)) % 100 for row in data]
# 最初の5つの値に10を加算してキーシーケンスを作成
key_sequence = [p + 10 for p in processed[:5]]
return key_sequence
def encode_message(key_sequence):
# キーシーケンスをASCII文字列に変換
message = ''.join(chr(k) for k in key_sequence)
# 文字列をUnicodeエスケープ形式に変換
encoded_message = ''.join(f"\u{ord(c):04x}" for c in message)
return encoded_message
def decode_message(encoded_message):
# Unicodeエスケープ形式の文字列をデコード
decoded_message = bytes(encoded_message, "utf-8").decode("unicode_escape")
return decoded_message
def main():
# 入力データ(行列形式)
data = [
[110],
[111],
[114],
[116],
[104],
]
# データを処理してキーシーケンスを生成
key_sequence = process_data(data)
# キーシーケンスをエンコード
encoded_message = encode_message(key_sequence)
# エンコードされたメッセージをデコード
decoded_message = decode_message(encoded_message)
# デコード結果を出力
print(decoded_message)
if __name__ == "__main__":
main()
GIFCat QUEST-3
以下のコードのエラーを解消して、出力された文字列を答えてね!
…おっとここではそれだけではないみたい。他の問題の回答を参考にしてみると…?
import base64
def generate_sequence():
# 数値のシーケンスを生成する
return [110, 111, 114, 116, 104, 119, 101, 115, 116]
def get_encoded_message():
# 数値のシーケンスを文字列に変換し、エンコードする
sequence = generate_sequence()
message = ''.join(chr(num) for num in sequence[:-2]) # シーケンスの最後の2文字を除外
encoded_message = base64.b64encode(message.encode('utf-8')).decode('utf-8')
return encoded_message
def handle_request():
# エンコードされたメッセージをデコードする
encoded_message = get_encoded_message()
return encoded_message.decode('utf-8')
def main():
response = handle_request()
print(response)
if __name__ == "__main__":
main()
解けましたか?
...いかがでしたか?難しかったでしょうか?
キーワードを導き出すことができたら、サイトの解答欄に入力するとその場で正解・不正解の判定が見られます!
サイトからドット絵のGIFCatをクリックして回答してみてください。
3問解くと、最終問題に挑戦できます!!最終問題は脳トレ謎解きです🧠💡
エンジニアも時にはひらめきが必要・・・
ぜひ挑戦してみてください!
回答時に、Xのアカウントを入力するとキャンペーンに参加もできます!ついでにアマギフ抽選にも参加してゲットしちゃってください!

(回答するドット絵GIFCatが見つからない...)
(探すのが面倒だーーーーー!)
そんなあなたには特別に居場所をお教えいたします...
【⚠️ネタバレ注意】GIFCatの居場所
GIFCat QUEST-1
https://giftech.io/giftech2025spring/
GIFCat QUEST-2
GIFCat QUEST-3
次世代型ハッカソン-GIFTech2025春 にも挑戦しませんか
このコードが解けたあなたに次なる挑戦!?
GIFTechが届ける次世代型ハッカソン、この春開催!参加者募集中です!!【〜2/20まで!】
※定員制のためお早めにご応募ください
今年のテーマは、生成AIプロダクト開発!そしてプロのエンターテイナーとの共創!?
一味違ったハッカソン、ご応募お待ちしております!
▼ 詳細は以下をチェック