Arsip: Fast & simple recognition

more 19 years ago
ZeAL
gue punya beberapa constanta, sebut aja :
RED = 1
GREEN = 2
BLUE = 4
YELLOW = 8
BLACK = 16
WHITE = 32
gimana cara yang paling cepat dan mudah untuk mengetahui constanta apa yang digunakan kalo misalnya gue dapet angka, misalnya 18 (yang tentu saja dibentuk dari constanta BLACK & GREEN), atau 21 ( yang dibentuk dari const BLACK, BLUE & RED)
thanks in advance...

more 19 years ago
kifmesoft
hi ZeAL.. salam kenal
yang kulihat beberapa constanta tsb memiliki pola set bit,
mulai dari bit 0 hingga bit 5, sehingga mungkin bisa dilakukan
proses bit masking.
trus cara yang kutau hanyalah cara yang mudah..
sperti ini misalnya :
If ((BLACK Or GREEN) And angka) > 0 Then
WriteLn('BLACK, GREEN, BLACK & GREEN');
kalo cara yang cepat saya blm tau..
but, pertanyaanmu sangat menggoda..
aku jadi penasaran.. hehaha.. :D
thx
more 19 years ago
ZeAL
lam kenal juga...
kodenya bisa aja digunakan, tapi gw lg nyari yang simpel DAN cepat...
kebetulan konstantanya banyak, dengan berbagai kombinasinya...
kalo konstantanya ada 20, bisa habis resource cuma untuk milah2 const-nya.
Rencananya ini untuk framework masive multiplayer online game.. jadi harus bener2 optimized!
gitu...
thanks buat tanggepannya....

more 19 years ago
kifmesoft
wow.. keren..
berapakah jumlah langkah yang diperlukan shg bisa dikatakan cepat?
jika dengan "n" buah constanta dapat ditemukan dengan "n" langkah,
dan sudah masuk dalam kategori "cepat", maka menurutku
proses berurutan ataupun loop mungkin sudah mencukupi...
tetapi jika kurang cepat..., maka
bolehkah jika menggunakan cara seperti Tabel Hash ?
dengan bentuk constanta yang unik spt itu.. maka
sangat mungkin untuk menemukannya hanya dg satu langkah saja..

more 19 years ago
ZeAL
yaah.. pokoknya caranya & tekniknya terserah... looping oke, tabel juga boleh.. pokoknya yang simple, yet fast enough!
kalo dari kode yang lo buat berarti kita harus buat sekian banyak kombinasi tergantung banyaknya konstanta. sedangkan rencananya konstantanya bakal banyak (puluhan sampe 100an konstanta)..
ada ide lain..???
thanks bgt!
ini dari forum gamedevid.org (game developer indonesia), sayangnya tanggapannya pake C++...
gue ngerti sih kodenya, tapi berhubung projectnya pake delphi gue pengennya tinggal copy-paste aja... hihihi... :)
unsigned char angka,i=0;
angka<<cin("input angka");
while(angka!=0){
if(angka&1)
cout<<pow(2,i);
++i;
angka>>=1;
}

more 19 years ago
kifmesoft
kalo copy-paste EXEnya aja kan lebih cepat.. hahahaha sorry.. joke ;)
kode C++ yang dituliskan itu agak kurang cepat, sebab kode itu pake Pow atau Power jika di Delphi.
akan lebih cepat jika Pow dihilangkan, maka akan terlihat begini :
unsigned char angka, warna=1;
angka << cin("input angka");
while(angka != 0) {
if (angka & 1)
cout << warna;
angka >>= 1;
warna <<= 1;
}
dan kalo di paste ke Delphi jadinya seperti ini :
Var
angka, warna: Byte;
......
Write('Input Angka: ');
ReadLn(angka);
warna:= 1;
While angka > 0 Do
Begin
If Boolean(angka And 1) Then
Write(warna);
angka:= angka Shr 1;
warna:= warna Shl 1;
End;
......
tapi kalo konstantanya sampe 100an, kayaknya gak bisa deh kalo di proses langsung
dg cara bit masking spt itu.. panjang bit di variable Integer kan maksimal 64 bit
pake loop seperti itu simple & cepat kok.. hanya saja, untuk konstanta yg sampe 100an variable angka perlu
digandakan 2 kali (jika pake type Int64) sehingga didapat 128 bit.
perlu ada improvisasi :)
kalo menggunakan tabel (Array), yang kita buat bukanlah
kombinasi tergantung banyaknya konstanta..
tetapi tergantung dari jumlah segmen-segmen bit yang kita bentuk..
misal kita menggunakan 128 bit dg segmentasi 4 bit:
1 segmen = 4 bit, maka terdapat 15 kombinasi (1 sampai 15),
terus 16 bit adalah 4 x 15, 32 bit adalah 8 x 15 .... dan
128 bit adalah 32 x 15.
2^20 memang 1048576 dalam bentuk biner,
tetapi 2^128 dengan segmentasi 4 bit pada kasus ini hanya 480,
dengan kata lain definisi outputnya hanya 480 saja..!! :)
dan proses eksekusi semuanya maksimal 32 step..
gambaran kode ini, mudah2an sesuai dan mudah dipahami...
Const
RED = 1;
GREEN = 2;
BLUE = 4;
YELLOW = 8;
BLACK = 16;
WHITE = 32;
............
............
Type
TNextEvent = Procedure;
TArrayOfEvent = Array [1..15] Of TNextEvent;
Procedure YellowRed;
Begin
WriteLn('YELLOW & RED');
End;
Procedure BlackWhite;
Begin
WriteLn('BLACK & WHITE');
End;
Procedure BlueGreenRed;
Begin
WriteLn('BLUE, GREEN & RED');
End;
..................
..................
Var
AksiSegmen1: TArrayOfEvent;
AksiSegmen2: TArrayOfEvent;
..............
angka: Integer;
// inisialisasi...
AksiSegmen1[YELLOW Or RED]:= @YellowRed;
AksiSegmen1[BLUE Or GREEN Or RED]:= @BlueGreenRed;
AksiSegmen2[(BLACK Shr 4) Or (WHITE Shr 4)]:= @BlackWhite;
...............
Write('Input Angka: ');
ReadLn(angka);
// proses...
AksiSegmen1[angka And 15];
AksiSegmen2[(angka Shr 4) And 15];
................
cobalah dengan angka 57, maka outputnya
adalah YELLOW & RED BLACK & WHITE
kalo dengan angka 55, maka outputnya
adalah BLUE, GREEN & RED BLACK & WHITE
kira-kira spt itu ZeAL.. :)
more 19 years ago
ZeAL
sip! Ini tanggapan/jawaban terlengkap, memuaskan DAN menjawab selama gue melanglang buana dari forum ke forum...
Abis diforum lain gak seru.. masa gue nanya malah dibalik nanya... :(
Atau jawabannya cuma, "pake table aja..".. Yaaa.. minimal psuedocode-nya kek...
nice tutorial, btw...
THANKS BERATZ kifmesoft! :)
btw,
more ...
- Pages:
- 1
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- Topik lama... [Help]
by eksant in Tip n Trik Pemrograman more 17 years ago - Tampilan rupiah
by xproof in Tip n Trik Pemrograman more 16 years ago - protect data
by jackphantom in Network, Files, I/O & System more 18 years ago - Report Builder Enterprise Export ke Excel
by IdrisZZ in Reporting more 16 years ago - Cached Update Problem dengan Zeos + MySQL
by archvile in MySQL more 17 years ago - cara mengatasi program lambat gara2 field blob?
by grounders in Tip n Trik Pemrograman more 18 years ago - Menyambungkan tabel dengan combobox
by eni in Hal umum tentang Pascal Indonesia more 12 years ago - Create menu Ribbon at run time. Same as Office 2007
by b3rn4rds1h0mb1ng in Tutorial & Community Project more 15 years ago - Fast Report 2.33
by OnDelphi80 in Hal umum tentang Pascal Indonesia more 18 years ago - getfileinfo
by Indr@ in Tip n Trik Pemrograman more 14 years ago