Brainfuckには88種類の命令しかありません.ここではそのうち22種類を紹介します.

  • [:ポインタの指すメモリの値が00のとき,対応する]の直後へジャンプする(while文の開始).
  • ]:ポインタの指すメモリの値が00でないとき,対応する[の直後へジャンプする(while文の終了判定).

実はこの問題は入力されるNは関係ありません!

テストケースがすべて改行で終了することに注目すると「SS11文字ずつ受け取って改行であればプログラムを終了,そうでなければその文字を出力」 ということをすればよいということがわかります.

実装例(Brainfuck)
//Nの入力を捨てる
,[,----------]

//1文字ずつ入力を読み取り,改行かどうかを判定する
,----------[++++++++++.,----------]

また,NNを実際に整数型として受け取って「NN文字出力する」というコードを書いても正解となります.

実装例(Brainfuck)
//整数型として受け取る
,------------------------------------------------
>,----------
[--------------------------------------
<[>++++++++++<-]
>[<+>-]
,----------
[--------------------------------------
<[>++++++++++<-]
>[<+>-]
,[-]
]]

//N文字出力する
<[>,.<-]

このようにBrainfuckのコードでは「改行が来たら終了する」といったアルゴリズムや「入力を受け取って-1ならば文字列のサイズがわかる」 といったアルゴリズムがよくつかわれます.