paiza times

paizaがお届けする、テック・キャリア・マネジメント領域における「今必要な情報」を届けるWebメディア

logo

paizaがお届けする、テック・キャリア・マネジメント領域の「今必要な情報」を届けるWebメディア

【解答例あり】新作プログラミングゲーム『異能な僕らと異常な世界』を攻略!

20230322135312

本日、新作プログラミングゲーム『異能な僕らと異常な世界』を公開いたしました!

paizaはプログラミングを楽しみながら学んでほしいという思いから、多数の無料プログラミングゲームを公開しています。今回のゲームの舞台は、エンジニア全員が【犯罪者】にされてしまった、近未来の東京。通常のプログラミング問題に加え、HTML+CSS問題や四択問題も登場します。

ざまざまな難易度の問題をご用意していますので、プログラミング学習を始めたばかりの方も、スキルに自信がある方も、楽しんでいただけます。

本記事では、ゲームの遊び方と合わせて、ランキング対象問題を除く全問題の解答例もお届けします!



ストーリー

近未来の東京。一部のエンジニアが【ギフトコード】によって異能の力を手に入れ凶悪犯罪を起こした。エンジニアを危険視した政府は全エンジニアを犯罪者予備軍と見なして隔離法案を制定。

この異常な世界から東京を取り戻せるのは、同じく異能の力を手に入れた善良なエンジニア組織だけ。異能の力はプログラミング力に応じて強さが変わる。今こそプログラミング力で凶悪犯罪を阻止せよ!

ゲームの遊び方

paizaに会員登録(無料)・ログインしていただき、『異能な僕らと異常な世界』にアクセス、GAME STARTボタンをクリックしてください。

組織本部(マイページ)画面では、現在のステータスや着替え、制圧(プログラミング問題解答ページ)へのリンクが表示されています。

上部メニューの「遊び方」ページでは、初めてゲームをプレイする方向けに各画面の説明をしています。また、着替えと制圧については、それぞれの画面にチュートリアル動画もあるので、合わせてご覧ください。

プログラミング問題を解いて東京の街を制圧しよう

マイページから制圧メニューを開くと、東京の街が描かれたマップが表示されます。この「制圧MAP」から問題を選択します。

今回は、プログラミング問題の他、HTML+CSS問題と四択問題もあります。S・A・B・C・Dと難易度がつけられていて、Sがもっとも難しい問題です。この難易度はpaizaのスキルチェックのランクと同じだと捉えていただければと思います。詳しくはこちらのページで説明しています。

プログラミング初心者の方は四択問題から取り掛かってみてもよいでしょう。

HTM+CSSの問題はこのような感じです。

間違っても何度でも挑戦できるので、コードを修正したり調べたりしながらぜひチャレンジしてみてください!

問題に正解すると着せ替えアイテムを獲得できます。

すべての問題に正解して東京全制圧を目指しましょう!


手に入れたアイテムを身に着けて楽しもう

問題を解くなど、ミッションをクリアして手に入れたアイテムは自由に着せ替えができます。初期状態はこのような感じですが……

さきほど手に入れたアイテム「チャイナドレス」を身に着けてみました。

印象がガラッと変わりましたよね!お気に入りのカスタマイズができたらぜひTwitterにもシェアしてください。

キャンペーン情報

TwitterでシェアしてAmazonギフトカードをもらおう【終了しました】

20230322151413

リリースを記念してTwitterキャンペーンがスタート!paiza公式Twitterアカウント(@paiza_official)をフォローして、ゲームの進行状況をツイートしていただいた方の中から、抽選でAmazonギフトカードをプレゼントします。

詳細は『異能な僕らと異常な世界』ページ下部のキャンペーン案内もご覧ください。

スキルチェックコラボ問題を解いてアイテムをゲットしよう

スキルチェックとは、難易度によって分かれているプログラミング問題を制限時間内に解き、結果によってS・A・B・C・D・Eの6段階のランクを取得できるサービスです。

取得したランクは、paizaが運営する就活・転職サービスでの求人応募の際に利用*1できます。そのため問題を解く形式はプログラミングゲームと同じですが、問題や解き方のシェアはご遠慮いただいています。実力試しに挑戦してみてください。

こちらは期限なくいつでも挑戦でき、アイテムゲットが可能です。

Dランク問題はこちら
20230322151539

Bランク問題はこちら
20230322152007

解き方のヒントと解答例

はじめに

プログラミングを初めて学ぶ方は、いきなり問題を解くのは難しく感じると思います。そこで、もっとも難度の低いDランク相当の問題を解くために、paizaラーニングの動画講座で基本を学んでから挑戦するのもおすすめです。

paizaラーニングはブラウザ上でプログラミング学習ができ、学習動画を見る・課題を解くをセットで進めていくため、初心者の方でもスムーズに進めることができます。

Python・Java・PHP・C#・Goなど、人気言語の基礎的な内容を学べる「体験編」シリーズは全講座無料で受講可能です。

制圧ページの問題一覧

Dランク相当…赤羽、大塚、御茶ノ水、田端、新橋、四谷
Cランク相当…池袋、上野、五反田、新宿、高田馬場
Bランク相当…秋葉原、品川
Aランク相当…東京
Sランク相当…渋谷

赤羽と大塚は四択問題、上野と御茶ノ水はHTML+CSS問題となっています。

Sランク問題(渋谷)はランキング問題で、挑戦するだけで着せ替えアイテム「ポニーテール」を獲得できます!

20230322151402

解答例(Python3)

ここからは実際の問題と解答例、解くためのヒントなどをお伝えしていきます。問題は制圧MAPから選択してください。

赤羽(Dランク相当(四択))

文字列を「+」の演算子でつなげて表示させた結果どうなるかが分かれば、正しい答えを選択できます。

答え:

PaizaProgramming

大塚(Dランク相当(四択))

最短経路を求める問題です。スタート地点から目的地までに通る、各拠点をつなぐ距離を足してもっとも短いルートを選べば正解です。

これは単純ですが、アルゴリズムを用いて答えを求める「最短経路問題」は競技プログラミングなどで定番の問題となっています。

答え:

赤羽→上野→秋葉原→新橋

田端(Dランク相当)

if文での場合分け、等号記号の使い方を理解していれば答えが導けます。

与えられた値を受け取る「標準入力」についてはこちらのページも参考にしてみてください。

a,b = int(input()), int(input())
print("Yes" if a > b else "No")
四谷(Dランク相当)

四則演算を理解していれば答えが導けます。

N = int(input())
print(N*100)
新橋(Dランク相当)

文字列の中から指定された位置の文字を取得できるか、その取得した文字を条件に合致するかを調べるコードを書ければ答えが導けます。

1文字目を取得したいとき、0番目(下記の S[0] の箇所)と見ることに注意してください。

S = input()
print("Yes" if S[0] == "a" else "No")
御茶ノ水(Dランク相当(HTML))
.container::before {
  display: block;
  content:"";
  background: transparent url(https://ppg.paiza.jp/html_css/inou_html_css_1/laurel-wreath_D.png) no-repeat 0 0;
  background-size: cover;
  width:468px;
  height:200px;
  position: absolute;
}

.container{
  display: flex;
  justify-content: space-around;
  align-items: center;
  width: 468px;
  height: 200px;
  background: transparent url(https://ppg.paiza.jp/html_css/inou_html_css_1/bg.png) no-repeat 0 0;
  background-size: cover;
}
.logo {
  width:60px;
  height:60px;
  background-color: #444;
}
高田馬場(Cランク相当)

文字列の扱いとif文での分岐処理を正しく書けるかが問われます。

問題文で提示された前置詞をリストに入れ、与えられた文字列(タイトル)が条件に合致するかどうかを判定していきましょう。

PRE = ['at', 'by', 'for', 'from', 'in', 'of', 'on', 'to']

N = int(input())
S = input().split()
for i, s in enumerate(S):
    # 前置詞か前置詞じゃないかで分ける
    if s.lower() in PRE:
        if i == 0:
            if s == s.title():
                continue
            print('No')
            break
        else:
            if s == s.lower():
                continue
            print('No')
            break
    else:
        if s[0].isupper():
            continue
        print('No')
        break
else:
    print('Yes')

この問題を解くために必要な内容を学ぶ

五反田(Cランク相当)

渡される値が多いので少し複雑に見えますが、計算自体はそれほど難しくありません。四則演算を理解していれば解くことができます。

n = int(input())
m,a = map(int,input().split())
stock = 0
for i in range(n):
    p = int(input())
    if p <= a:
        stock += m//p
        m -= p*(m//p)
    else:
        m += stock*p
        stock = 0
print(stock*p + m)

この問題を解くために必要な内容を学ぶ

池袋(Cランク相当)

「FizzBuzz問題」という定番のプログラミング問題の類題です。paizaラーニングの動画講座「アルゴリズム入門編」で解説しています。

n,a,b = map(int, [input(),input(),input()])
for i in range(1, n+1):
    if i % a == 0 and i % b == 0:
        print("paizaprogramming")
    else:
        if i % a == 0:
            print("paiza")
        if i % b == 0:
            print("programming")
    if not (i % a == 0 or i % b == 0):
        print(i)
新宿(Cランク相当)

リストの操作ができるかどうかが問われます。具体的には、リストへの値の追加、リストの要素同士の比較などです。

n = int(input())
names = []
for i in range(n):
    temp = input()
    names.append(temp)

m = int(input())
for i in range(m):
    temp = input()
    for k in range(n):
        if names[k] == temp:
            print(k+1)
            break

この問題を解くために必要な内容を学ぶ

上野(Cランク相当(HTML))
.container{
    display: flex;
    justify-content: space-evenly;
    align-items: center;
    width: 468px;
    height: 200px;
    background: transparent url(https://ppg-external.paiza.jp/html_css/inou_html_css_2/bg.png) no-repeat 0 0;
    background-size: cover;
  }
.container::before {
    display: block;
    content:"";
    background: transparent url(https://ppg-external.paiza.jp/html_css/inou_html_css_2/laurel-wreath_C.png) no-repeat 0 0;
    background-size: cover;
    width:468px;
    height:200px;
    position: absolute;
}

.logo {
    width:60px;
    height:60px;
    background: #7E5A04;
}
.logo:first-child {
    background: #444444;
}
.logo:last-child {
    background: #532E02;
}


以降は、B・Aランク相当の問題となり、プログラミング初学者の方にとっては難易度が高めに設定されています。別途解説記事を出す予定ですのでお待ちください!

秋葉原(Bランク相当)
h,w = map(int,input().split())
data = []
for i in range(h):
    s = list(input())
    data.append(s)

ans = 0
for i in range(1,h-1):
    for k in range(1,w-1):
        if data[i][k] == "#":
            if data[i+1][k] == "#" and data[i][k+1] == "#" and data[i][k-1] == "#" and data[i-1][k] == "#":
                ans += 1

print(ans)
品川(Bランク相当)
n = int(input())
s = list(input())

factor = []
for i in range(1,int(n**0.5)+1):
    if n%i == 0:
        factor.append(i)
        factor.append(n//i)
factor.append(n)
factor.sort()
for i in range(len(factor)):
    sub = s[0:factor[i]]
    if sub*(n//factor[i]) == s:
        print(factor[i])
        break
東京(Aランク相当)

Aランクの問題は条件も複雑で、ゲーム画面に用意されたテストケースを通すだけではクリアできないこともあります。

そのため以下のようにpaiza.IOを使って*2入力値を自分で設定してテストしてみることも大切です。

A・Sランクの問題は、実行時間が短くなるよう、処理速度の速いコードを書くことが求められます。

多くの場合、アルゴリズムを使った効率のよい解法を実装できるかにかかっていますので、「レベルアップ問題集」の練習問題を活用してみるのもおすすめです。

ここで紹介した解答コードは一例です。ぜひいろいろな解き方を試して『異能な僕らと異常な世界』を楽しんでいただければと思います。

20230404230153





paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

詳しくはこちら
paizaラーニング

そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

詳しくはこちら
paizaのスキルチェック

*1:paizaはITエンジニア専門の就活・転職サービスです。公開している求人には、企業が求めるレベルに応じて「応募可能ランク」が設定されています。書類や言葉ではなく、「問題を解いて獲得したランク」は、プログラミングスキルや経験の証明にもなります。

*2:paizaが提供しているオンラインのプログラム実行環境。環境構築なしに、さまざまな言語を使うことができる。

paizaのおすすめコンテンツ

PPG proken プログラミングゲーム「初恋 プログラミング研究会〜海に行こうよ〜」 PPG Bingo プログラミングゲーム「コードレビューBINGO!!」
paiza転職 paiza新卒 EN:TRY paizaラーニング 記事内に記載している情報は、記事公開時点でのものとなります。 Copyright Paiza, Inc, All rights reserved.