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

アバター
まるだい ◆AdwyE6qhnxpV
2019/2/2 20:06
質問
配列操作
配列操作について質問があります
B番目の要素(0から)を配列C[A番目]に入れ込むように

配列操作をする方法はありますか?

コメント

アバター
はる 2019/2/2 20:15 ◆75Vh4SY8TdKS
自分は似たようなことをCOPYで無理矢理やりました。
http://petitverse.hosiken.jp/community/petitcom/diary?read=2454
アバター
ツララ 2019/2/2 20:25 ◆ArUdBYOYME1V
ソートのアルゴリズムを調べてれば「方法はありますか?」って質問は出てこないですよね。
アバター
すぽぽ 2019/2/2 21:27 ◆XAFevzZNS6ft
ツララさんは未だにこんな書き込みを続けてるのか
アバター
say 2019/2/3 7:11 ◆1nbKtD/tFu04
どっから見ても局所的ローテートなのに、どうやったらソートと勘違いできるんだろう?
これだからプログラミングしたことない人は困る
アバター
say 2019/2/3 11:06 ◆1nbKtD/tFu04
ちなみに、その局所的ローテートなる命令はないので、自分で作るしないです

☆いろいろツッコミどころの多いコード
アバター
こういち 2019/2/3 11:31 ◆ou0jbJnEJ0Kb
sayさん
その局所的ローテートがインサーションソートや図書館ソートに使われてるからでは?
アバター
まるだい 2019/2/3 12:07 ◆AdwyE6qhnxpV
自分が質問しておいて内容に置いて行かれてるなんて言えない
アバター
はる 2019/2/3 12:31 ◆75Vh4SY8TdKS
こういちさんのおっしゃる通り、
ツララさんのコメントは、
そのような配列操作がソートプログラムに、
使われているということを意味しているのだと思います。
実際に自分のソートプログラムでも似たようなことがされていますし。

まあ、あの書き方は突っ込まれてもしょうがない。
アルゴリズムが分かればプログラムが分かるわけではないし。
むしろ、
アルゴリズムをプログラムにするために質問しているのかもしれないし。
"方法はありますか?"
と書いたので方法がないとでも思っているんじゃないか
と考えられることが原因だと思います。

多分ですが、ツララさんは、
"方法はありますか?"
という書き方の揚げ足を取りたかっただけだと思います。
アバター
ツララ 2019/2/7 11:43 ◆ArUdBYOYME1V
「方法はありますか?」だと、無いのが前提みたいだから
考え方の転換を促したかったっていうのが本音ですね。
まぁ、揚げ足取りと受け取るかどうかは本人に任せますけども。
「知らない」ものは「存在しない」って発想だと視野狭窄に陥って思考停止になりやすいので。

あと、既に知ってるであろう方法
例えば2つの変数の中身を入れ替える処理やSWAP命令を駆使して、同じようなことが実現できないかどうかを試す機会を放棄してるようにも見えたので。

配列のサイズをMX、挿入元の位置をM、挿入先の位置をNとすると
DIM ARY[MX]
INM=M:TON=N
IF INM!=TON&&MX>INM&&MX>TON THEN
 D=INM>TON:D=!D-D
 SWAP ARY[INM],ARY[TON]
 FOR I=INM TO TON-D*2 STEP D
  SWAP ARY[I],ARY[I+D]
 NEXT
ENDIF
(なお淫夢は関係ありません)
ぶっちゃけ、はるさんみたくCOPY命令使った方が速いんですけど。
アバター
キルル2 2019/2/24 3:14 ◆rGE712Ruejv7
配列arrayのsrc番目の要素をdest番目に移動して、また会った要素は全てローテーションさせる操作をするには以下のコードを書けば良いです
tmp = array[src]
if src > dest then
copy array,dest+1,array,dest,src-dest
elseif src < dest then
copy array,src,array,src+1,dest-src
endif
array[dest] = tmp
ちなみにこのコードは正しく動作するかチェックしていません
copyの呼び出しが正しくないかも

あと、公開されてない作品は存在していないのと同じです
知らないものは知らないで良い

コメントを書く

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

- WEB PATIO -