HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0421
time総当たりについて2未解決


time

リンク

2016/4/21(Thu) 21:52:35|NO.75285

総当たりソフトを作りたいのですが
1...10.a......z.<....?.!+.*などとキーボードすべての文字を
順番に表示させたいのです。

mes""

毎回このmes内に文字を重複せず一回一回文字を更新?する形にしたいのですが
できますでしょうか?



この記事に返信する


cats

リンク

2016/4/21(Thu) 22:12:57|NO.75286

ちょっと工夫しないとメモリ食いそうですが、幅優先探索でできると思います。



Velgail

リンク

2016/4/22(Fri) 11:06:35|NO.75288

C++のnext_permutationをHSP化。
実際に(題意の用途的に)使うのであれば、文字を配列要素にして、配列番号の配列をこの関数に入れて使うといいんじゃないでしょうか

#module #deffunc swap var a,var b tmp=a a=b b=tmp return #define global reverse(%1) __reverse %1,0,length(%1) #deffunc __reverse array data,int first,int last repeat (last-first)/2 swap data(first+cnt),data(last-cnt-1) wait 0 loop return #defcfunc next_permutation array data,local i,local j,local ii if(length(data)<=1){ return 0; } i==length(data) i-- repeat ii=i i-- if(data(i)<data(ii)){ j=length(data) do j-- until(data(i)<data(j)) swap data(i),data(j) __reverse data,ii,length(data) return 1 } if(i==0){ reverse data return 0 } wait 0 loop return 0 #global a=1,2,3,4 do mes strf("%d,%d,%d,%d",a(0),a(1),a(2),a(3)) until (0==next_permutation(a))



ONION software Copyright 1997-2023(c) All rights reserved.