コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
キルル2 ◆rGE712Ruejv7
2019/7/6 2:03
質問
シンプルなループ
以下のプログラムがあります
VAR a[0],b
READ b
WHILE b>=0
PUSH a,b
READ b
WEND
DATA 1,2,3.-1
このプログラムを動かすと、配列Aの中身は[1,2,3]となります
DATAが-1だけのときは、配列Aの中身は空です
このプログラムを、挙動を全く変えないで、より短くする方法を探しています(READの記述を1回だけに減らしたい、もしくは何らかの別の方法)
回答よろしくお願いします

コメント

アバター
あきと 2019/7/6 4:44 ◆qGd5dQw2g3a2
COPY命令じゃダメなの?
アバター
イスターリャ 2019/7/6 9:55 ◆yQQqD0WLNtDY
プログラム全体の長さを短縮したい場合には使えませんが、その部分の処理を簡略化して可読性を上げる目的であれば、一連の処理をユーザー定義関数(DEF)でまとめることはできます
アバター
でんぺん 2019/7/6 10:12 ◆HfSy5ayxtyTa
READを1つだけにするなら簡単ですが、この手のは以外と難しいというか今のでも最短に近い感じがあるんですよね。
READを1つにした上で同じぐらいの長さ、という感じなら出来ますが、さらに短くと考えると「あれ?」みたいな感じになりました。

長さが決まっているならCOPY命令が手っ取り早そうですけどね。
アバター
ツララ 2019/7/6 10:37 ◆ArUdBYOYME1V
WHILE文をREPEAT文に変えてみたらいいんじゃないんです?
ループの抜けを始まりじゃなくて終わりで条件分岐するようにすれば
READは一回で済みますよん。

VAR a[0],b
REPEAT
 READ b
 IF b>=0 THEN PUSH a,b
UNTIL b<0
DATA 1,2,3,-1

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -