HSPのソートを試す(HSP3.6非対応)

これを試そうと思っていたらHSP3.6の不具合にぶつかった。

これを試そうと思っていたらHSP3.6の不具合にぶつかった。

  • タグ:
  • タグはありません
#runtime "hsp3cl"
#cmpopt varinit 1
#include "XorShift.as"
;https://github.com/yosgspec/XorShift128-on-8languages/blob/master/HSP/XorShift.as
;
new@XorShift xs
;
suits@Card="△","▼","□","◆"
numbers@Card="","","","","","","","","","10","","",""
#module Card __suit,__number
#modcfunc crdSuit
return __suit
#modcfunc crdNumber
return __number
#modcfunc crdName
return suits(__suit)+numbers(__number)
#modinit int _suit,int _number
__suit=_suit
__number=_number
return
#global
;
dimtype cards,5
foreach suits@Card: i=cnt
foreach numbers@Card
newmod cards,Card,i,cnt
loop
loop
;
foreach cards
mes crdName(cards.cnt),1
if (cnt+1)\length(numbers@Card)=0: mes
;
cardIndex.cnt=cnt
loop
mes
;
xsShuffle xs,cardIndex,mangleIndex
foreach mangleIndex
mangles.cnt=cards(mangleIndex.cnt)
loop
mes
;
foreach mangles
mes crdName(mangles.cnt),1
if (cnt+1)\length(numbers@Card)=0: mes
loop
mes
;()
;>
foreach mangles
compares.cnt=crdNumber(mangles.cnt)*length(suits@Card)+length(suits@Card)-1-crdSuit(mangles.cnt)
loop
;
sortval compares,1
foreach compares
sortget i,cnt
sorted.cnt=mangles.i
loop
;
foreach sorted
mes crdName(sorted.cnt),1
if (cnt+1)\length(suits@Card)=0: mes
loop
mes
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX