1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【電脳少女プログラミング2088 ─壊レタ君を再構築─】Python初心者がやってみた(ギャングのアジト編)

Posted at

はじめに

前回の記事で「データセンター」をクリアして、今回は「ギャングのアジト」をクリアしたので書こうと思います。

難しくてまだクリアできてない方などに参考にしてもらえると嬉しいです。

【問題】

image.png
image.png

解答

今回もPython3を選択して書いてみました。

解答
# coding: utf-8
# 自分の得意な言語で
# Let's チャレンジ!!

N = int(input())  # ピクセルアートの大きさを整数として受け取る

result = "Yes" # 答えをいれる変数

for i in range(N): # Nの数繰り返す
    input_str = input()  # 入力を受け取る
    
    b = list(map(int, input_str.split())) # スペースで区切ってリストに変換
    
    if b != b[::-1]: # スライスを使って左右対称かを判断
        result = "No" # 左右対称じゃない場合にNoを代入する
    
    
print(result)  # 結果を表示

コード解説

上のコードの解説をすると

N(ピクセルアートの大きさ)を整数としてinput_lineに代入

4行目
N = int(input())

答えをいれる変数input_lineを作成して初期値を"Yes"にする

6行目
result = "Yes"

for文でNの数だけ下の処理を繰り返す

  1. 入力を受け取る
  2. スペースで区切ってリストに変換
  3. if文とスライス(b[::-1]の部分)を使って、もし、左右対称じゃないならばresult"No"を代入

左右対称かの判断は、Pythonのスライスを使ってリストbを反転させて、反転させる前のリストbと反転後のリストbが同じかをif文で確認しています。

例(左右対称)
[1, 0, 1, 0, 1]をスライスで反転させると
[1, 0, 1, 0, 1]になって同じ

例(左右対称じゃない)
[1, 1, 0, 0, 0]をスライスで反転させると
[0, 0, 0, 1, 1]になって同じにならない

8行目~14行目
for i in range(N): # Nの数繰り返す
    input_str = input()  # 入力を受け取る
    
    b = list(map(int, input_str.split())) # スペースで区切ってリストに変換
    
    if b != b[::-1]: # スライスを使って左右対称かを判断
        result = "No" # 左右対称じゃない場合にNoを代入する

スライスについてはわかりやすい記事があったので紹介します。


こんな感じのコードで問題を解くことができました。

最後に

記事を最後までお読みいただきありがとうございます!
今回は難しかったです。Pythonのスライス操作をしたことがなかったので解き方が思い浮かばなくて結構苦戦しました。次回は「自然の残る公園」をしようと思っています。次回も見てくださると嬉しいです。

ではまた他の記事で会いましょう!またねーヾ(´∀`)ノ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?