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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0730
l数十桁の2進数をパターン化9未解決


l

リンク

2009/7/30(Thu) 23:47:31|NO.26614

題の通り3桁の2進なら
000,100,010,001,110,011,101,111
とパターン化したいのですが うまくいきません
一応自分で作りましたが全パターンを表示することは出来ませんでした

s="00000"

repeat strlen(s)
cnt1=cnt
b=s//値初期化
poke b,cnt,peek(b,cnt)+1
mes b
repeat strlen(s)
if cnt>cnt1 {
poke b,cnt,peek(b,cnt)+1
mes b
}
loop
loop


誰か助けてください(><)



この記事に返信する


panda

リンク

2009/7/31(Fri) 00:30:47|NO.26615

すごく汚いソースですが、こんな感じでしょうか?
sdim bit
; 求めたい数字(10進数) a = 126 ; 区切りたいビット(桁) spl = 3 repeat repeat spl if(a\2 == 0){ bit = "0"+bit } else { bit ="1"+bit } a = a/2 loop bit = " "+bit if(a == 0):break loop mes bit



inovia

リンク

2009/7/31(Fri) 01:07:50|NO.26616

綺麗に並べてみたVer.(ただし8桁まで)


#include "hspmath.as" //8桁まで sdim ref,4096 s="00000000" l=strlen(s) repeat int(pow(2,l)) s="":z=cnt repeat 8 s+=(z>>(7-cnt)&1) loop ref+=strf("%0"+l+"d",s)+"\n" loop mesbox ref,640,480,0



なたで

リンク

2009/7/31(Fri) 01:08:11|NO.26617


#module #deffunc _bitsdraw str in,int n,local s if(n==0){mes in:return} s = in _bitsdraw s,n-1 poke s,n-1,'1' _bitsdraw s,n-1 return #define global bitsdraw(%1) _bitsdraw %1,strlen(%1) #global s = "00000" bitsdraw s
これで列挙できますが、数十桁となると時間が大変なことに。



たこ

リンク

2009/7/31(Fri) 01:17:10|NO.26618


#module #define ctype pow2(%1) (1 << (%1)) #deffunc mes_2 int n, int keta buf = "" repeat keta buf += ""+((n & pow2(keta - cnt - 1)) != 0)+"" loop mes buf return #deffunc _Pattern int n, int i, int keta if n == 0 { mes_2 n, keta } repeat keta - i, i a = n + pow2(cnt) mes_2 a, keta if (a & pow2(keta-1)) == 0 { _Pattern a, cnt + 1, keta } loop return #define global Pattern(%1) _Pattern 0, 0, %1 #global Pattern 3

なたでさんのスクリプトに似てるけど




SYAM

リンク

2009/7/31(Fri) 01:38:56|NO.26619

楽しそうなんで参加.
桁数指定するようにしたので私もキレイに並べてみる.


#define LV 32 sdim logbuf:notesel logbuf mesbox logbuf,ginfo_winx,ginfo_winy sdim buf,LV+1 memset buf,'0',LV noteadd buf repeat f=0 repeat LV c=peek(buf, LV-cnt-1) if(c=='0') { poke buf, LV-cnt-1, '1' f=1 break } poke buf, LV-cnt-1, '0' loop if(f=0):break noteadd buf objprm 0,logbuf await 0 loop stop



ANTARES

リンク

2009/7/31(Fri) 02:20:49|NO.26620

 数十桁は時間的にもメモリ容量的にもちょっと辛そうです。
 20桁として、10秒実行から類推すると約20分かかります。
 メモリ容量の方はやりようもありますが。


n=5 x=1 repeat n x*=2 loop mes "2^"+n+"="+x i=0 repeat x mask=1 s="" repeat n if i&mask: s="1"+s: else: s="0"+s mask=mask<<1 loop mes s await i++ loop
 そうか、2^nは1<<nでよかったのね(^_^;;
 約20分はtitle入れた場合で、類推計算にも問題があったので、
実際にはもっと短くなります。



窓口

リンク

2009/7/31(Fri) 02:49:38|NO.26621

以前作ったスクリプトを流用してみました。
0〜100000 までのパターンを0から順に列挙します。
かかる時間が半端ないです。


;######################################### #module Bit_Handle_Module ;######################################### ;指定したバッファの指定したビットを書き換える ;バッファの内容は32ビットまでの数値である必要がある ;%1 バッファの内容(数値であるに限る) ;%2 ビットのインデックス(数値であるに限る) #define global ctype BitScan(%1,%2) (%1 and (1 << %2)) #define global ctype BitXor(%1,%2) (%1 xor (1 << %2)) ;######################################### ;=print_1byte(int) ;指定した数字を八桁の二進数に変換(1byte) ;1 0~255 変換する整数 #defcfunc print_1byte int byte_print_st1 bit_zero="00000000" if mix > 255 : mix = 255 if mix < 0 : mix = 0 repeat 8 if 0 ! BitScan(byte_print_st1,cnt) : poke bit_zero,7-cnt,'1' loop return bit_zero ;=print_2byte(var,var) ;=print_4byte(var,var) #define global ctype print_2byte(%1,%2) print_1byte(peek(%1,1)) +%2+ print_1byte(peek(%1,0)) #define global ctype print_4byte(%1,%2) print_1byte(peek(%1,3)) +%2+ print_1byte(peek(%1,2)) +%2+ print_1byte(peek(%1,1)) +%2+ print_1byte(peek(%1,0)) ;######################################### #global ;######################################### text = "" repeat 100000 : int_ = cnt : title str(cnt) text += print_4byte(int_," ")+"\n" await 0.01 loop mesbox text,ginfo(12),ginfo(13)



KA

リンク

2009/7/31(Fri) 20:00:25|NO.26646

>>題の通り3桁の2進なら
>>000,100,010,001,110,011,101,111
>>とパターン化したいのですが うまくいきません
>>一応自分で作りましたが全パターンを表示することは出来ませんでした
>>誰か助けてください(><)

000
100
010
001
110
011
101
111

どういう風な「パターン」?にしたいのでしょうか?
この順番では、どんな「パターン」?にしたいのか、良く分かりませんが?



GENKI

リンク

2009/8/1(Sat) 15:01:43|NO.26664




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