コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
うょリウム(元 SPDX) ◆UTOEg1c1vr.B
2020/4/23 23:52
ついにATANで距離を計るDEFが
完成したー!
(距離を計る方法はずいぶん前に確立していたが異常にまわりくどい強引な方法だったのでコレの10倍以上の時間がかかっていた。1ドットずつ描くグラフィックに使っていたので遅すぎて)
ま、上級者にとっては言うまでもなく簡単なことでしょうけど
(要するにノウアルタカハナンチャラカンチャラ)
※と、いうか更に最適解を出しそう

このパズルを自力で解いた喜びは格別なのです。
これがプチコンの醍醐味と言えましょう!

ちなみにDEF内の変数名にX2とY2を
使っているのはXとYをDEF外で使っていることがほとんどだからです。

コメント

アバター
ドラキーマカレー 2020/4/24 0:01 ◆3jIC4XsSXrZX
(DEF〜END間で定義された変数・ラベルはローカル扱い…)
(てかアークタンジェント知らねぇ…)
アバター
うょリウム(元 SPDX) 2020/4/24 0:01 ◆UTOEg1c1vr.B
去年の7月に作った
満月のグラフィックも10倍のスピードになって嬉しい限りです。

ん?6行目と7行目の間に「K=0」が入っているはず…なくてもよかったのかなぁ。
アバター
うょリウム(元 SPDX) 2020/4/24 0:03 ◆UTOEg1c1vr.B
ローカル扱いのはずなのに
DEF内で変数Xを書き換えると
DEF外で使ってた変数Xがおかしくなるんですよね…。
その辺、DEFの仕様がよくわからないんですよねー。
※OPTION STRICTはしてません
アバター
Na 2020/4/24 0:08 ◆QoELVrBXBQCI
DEFの中にVAR(またはDIM)で変数を定義するとローカルになりますよ。
DEF KR(ナントカカントカ)
 VAR X,Y '←定義する
 X=5
 RETURN X
END
アバター
ドラキーマカレー 2020/4/24 0:22 ◆3jIC4XsSXrZX
↑能 あ る 鷹 は 爪 を 隠 さ な い 
アバター
うょリウム(元 SPDX) 2020/4/24 9:19 ◆UTOEg1c1vr.B
ん…?SQR…(使ったことがない)
たしか平方根でしたね。
私は数学詳しくないのです。
プチコン界には詳しい方がたくさんいますね。

SQRが定石だったんですね。
道理でATANで距離を測る方法を調べても出てこないわけです。

能ある鷹は爪を隠すと言ったのは
凡人が「わーすごーい」というようなことを見せびらかして自慢するようなことはしない、という意味で言ったわけでして…。
うょリウムはこのぐらいのことを
自慢で言ったわけではないという弁解的な?
上級者「ぷっ。何をこの程度でスゴイことやってのけた顔してんねんそれぐらい誰でもできるわー。」
みたいな批評に対する答えです。

※うょリウムは批判が来そうな時は、
あらかじめ答えを書いておくのだー。
(考えておくっていう人は多いかな?)
アバター
うょリウム(元 SPDX) 2020/4/24 9:33 ◆UTOEg1c1vr.B
SQRを使ったらさらに時短できました!511×511回実行することもあるプログラムなので、短縮は大切ですね

ついでに3行にまとめました。
KR(KX1,KY1,KX2,KY2)
RETURN SQN(POW(KX2-KX1,2),POW(KY2-KY1,2))
END
Naさんが書いたほうがプログラム的にもプチバース的にも簡潔ではありますが…。
アバター
うょリウム(元 SPDX) 2020/4/24 9:43 ◆UTOEg1c1vr.B
あ、まとめない方が少し速かった…。

POWでまとめる   約221F
Naさんの書いたまま 約217F

ちなみに私が昨日作ったATAN法だと
約270Fでした。
去年の7月に試行錯誤の末に確立した方法はその更に10倍以上。

やっぱりうょリウムの得意(というほどでもない)は
物語とゲームバランス方面と割り切ってこれからは素直に質問するかな…。
(難しいことを言われて理解できないのが怖いなんて言えない)
アバター
こういち 2020/4/24 15:46 ◆ou0jbJnEJ0Kb
https://twitter.com:443/kuina_ch/status/1246002378584674305
これか…黒魔術の世界は奥が深い…
仮にできたとして、プチコンの平方根普通に速いからな…下手に黒魔術使うよりも速い可能性はあるかも。(プログラムを書かないほうが速い言語)

しかし、ATANの代わりに三平方は聞いたことあるけど、三平方の代わりにATANは初めて聞いたな。興味深い。
アバター
ツララ 2020/4/24 23:38 ◆ArUdBYOYME1V
この程度でスゴイことってよりも、それに満足しちゃって
次のステップである更にその先に目を向けるフェーズに移行しない方がよっぽど「ぷっ」ってなる。
なのでうょリウムさんは別に予防線張らなくても大丈夫。
批判は来るのが当然のものとして、ドンと構えていてほしいですね。
説明する方も思考の整理になるメリットありますし、理解が追いつかなければ根掘り葉掘り聞けばいいんですよ。

平方根は1/2乗だからPOW()関数でPOW(N,0.5)ってやっても出ますよね。
でもSQR()関数使った方が全然速い。
アバター
うょリウム(元 SPDX) 2020/4/25 9:50 ◆UTOEg1c1vr.B
>うょリウム(2019/07)
ぷっ
アバター
うんざり 2020/4/25 13:56 ◆VZlRV0xeWZeS
DEF FOO
 X=3'←VAR Xから上(宣言前)はグローバル変数
 VAR X
 X=8'←VAR Xから下(宣言後)はローカル変数
END

また、宣言に付いては、処理順ではなく、行順に解釈されるみたいなので、

グローバル変数であっても
 GOSUB @INIT
 Y=10'(暗黙であれ)宣言としては成り立っているので、下のVAR Yは二重定義となる
 END
 @INIT
 VAR Y'こっちが先に処理される様に見えるが
 RETURN
と書けばエラーになります
アバター
うょリウム(元 SPDX) 2020/4/25 20:11 ◆UTOEg1c1vr.B
勉強になります。

コメントを書く

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

- WEB PATIO -