Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1 2 3 4 5 6 7 8 9 10 11 12 13 1417
次のページ(過去)
返信[2]
親投稿
bigslope bigslope
そう言えば、ライツアウトが流行っていた頃、自動解法プログラムなんていうのがありました。 ちなみに、一度押した所はもう押す必要は無い(2回以上押す事は無い)んだとか。
1そうだね
プレイ済み
返信[3]
親投稿
bigslope bigslope
更に突き詰めてみると、 ・受け取り側の型は関係無い ・LEN関数を使っている ・事前に単体の数字を渡す形で2回呼び出している ・その直後、RUNした時の事前チェックで発生 …まあ、大分重箱の隅をつつくような事をやっている感じで、そうそう発生するような状況ではないと思いますが。
0そうだね
プレイ済み
返信[1]
親投稿
bigslope bigslope
一度RUNして、"FNC (任意の数字)"を2回実行してから、もう一度RUNするとハングアップ。 ただ、完全なハングアップではなく、カーソルと打ち込んだ文字が出なくなるものの、キーのクリック音だけはする。 キーを押すと、その候補だけは出てくるし、EDITモードにも行けるが、プログラムの実行を止める手段が無く、HOMEに戻って終了させるしか無い。
1そうだね
プレイ済み
投稿
bigslope bigslope
昨日の投稿で書いた、ハングアップの再現方法。 元々、文字型として受け取る事を想定したプログラムを、数字型として受け取るように、$を%に変えるとどうなるか、という実験をやっていたらこうなった。 それにしても、『バグ報告』のタグが欲しいなあ…。
3そうだね
プレイ済み
返信[2]
親投稿
bigslope bigslope
個人的に、あんまりNEWって使う機会が無いような気がします。 プログラムをロードする→続きを打ち込む→適当に動かす→セーブする→HOMEへ戻ってそのまま終了、って感じなので。 頻繁にプログラムをとっかえひっかえするならば要注意ですが。
0そうだね
プレイ済み
返信[5]
親投稿
bigslope bigslope
バグについては、確実に再現出来る方法が見つかったので、別途投稿します。
1そうだね
プレイ済み
返信[2]
親投稿
bigslope bigslope
それと、型宣言の$と%を書き換えながら何度もRUNすると、稀にハングアップする事がある。 実際はハングアップと言うか、実行が終了しても、OKとカーソルが出なくなってしまい、また打ち込んだ文字も出なくなってしまう(ただし、キーを押すとクリック音だけはする)。 また、EDIT画面には移行出来るが、実行画面に戻っても状況は変わらないので、終了させるしか無いという感じ。再現性は不明。
0そうだね
プレイ済み
返信[1]
親投稿
bigslope bigslope
実行結果。 型宣言に関係無く、数字として受け取った時は数字として、文字として受け取った時は文字として扱われるっぽい?
1そうだね
プレイ済み
投稿
bigslope bigslope
今作っているプログラムで、よく見たら、『ユーザー定義命令で、呼び出す側は文字型変数を渡しているのに、呼ばれる側は数字型変数として受け取っていた』という状況になっている事に気付いた(OPTION DEFINT定義済)。それでもちゃんと動いているので、試しにこんな事をやってみたのだが…何故エラーにならないんだろう?何か、『型なし言語』の領域に片足を突っ込んでいるような気も…。
6そうだね
プレイ済み
返信[3]
親投稿
bigslope bigslope
何となく、フローチャートのテーマとバッジがあったら欲しいかも。 処理開始のバッジを置いて、分岐のバッジを置いて…あ、処理の内容が書けないや。
0そうだね
プレイ済み
返信[19]
親投稿
bigslope bigslope
残った偶数は、140行の条件が変わってしまったので、150行をシミュレートしなおす必要がある。 K=2の場合…次へ進む K=4の場合…次へ進む K=6の場合…処理を飛ばす K=8の場合…次へ進む K=10の場合…次へ進む この2つの条件を組み合わせると、『Kが奇数の場合、または3の倍数でない場合』が、処理が行われる新しい条件となる。 ここで、この条件に合う値を見てみると、K=1、3、5、7、9と、2、4、8、10の9個が対象となるので、[コ]は9、[サシ]はこれらを合計した49が正解となる。
1そうだね
プレイ済み
返信[18]
親投稿
bigslope bigslope
さっきまでは偶数だったら処理を飛ばす対象になっていたのに対し、今度は奇数が処理を飛ばす対象になっている。 そしてもう1つ注目すべきなのは、その飛ばす先が、190行ではなく、160行に書き換えられているという点。160行から先は、処理を行う対象だった場合に進むべき所なので、つまり、『Kが奇数だったら、後は無条件で処理を行う』という風に処理が変更された事になる。 さっきまでは、『Kが奇数だったら、その次の3の倍数の判定処理に進む』だったのが、3の倍数の判定を行わなくなった事により、『奇数、かつ3の倍数』も処理の対象になった事がポイント。
0そうだね
プレイ済み
返信[17]
親投稿
bigslope bigslope
これまで140行は、『Kが偶数だったら処理を飛ばす』という処理を行っていたのだが、(3)の問題でちょっと処理条件が変更になる。 K/2を計算するのと、それをFLOOR関数でくくる所までは同じなのだが、それを比較する時の条件が、イコールではなく、『<』に変わっている。なので、この条件判定からシミュレートしてみよう。 K=1の場合…0<0.5…○ K=2の場合…1<1…× K=3の場合…1<1.5…○ K=4の場合…2<2…× K=5の場合…2<2.5…○ K=6の場合…3<3…× K=7の場合…3<3.5…○ K=8の場合…4<4…× K=9の場合…4<4.5…○ K=10の場合…5<5…×
0そうだね
プレイ済み
返信[16]
親投稿
bigslope bigslope
これで処理の全貌がつかめた上、既に処理結果も出ているので、(2)の問題はすぐに解けるだろう。 [オ]はK=1、5、7の3(回)、[カキ]は1+5+7の13、[ク]はK=1、3、5、7、9の5(回)、[ケ]はK=1、5、7の3(回)が正解となる。
0そうだね
プレイ済み
返信[15]
親投稿
bigslope bigslope
180行で、その『奇数、かつ3の倍数でないもの』を逐次表示していく事になるが、問題文を見ると、『a(1)=、a(2)=、…』というような形式で表示しなければならない事になっている。 この文が実行される条件は、K=1、5、7なので、イコールの右側は、そのままKの値を表示すれば良いが、問題はカッコの中の数字は何を表示すれば良いか。 K=1、5、7なのに対して、こっちは1、2、3…という、Kとはまた別の数字になっている。ここに表示されるべきなのは、何回目の『奇数、かつ3の倍数でないもの』なのかという事になる。 さっきまで放置していた160行目では、この処理を行う毎にTの値が1つずつ加算されている。これを利用すれば、何回目という表示を行う事が出来る。従って、[ウ]は3のT、[エ]は1のKが正解となる。
0そうだね
プレイ済み
返信[14]
親投稿
bigslope bigslope
K=1の場合…Sには0が入っているので、それに1を足した結果(1)をSに入れる K=5の場合…Sには1が入っているので、それに5を足した結果(6)をSに入れる K=7の場合…Sには6が入っているので、それに7を足した結果(13)をSに入れる Sに値を入れる為には、まず『S=』と書き、その後に入れたい数字や変数、あるいはそれらを合わせた計算式を書く。 ここではSとKを足した結果を入れたいので、『S=S+K』と書けば、Kをどんどん足し込んでいってくれる。従って、[イ]は5のS+Kが正解となる。
0そうだね
プレイ済み
返信[13]
親投稿
bigslope bigslope
変数というのは、『常に変わりつつある数』を保存しておくのに便利な物であって、Kが変わる毎に、その値を保存出来れば、最後にまとめて計算が出来る。ただ、ループの回数が分からない以上、Kの中身を保存しておく為の変数を無造作に用意するという訳にも行かない(1個で十分なケースもあれば、100個あっても足りないケースもある)。 問題文を見る限りでは、最終的な和が求められれば良いので、Kの値を個別に保存しなくても、ループの途中で計算していけば良い、という事になる。例えば、最初にSに0が入っている状態で、PRINT S+1と入力すると、(0+1=)1が表示され、5が入っているならば、(5+1=)6が表示される。そして、この計算結果をそのままSに入れ直す事で、Sに計算結果を『足し込んでいく』事が可能になる。 100行にS=0という命令があるのはその前フリで、ここからどんどんKの値を足し込んでいけば良いのだ。
0そうだね
プレイ済み
返信[12]
親投稿
bigslope bigslope
次の160行は…ちょっと何をやっているのか分からないので後回しにして、次の170行を見てみよう。 このSという変数、ここ以外にどこで使われているか見てみると、200行でその中身を表示している。200行は、NEXT Kの次…つまり、ループの外側にあるので、ループを指定した回数だけ繰り返した後に実行される命令だという事になる。 問題文には、『さらにそれらの和をS=と表示するものである。』とあり、そのSを使っているのはここだけなので、その和をここで求めれるのが適当だろう。さっきの条件判定で、K=1、5、7が残ったので、合計13になれば良いはず。 1つ問題なのは、Kの値は毎回変わってしまうのに、それを保存する変数が見当たらない事。どうやってこれを計算すれば良いか?
0そうだね
プレイ済み
返信[11]
親投稿
bigslope bigslope
残るは奇数の場合で、そこから更に3の倍数が、処理を行う条件から外される事になる。 K=1の場合…次へ進む K=3の場合…処理を飛ばす K=5の場合…次へ進む K=7の場合…次へ進む K=9の場合…処理を飛ばす この時点で、『奇数、かつ3の倍数でないもの』が残るので、[ア]は1が正解となる。 このような法則性さえつかめれば、たとえその後に大きな数(100みたいな)を入れた場合のケースが出され ても、そこから簡単に処理結果を導き出す事が出来る。
0そうだね
プレイ済み
返信[10]
親投稿
bigslope bigslope
これらを踏まえた上で、この2つを組み合わせた場合、どのような動きをするか考えてみよう。 まず、140行で処理が飛ばされた時点で、150行以降の処理は行われない。つまり、Kが偶数だったら、無条件で処理を行う条件から外される事になる。 K=1の場合…次へ進む K=2の場合…処理を飛ばす K=3の場合…次へ進む K=4の場合…処理を飛ばす K=5の場合…次へ進む K=6の場合…処理を飛ばす K=7の場合…次へ進む K=8の場合…処理を飛ばす K=9の場合…次へ進む K=10の場合…処理を飛ばす
0そうだね
プレイ済み