Brainfuckには種類の命令しかありません.ここではそのうち種類を紹介します.
[
:ポインタの指すメモリの値がのとき,対応する]
の直後へジャンプする(while文の開始).]
:ポインタの指すメモリの値がでないとき,対応する[
の直後へジャンプする(while文の終了判定).実はこの問題は入力されるNは関係ありません!
テストケースがすべて改行で終了することに注目すると「を文字ずつ受け取って改行であればプログラムを終了,そうでなければその文字を出力」 ということをすればよいということがわかります.
//Nの入力を捨てる ,[,----------] //1文字ずつ入力を読み取り,改行かどうかを判定する ,----------[++++++++++.,----------]
また,を実際に整数型として受け取って「文字出力する」というコードを書いても正解となります.
//整数型として受け取る ,------------------------------------------------ >,---------- [-------------------------------------- <[>++++++++++<-] >[<+>-] ,---------- [-------------------------------------- <[>++++++++++<-] >[<+>-] ,[-] ]] //N文字出力する <[>,.<-]
このようにBrainfuckのコードでは「改行が来たら終了する」といったアルゴリズムや「入力を受け取って-1ならば文字列のサイズがわかる」 といったアルゴリズムがよくつかわれます.