今回のケースで言うとソートじゃなくて数えあげの方がFOR文も2重にならないし楽なんじゃないのかなと思います。
トリオの判定もC1C2C3に指定のかーどの種類を渡してやる関数でいいのかなと思うんですが
DEF JUDGECOMBI(C1,C2,C3)
IF COUNT[C1]!=0 &&COUNT[C2]!=0&&COUNT[C3]!=0 THEN RETURN 1
RETURN-1
END
みけらんジェロさんの考え方に似てます。
これで3カードから5カードまで判定できます
DIM TE[5] '手札
DIM COUNT[26] '種類毎の枚数
'26種類のカード毎に数える
FOR I=0 TO 125: INC COUNT[TE[I] DIV 5]:NEXT
R=JUDGE345CARD(5) '5カードか判定
R=JUDGE345CARD(4) '4カードか判定
R=JUDGE345CARD(3) '3カードか判定
DEF JUDGE345CARD( NUM )
FOR I=0 TO 25
IF COUNT[I]=NUM THEN RETURN I
NEXT
RETURN -1
END
そこで関数で大きさを比較して大きい数字を書く処理を作ります。
DEF WHICHBIG( A, B )
IF A>B THEN RETURN A
RETURN B
END
呼び出す側では
RET=WHICHBIG( A,B )
となります。
関数の良いところは
R=WHICHBIG(C,D)と書いても動くところです。GOSUBではAとBの比較しかできなかったのが関数では引数で渡す事でCとDの比較もできるようになっています。
返り値もGOSUBの時は必ず「RET」に入れていましたが、関数では受けとる側で書き換えることができるのでC,Dの比較時Rにいれてます。
nobuさんは手札5枚だけでカードを決めようとしていますが途中の説明で「カードは全部で130枚あり、26種類のカードが5枚ずつ存在」と説明しています。
最初の5枚の事だけ考えるとあと125枚とのチェックが大変になるので最初にすべて用意してしまった方が楽になります。
DIM ALLCARD[130]
FOR I=0 TO 129 :ALLCARD[I]=I:NEXT
FOR I=0 TO 129
SWAP CARDS[I],CARDS[RND(130)]
NEXT
これで0~129までの数字が重複なくバラバラの順番で格納されます。