2次配列のソートについて

投稿者:KNIGHT 投稿日:2024/02/10(Sat) 14:12:19 No.2906

御世話になります。
TTSneoで作成していたプログラムをプロデルに移植しようとしています。
2次配列をソートするにはどうすればよいのでしょうか?
例えば、果物の名前と、その値段が対になっている以下のような2次配列があるとき、
{{みかん、50}、{りんご、80}、{なし、100}、{メロン、1000}、{かき、30}、{ぶどう、120}}

値段の安い順や、値段の安い順に並べなおすにはどうすればよいのでしょうか?
TTSneoでは、「配列の2列目が大きい順に並び直す」などとできたのですが、プロデルではできません。

どうかよろしくお願いします。

Re: 2次配列のソートについて

投稿者:KNIGHT 投稿日:2024/02/10(Sat) 17:39:29 No.2908

自己解決しました。
データ表を使いました。

データというデータ表を作る
データに{「果物名」,「値段」}という列を加える
データの2列目を取得してそのデータ型を整数に変える
果物リスト={{「みかん」,30},{「りんご」,100},{「なし」,120},{「メロン」,800},{「かき」,80},{「ぶどう」,300}}
データの一覧を果物リストに変える
データを「値段」で並び替えて並替後データとする
果物値段表は、並替後データすべての一覧
果物値段表を表示する

ただ、最後から2行目の「果物値段表は、並替後データすべての一覧」という文章の中の「すべて」が必要なのはどうしてか疑問です。
普通に考えて、これに気が付ける人はいないんじゃないかと思いますが。

Re^2: 2次配列のソートについて

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/13(Tue) 14:12:28 No.2916

> 最後から2行目の「果物値段表は、並替後データすべての一覧」という文章の中の「すべて」が必要なのはどうしてか疑問です。

まず「並替後データ」には、2次元配列ではなく、データ行の配列で格納されています。
(マニュアルにデータ表の並べ替える手順に関する説明を追記しました)

『果物値段表は、並替後データすべての一覧』
の部分は、すべてを使わない通常の書き方では、次のように書きます。

----------------
果物値段表は、{}
並替後データをレコードへそれぞれ繰り返す
  果物値段表へレコードの一覧を追加する
繰り返し終わり
----------------

「すべて」後置詞を使った書き方は、この繰り返しを簡潔に書くための文法です。
必ず「すべて」を使う必要なく、繰り返し文で書いても構いません。

データ表の並べ替えについては、扱いづらさをご質問を通じて今回認識しましたので
今後のアップデートで改善したいと思います。

Re^3: 2次配列のソートについて

投稿者:KNIGHT 投稿日:2024/02/13(Tue) 20:12:00 No.2919

ゆうとさま、じきじきのご回答をありがとうございます。
ただ、言われていることが私の理解を超えていて・・・
〜〜〜
データというデータ表を作る
データに{「果物名」,「値段」}という列を加える
データの2列目を取得してそのデータ型を整数に変える
果物リスト={{「みかん」,30},{「りんご」,100},{「なし」,120},{「メロン」,800},{「かき」,80},{「ぶどう」,300}}
データの一覧を果物リストに変える
データを「値段」で並び替えて並替後データとする
果物値段表は、並替後データの一覧
〜〜〜
私の頭では、「データの一覧を果物リストに変える」という時点で、「データの一覧」は、二次配列だと思い込みます。したがって、(「すべて」は抜きで、)「果物値段表は、並替後データの一覧」と記述したいと思ってしまうのです。

そうすると「エラー」なのです。なんで????

「TTSneoの書き方の方がずいぶん分かりやすかったな」と思うばかりです。

また、別件ですが、「二次配列」の「探す」でもいきづまってまして、プロデルの V1.710 あたりまでは、二次配列でも「探す」が機能していたようですが、それ以降に、二次配列では「探す」機能がうまく機能せず、どうしたものかと思い悩んでいます。

原則的に、「二次配列」は「配列」と考えてはいけないのでしょうか?
その辺り、明確な線引きなしに、仕様が変更されてしまっているようで、昔にちゃんと思い通りに動いていたプログラムが、いろいろな新しいバージョンで試してみますが、どれもこれも動かなくなってしまって困っています。

配列の基本的な概念自体も、あくまで「一次配列だけを扱っています」とか、説明があればよいのかなと思います。

よろしくお願いいたします。

Re^4: 2次配列のソートについて

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/14(Wed) 01:37:09 No.2921

お返事ありがとうございます。

> 「TTSneoの書き方の方がずいぶん分かりやすかったな」と思うばかりです。
プロデルはTTSneoよりも時間をかけていますので、こういったご感想は率直に残念です。
ただ、プロデルは扱いづらいという声も軽く聞こえてきており、何らかの改善が必要だと認識しています。

ユーザが感じている使いにくさは、開発者からはなかなか理解できない点でもあります。
ぜひフィードバックを頂ければと思います。

> また、別件ですが、「二次配列」の「探す」でもいきづまってまして、プロデルの V1.710 あたりまでは、二次配列でも「探す」が機能していたようですが、それ以降に、二次配列では「探す」機能がうまく機能せず、どうしたものかと思い悩んでいます。

ご面倒だと思いますが、まずは掲示板でご質問・ご報告ください。

意外かもしれませんが、基本的に告知なく仕様を変えている認識はなく、1.7以前で作ったプログラムも2.0で動く認識です。
ただ特に1.8で大幅な改造を加えたことで、把握していない所で意図せず仕様が変わってしまっているようです。

テストは実施していますが、ユーザが作成したプログラムは把握できませんので、
何か変化があった場合は、ぜひフィードバックをお願いします。


> 配列の基本的な概念自体も、あくまで「一次配列だけを扱っています」とか、説明があればよいのかなと思います。

単に一次配列だけであるという事でもありませんが、
一次配列の要素に一次配列を入れれば二次元配列になる(ジャグ配列)というのがプロデルでの配列です。この点は、TTSneoとは異なります。

配列に関しては、最近、大幅内部仕様の改良を実施した所ですので、マニュアルが追い付いていません。
相変わらず、ワンオペで開発していますので、追って加筆したいと思います。
少々お待ちください。

Re^5: 2次配列のソートについて

投稿者:KNIGHT 投稿日:2024/02/14(Wed) 08:51:53 No.2923

お返事ありがとうございます。
> プロデルはTTSneoよりも時間をかけていますので、こういったご感想は率直に残念です。
すみません、私がTTSneoから離脱できていないだけかもしれません。

> ぜひフィードバックを頂ければと思います。
そうさせていただこうと思います。

> 意外かもしれませんが、基本的に告知なく仕様を変えている認識はなく、1.7以前で作ったプログラムも2.0で動く認識です。

動作しないサンプルを多く経験しています。


> 単に一次配列だけであるという事でもありませんが、
> 一次配列の要素に一次配列を入れれば二次元配列になる(ジャグ配列)というのがプロデルでの配列です。この点は、TTSneoとは異なります。

やはり、基本的に構造が変化しているのですね。

> 相変わらず、ワンオペで開発していますので、追って加筆したいと思います。
> 少々お待ちください。
よろしくお願いいたします。

▲ページの先頭へ

- WebForum -