رفتن به مطلب
  • 0

کپی کردن آرایه چند بعدی


fun_code

سوال

سلام دوستان

دارم روی ربات شطرنج کار میکنم.

یک آرایه 8 در 8 دارم و نیازه بارها این آرایه در یک آرایه موقت کپی بشه.

اینکار رو با دو حلقه for انجام دادم اما کند هست.

آیا کد سریعی برای کپی شدن یک آرایه چند بعدی در یک آرایه چند بعدی دیگر وجود داره ؟

ممنون از شما

لینک ارسال
به اشتراک گذاری در سایت های دیگر

9 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

درود

به شکل دیگری حلش کردم.

با طراحی بازگشت یک حرکت انجام شده...

ممنون از همراهی شما عزیزان

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۱/۵/۱۱ در 09:03، DexterFstone گفته است:

عزیز از آرایع یک بعدی استففاده کنید

کلا شطرنج و رباتش هر کاری که کنید طول میکشه تا پردازش کنه

برای مثال بازی شطرنج ویندوز 7 را اجرا کنید و سطح بازی ببرید روی 10 وقتی شما یک حرکت کنید ربات بعد 10 الی 15 ثانیه میره حرکت را

ولی میتونین برای بهبود سرعت از آرایه یک بعدی و فرمول زیر برای تبدیل به دوبعدی استفاده کنید

array[width * row + col]

با فرمول بالا میتونین از آرایه یک بعدی به عنوان دوبعدی استفاده کنید

برای مثال خونه شماره 4 3 را میخوام

(8*3+4) = 28

ایندکس شماره 28 درواقع باید تغییر کنه و همون معادل سطر 3 ستون 4 در یک آرایه 2 بعدی هست

موفق باشید

سلام

در ابتدا تشکر میکنم بابت راهنماییتون

اگر کپی کردن از طریق متغیر لیست با استفاده از آرایه یک بعدی اوکی بود تغییرش به آرایه 1 بعدی ارزش داشت.

اما الان تست کردم و وقتی تغییری در آرایه اعمال میشه ، در آرایه اضافه شده به لیست هم تاثیر داره...

برای همین تغییرش به آرایه 1 بعدی تاثیری در سرعت نداره و در هر حال باید 64 خانه را پیمایش کرد.

دستوراتی هم برای کپی کردن آرایه در سایت رسمی دیدم و درست عمل نمیکردن.

اکثرا هم با حلقه کپی رو انجام میدادن !

 

در رابطه با سرعت ، بنده روی depth یا بعبارتی همان سطح 4 قرار میدم و گاهی حرکت ربات 50 ثانیه طول میکشد. وار به حال اینکه برای حرکات قوی تر روی 5 و بالاتر قرارش بدم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۱/۵/۹ در 10:46، DexterFstone گفته است:

فکنم اگه داخل لیست بریزید سریع تر باشه

اول یک آرایه چند بعدی خالی بسازید و بعد به تعداد که نیاز دارید به لیست اضافه کنید

Dim arr() as int
list.add(arr)

و به همین ترتیب

سلام

ممنونم

تست میکنم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۱/۵/۹ در 10:46، DexterFstone گفته است:

فکنم اگه داخل لیست بریزید سریع تر باشه

اول یک آرایه چند بعدی خالی بسازید و بعد به تعداد که نیاز دارید به لیست اضافه کنید

Dim arr() as int
list.add(arr)

و به همین ترتیب

متغیر های لیست و آبجکت و آرایه چند بعدی مشابه تست کردم و نشد.

گویا حتما باید خونه خونه کپی بشه !

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام وقت بخیر 

با یک ارایه پیش ببرید کار رو اگر امکانش هست به صورتی که که مثلا اندیس چند بعدی شو شماره دهی کنید 

مثلا :

یک لیست تعریف کنید 

بعد داخل یک لیست شماره گزاری کنید 

list(1) = "iteme1,item2,item3,item4"

بعد هنگام خواندن از ریجکس استفاده کنید و جدا کنید و بخونید 

فکر کنم این روش بهتر باشه چون مقدار فور ها یدونه میشه و سریع تر هم هست و اون جوری از انتصاب هم میتونم استفاده کنید که چون با ادرس دهی کار میکنه سریع تره 

مثلا :

list1 = list2

(شاید غیر استاندارد باشه این روش ولی باید تست بشه و دیده بشه که سرعت بالاتر یا خیر)

2. از نخ استفاده کنید برای جابه جایی

3- داخل سایت مرجع هم جستجو کنید

4- از چند لیست هم میتونید استفاده کنید 

list1 , list2

 

موفق باشید و یاعلی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۱/۵/۱۰ در 12:27، ali mo گفته است:

سلام وقت بخیر 

با یک ارایه پیش ببرید کار رو اگر امکانش هست به صورتی که که مثلا اندیس چند بعدی شو شماره دهی کنید 

مثلا :

یک لیست تعریف کنید 

بعد داخل یک لیست شماره گزاری کنید 

list(1) = "iteme1,item2,item3,item4"

بعد هنگام خواندن از ریجکس استفاده کنید و جدا کنید و بخونید 

فکر کنم این روش بهتر باشه چون مقدار فور ها یدونه میشه و سریع تر هم هست و اون جوری از انتصاب هم میتونم استفاده کنید که چون با ادرس دهی کار میکنه سریع تره 

مثلا :

list1 = list2

(شاید غیر استاندارد باشه این روش ولی باید تست بشه و دیده بشه که سرعت بالاتر یا خیر)

2. از نخ استفاده کنید برای جابه جایی

3- داخل سایت مرجع هم جستجو کنید

4- از چند لیست هم میتونید استفاده کنید 

list1 , list2

 

موفق باشید و یاعلی

سلام و وقت بخیر

ممنون

کلا وقتی آرایه چند بعدی رو در متغیر از نوع لیست ریختم و برگردوندم خراب شد.

حتی متغیر آبجکت هم تست کردم.

فکر میکنم اگر این کپی شدنه سریع بشه هر حرکت ربات در ماکزیمم حالت (پیچیده ترین حرکت) به جای 50 ثانیه به 20 ثانیه برسه.

یا در حدودا مینیمم ترین حالت به جای 3 ثانیه به 1 ثانیه برسه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۱/۵/۱۱ در 06:02، fun_code گفته است:

سلام و وقت بخیر

ممنون

کلا وقتی آرایه چند بعدی رو در متغیر از نوع لیست ریختم و برگردوندم خراب شد.

حتی متغیر آبجکت هم تست کردم.

فکر میکنم اگر این کپی شدنه سریع بشه هر حرکت ربات در ماکزیمم حالت (پیچیده ترین حرکت) به جای 50 ثانیه به 20 ثانیه برسه.

یا در مینیمم ترین حالت به جای 7 ثانیه به 3 ثانیه برسه.

فراموش کردم عرض کنم که کلا عملیات در thread انجام میشن.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۱/۵/۱۱ در 06:02، fun_code گفته است:

سلام و وقت بخیر

ممنون

کلا وقتی آرایه چند بعدی رو در متغیر از نوع لیست ریختم و برگردوندم خراب شد.

حتی متغیر آبجکت هم تست کردم.

فکر میکنم اگر این کپی شدنه سریع بشه هر حرکت ربات در ماکزیمم حالت (پیچیده ترین حرکت) به جای 50 ثانیه به 20 ثانیه برسه.

یا در حدودا مینیمم ترین حالت به جای 3 ثانیه به 1 ثانیه برسه.

عزیز از آرایع یک بعدی استففاده کنید

کلا شطرنج و رباتش هر کاری که کنید طول میکشه تا پردازش کنه

برای مثال بازی شطرنج ویندوز 7 را اجرا کنید و سطح بازی ببرید روی 10 وقتی شما یک حرکت کنید ربات بعد 10 الی 15 ثانیه میره حرکت را

ولی میتونین برای بهبود سرعت از آرایه یک بعدی و فرمول زیر برای تبدیل به دوبعدی استفاده کنید

array[width * row + col]

با فرمول بالا میتونین از آرایه یک بعدی به عنوان دوبعدی استفاده کنید

برای مثال خونه شماره 4 3 را میخوام

(8*3+4) = 28

ایندکس شماره 28 درواقع باید تغییر کنه و همون معادل سطر 3 ستون 4 در یک آرایه 2 بعدی هست

موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

فکنم اگه داخل لیست بریزید سریع تر باشه

اول یک آرایه چند بعدی خالی بسازید و بعد به تعداد که نیاز دارید به لیست اضافه کنید

Dim arr() as int
list.add(arr)

و به همین ترتیب

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...