Mario - CS50x 2026

解くべき問題

任天堂のスーパーマリオブラザーズのワールド1-1の冒頭で、マリオは以下のように隣接するブロックのピラミッドを飛び越えなければなりません。

screenshot of Mario jumping over adjacent pyramids

mario-more というフォルダ内の mario.c というファイルに、レンガにハッシュ(#)を使用して、以下のようにそのピラミッドを再現する C 言語のプログラムを実装してください。

   #  #
  ##  ##
 ###  ###
####  ####

そして、ユーザーがピラミッドの高さを決められるように、まず1から8(両端を含む)の間の正の int を入力するように促します。

ユーザーが促されたときに 8 を入力した場合、プログラムは以下のように動作します。

$ ./mario
Height: 8
       #  #
      ##  ##
     ###  ###
    ####  ####
   #####  #####
  ######  ######
 #######  #######
########  ########

ユーザーが促されたときに 4 を入力した場合、プログラムは以下のように動作します。

$ ./mario
Height: 4
   #  #
  ##  ##
 ###  ###
####  ####

ユーザーが促されたときに 2 を入力した場合、プログラムは以下のように動作します。

$ ./mario
Height: 2
 #  #
##  ##

そして、ユーザーが促されたときに 1 を入力した場合、プログラムは以下のように動作します。

$ ./mario
Height: 1
#  #

もしユーザーが促されたときに、実際には1から8(両端を含む)の間の正の整数を入力しなかった場合、プログラムはユーザーが協力するまで入力を促し続ける必要があります。

$ ./mario
Height: -1
Height: 0
Height: 42
Height: 50
Height: 4
   #  #
  ##  ##
 ###  ###
####  ####

隣接するピラミッド間の「隙間」の幅は、ピラミッドの高さに関係なく、2つのハッシュの幅に等しいことに注意してください。

ウォークスルー

コードのテスト方法

以下の入力に対して、コードは規定通りに動作しますか?

  • -1(またはその他の負の数)
  • 0
  • 1 から 8
  • 9 またはその他の正の数
  • 文字や単語
  • 何も入力せず、Enter キーだけを押した場合

また、以下を実行して check50 を使用し、コードの正確性を評価することもできます。ただし、必ず自分自身でコンパイルしてテストも行ってください!

check50 cs50/problems/2026/x/mario/more

以下を実行して style50 を使用し、コードのスタイルを評価します。

style50 mario.c

提出方法

ターミナルで以下を実行して、表示されるプロンプトに従って課題を提出してください。

submit50 cs50/problems/2026/x/mario/more