-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
راستی رقم اول که نمیتونه صفر باشه. چون سوال گفته اعداد چهار رقمی. عدد چهار رقمی داریم که هزارگانش صفر باشه؟! بنابراین حلقهء بیرونی باید از یک شروع بشه.
بنابراین یکی از تعداد عددهای جواب کم میشه.
اره من همون موقع میخواستم ویرایش کنم اما اینجا ویرایش نداره! دیگه بیخیال شدم یه بار دیگه از 1 بزارم . فقط کافیه حلقه i از 1 شروع بشه.
راستش من خیلی روی حل معادلات یا الگوریتم های به این شکل کار کردم (بخاطر کار روی الگوریتم های فشرده سازی) و اکثرا برای حل سوالاتی شبیه این خودم براش فرمول میساختم . البته دیگه دنبالش نرفتم ببینم این فرمول از اول بوده یا نه . اما مثلا شما همینو در نظر بگیر اگه بخوایم از طریق کد نویسی و بدون فرمول خاصی انجام بدیم میشه 10 به توان تعداد ارقام موزد تست! یعنی اگه تعداد ازقاممون یکم بره بالا...! :D
همین مشکلو با فاکتوریل و مجموع جمع اعداد متوالی هم داشتم که هنوز نتونستم فرمولی براش پیدا کنم که با صرف زمان کمتر به جواب برسن. اما به طور کل همیشه توی نرم افزارهای تجاریم چون خیلی به سرعت اهمیت میدم سعی کردم تعداد پردازش رو به حداقل برسونم و تا جایی که بتونم از حلقه استفاده نکنم . به خاطر همینه که معمولا سرعت کار با نرم افزارهایی که میسازم به طور غیر طبیعی بالاست!حتی توی محاسبات نسبتا سنگین
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
using System;
namespace test
{
class MainClass
{
public static void Main (string[] args)
{
int n = 0;
int[] x = new int [10];
{
for (int i = 1; i < 10; i++)
{
int i1max = 10;
for (int i1 = 0; i1 < i1max; i1++)
{
int i2max = i1max - i1;
for (int i2 = 0;i2 < i2max; i2++)
{
int i3max = i2max - i2;
for (int i3 = 0;i3 < i3max; i3++)
{
int i4max = i3max - i3;
for (int i4 = 0;i4 < i4max; i4++)
{
if (i == i1 + i2 + i3 + i4)
{
Console.Write(i1); Console.Write("\t");
Console.Write(i2); Console.Write("\t");
Console.Write(i3); Console.Write("\t");
Console.Write(i4); Console.Write("\t");
Console.Write( i); Console.Write("\t");
Console.WriteLine();
x[i]++;
n++;
}
}
}
}
}
}
Console.WriteLine(Convert.ToString(n)); n = 0;x = new int[10];
{
for (int i2 = 1; i2 < 10; i2++)
{
for (int i = 0; i <= i2; i++)
n+=(i+2)*(i+1)/2;
}
}
Console.WriteLine(Convert.ToString(n)); n = 0;x = new int[10];
}
}
}
}
الان من این الگوریتم رو متحول کردم؟
در حلقه دوم اگر i2 رو برداری همون 219 رو میده
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
حلقه دوم 714 میده که برای 5 رقم بدست میومد .
نقل قول:
در حلقه دوم اگر i2 رو برداری همون 219 رو میده
منظورتون رو متوجه نشدم!
و اینکه الگوریتم شما باید برای همه تعداد ارقام کار کنه و در واقع باعث کاهش محاسبات بشه.لطفا بگید مثلا برای 8 رقم به چه صورت محاسبه میکنید؟
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
for (int i = 0; i < 10; i++) n+=(i+2)*(i+1)/2;
میشه ۲۱۹
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
شاید هم
for (int i = 0; i < 10; i++) n+=(i)*(i+1)/2;
اصولا ۱۲ به بعد مغر من کار نمیکنه.الان واقعا نمیدونم کدوم کد درسته.ویرایش هم بستست.
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
نوشته شده توسط
FastCode
for (int i = 0; i < 10; i++) n+=(i+2)*(i+1)/2;
میشه ۲۱۹
اره البته i هم از 1 شروع بشه.
خوب برای 6 رقم چنتا حلقه باید بزاریم و چطوری؟
ریاضی یه روال ثابت داره شما روی تعداد 2 تا 5 رقم یه فرمول ثابت بدست بیار که کار کنه مطمئنا روی 1 میلیون رقمم صدق میکنه
البته الگوریتم شما هم اگه برای تعداد ارقام بالاتر هم انجام بشه میتونه مفید باشه چون حداقل برای 4 و 5 رقم کاهش محاسبات داشت.
(البته اگه بشه کاری کرد کلا حلقه رو حذف کنیم خیلی خوبه :لبخند:)
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
بد نیست بالاخره یخورده بهینه سازی و یه دوزار ریاضی استفاده شده.
البته بحث بهینه سازیش درواقع خیلی هم مهم نیست تاحالا!
اصل بحث این بود که الگوریتمش تمرینی برای ورزیدگی و علمی شدن ذهن باشه و کمی با ریاضیات درگیر بشیم.
اگر ایده ای هم میداد راجع به اون فرمول ریاضی کلی برای بدست آوردن تعداد، خب خیلی خوب بود. احتمالش هست.
در برنامه نویسی و نوشتن الگوریتم دستمون از ریاضیات به مراتب بازتره، چون میتونیم کلی عملیات منطقی ردیف کنیم که میتونه از روشهای کاملا کور و Brute-force پیش بره تا برسه به خود فرمول ریاضیش! یعنی در این بین شما میتونید درجات زیادی از سادگی و دشواری رو داشته باشید و برای حل مسئله بصورت گام به گام پیش برید. مثل همین کاری که تا همینجا شد. یعنی اول یک الگوریتم کاملا کور و بدون هوشمندی و ریاضی خاصی بود، بعد یخورده تحلیل بیشتر کردیم و الگوریتم حرفه ای تر و بهینه تری رو با کمک کمی ریاضی نوشتیم. اگر تعداد این اعداد فرمول کلی ریاضی داره پس بنظرم احتمالش هست که در الگوریتم هم میشه خیلی بیش از این پیش رفت؛ ولی اگر گفتن که مسئلهء خیلی پیچیده ای است، پس احتمالا کار واقعا دشواری خواهد بود! منم همینو گفتم. چون یخورده کار کردم مخم داغ کرد دیگه. درحالیکه بنده قدرت طراحی الگوریتم بالایی دارم تاجاییکه خودم برآورد میکنم!! یادم نمیاد تاحالا در تحلیل و درک یا طراحی الگوریتمی بمونم، مگر همینطور موارد که با ریاضیات پیشرفته و اینها درگیر باشن. یعنی اساسا ریاضی هستن دیگه! فقط بحث برنامه نویسی و منطق و الگوریتم نیست. بهرحال اگر کسی تخصص ریاضی داشته باشه و بتونه برنامه هم بنویسه، بنظرم میتونه از برنامه نویسی و روش الگوریتمیک برای تحلیل و درک مسئله و یافتن جواب کمک زیادی بگیره. ولی یوقت هم شاید نخواد این کار رو بکنه تا مهارت ریاضی و قدرت ذهن خودش رو تقویت کنه. اما در مواردی که در نهایت بدون کمک راه راهی پیدا نمیکنه، میشه از الگوریتم و برنامه نویسی کمک گرفت.
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
این روشی که دوستمون رفتن در واقع همون روشی بود که منم بدست اورده بودم . یعنی جمع اعداد متوالی.
چیزی که حدودا بهش رسیدم ولی هنوز تستش نکردم :
x=n+n!+n*1+n*2+...+n*8
منظور از ! همون جمع اعداد متوالیه
منظور از n*n1 هم مجموع جمع اعداد متوالی به تعداد n1
والا من واقعا حوصلم نشد کاملا تستش کنم و توی فرمولم فقط تا n*1 رفتم بقیشو حدس زدم! البته اگه بتونید یه فرمول برای جمع اعداد متوالی پیدا کنید میشه این الگوریتم رو بدون حلقه هم پیاده سازی کرد
مثلا اینو بشه با یه فرمول بدست اورد : (4!+3!+2!+1!)+(3!+2!+1!)+(2!+1!)+(1!)
(! جمع اعداد متوالی منظوره)
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
چیزی که حدودا بهش رسیدم ولی هنوز تستش نکردم
بازم بروز عجول بودن شما.
نکنه فک میکنی ریاضیت خیلی قویه؟ :لبخند:
بنظر من ریاضی شما درحدی نیست که بدون تست بخوای چیزی بذاری.
یعنی کسی نمیاد خودش رو علاف بکنه ببینه راه حل شما چیه از کجا اومده.
چون منطقا هم نباید این کار رو بکنه.
یه استاد ریاضی یه مطلبی رو بذاره فرق میکنه.
ولی شما تاحالا همش مدعی بودی و از موارد و اصول اولیه هم اطلاع نداشتی و رعایت نکردی.
بنابراین، بر اساس همون منطق و احتمالات ریاضی، احتمال اینکه جواب شما درست باشه یا حتی به جواب نزدیک باشه، یا حتی اینکه چیز بدردبخوری برای یادگیری داشته باشه، اونقدری نیست که منطقی باشه آدم وقت و انرژی ارزشمند خودش رو بهش اختصاص بده.
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
بازم بروز عجول بودن شما.
بحث عجول بودن نیست من نیازی به حل این مسئله ندارم و ربطی هم به کارم نداره به همین دلیل لازم نمیدونم براش وقت بذارم
نقل قول:
نکنه فک میکنی ریاضیت خیلی قویه؟
نه هرگز همچین فکری نکردم
اما باز اگه ناراحت نمیشید از لحاظ تحلیل مسئله یکم حرف واسه گفتن دارم!
===================
این حرفم بهت برنخوره اما من احساس میکنم شما ادم سطحی نگری هستی که همه چیزو اونجور که بیان میشن میبینی و عمق وجودی و مبنای اونو درک نمیکنی
من برای فرمولی که بالا نوشتم اگرچه وقت فقط نیم ساعت وقت گذاشتم اما برای اون فرمول حداقل 10 حالت از 10 رقم 1 تا 10 و همچنین چند حالت رو مورد بررسی قرار دادم.
نمیدونم چرا شما فکر کردید فقط خودتون علامه هستید یا فقط اونی که مدرک داره میفهمه یا فقط اونی که 2 تا فرمول ریاضی بلده قدرت تحلیل داره!فکر کردی اون 219 رو هم شانسی بدست اوردم؟
نمونه این مسائل رو زیاد حل کردم زمانی که شما خمیر بازی میکردی! برای اونایی که اولویت بنده بودن وقت هم گذاشتم و صد در صد میتونم ادعا کنم که درسته اما توی دنیا بی نهایت تحلیل و مسئله وجود داره و اگه قرار باشه وقتو انرژیمو روی حل همش بزارم فکر نکنم عمرم کفاف بده!
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
راستی دوست عزیز میتونم سنتون رو بپرسم؟
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
حالا باز اگه هم فکر میکنید از خودم در میارم حداقل دوست خوبم fast code کار منو ساده کرد و یه مثال براش گذاشت!
نقل قول:
for (int i = 1; i < 10; i++) n+=(i+2)*(i+1)/2;
یه جای گذاری کن اگه زحمتت میشه خودم انجام میدم.
2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2 + 8*9/2 + 9*10/2 + 10*11/2
که برابر است با :
2!+3!+4!+5!+6!+7!+8!+9!+10!
(منظور از ! همون جمع اعداد متوالیه)
==============================
اما برای 5 رقم قضیه فرق میکنه :
نقل قول:
for (int i2 = 1; i2 < 10; i2++)
{
for (int i = 0; i <= i2; i++)
n+=(i+2)*(i+1)/2;
}
و پیاده سازی اون بدین شکل میشه:
(1*2/2 + 2*3/2) + (1*2/2 + 2*3/2 + 3*4/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2 + 8*9/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2 + 8*9/2 + 9*10/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2 + 8*9/2 + 9*10/2 + 10*11/2)
که میشه :
(1!+2!) + (1!+2!+3!) + (1!+2!+3!+4!) + (1!+2!+3!+4!+5!) + (1!+2!+3!+4!+5!+6!) + (1!+2!+3!+4!+5!+6!+7!) + (1!+2!+3!+4!+5!+6!+7!+8!) + (1!+2!+3!+4!+5!+6!+7!+8!+9!) + (1!+2!+3!+4!+5!+6!+7!+8!+9!+10!)
و این دقیقا همون چیزیه که بهش رسیدم و فرمولی هم ساختم بر همین اساس بود
امیدوارم کمی طرز تفکرونگرشتون نسبت به دنیای اطراف تغییر کنه . مطمئنم برای خودتون هم مفیده
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
نوشته شده توسط
hamidhws
راستی دوست عزیز میتونم سنتون رو بپرسم؟
اولا که نخیر چون بتوچه :لبخند:
دوما که بازم به احتمال 99.99999 درصد، از شما به میزان قابل توجهی سنم بیشتره :قهقهه:
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
نوشته شده توسط
eshpilen
اولا که نخیر چون بتوچه :لبخند:
دوما که بازم به احتمال 99.99999 درصد، از شما به میزان قابل توجهی سنم بیشتره :قهقهه:
باشه عذر میخوام بابابزرگ!
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
فکر میکردم فقط خانوما از گفتن سنشون هراس دارن! شما که دور از جون مونث نیستید؟ :لبخند:
از نوع حرف زدنتون نمیخوره سنتون بالا باشه. بیشتر میخوره 12 13 این حدودا.راستشو بگو:لبخند: توی شناسنامت دست بردی عمو؟
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
سلام
دقت کردید اگه به همین صورت بخواید ادامه بدید این تاپیک تا قیامت ادامه پیدا میکنه؟
حالت نوبتی پیدا کرده. یکی شما میگی یکی دوستمون (بعضی وقتا هم چندتا پشت سر هم). سوال اولیه تاپیک په چیزی بود که جوابشو کمو بیش متوجه شدید (تا اینجا که من پستا رو خوندم هیچکدوم حرف همدیگرو هم قبول نکردید و نخواهید کرد). اگر هم بازدیدش زیاد شده صرفا به خاطر اینه که ما ایرانیا کلا کل کل رو دوس داریم. ببینیم یه جا دو نفر با هم بزن بزن راه انداختن ما هم وامیسیم تشویق میکنیم.
بازدیدهای زیاد این تاپیک هم به معنای همو تشویقه هستش. ملت منتظرن ببینن کی کم میاره بالاخره
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
نوشته شده توسط
karaji333
سلام
دقت کردید اگه به همین صورت بخواید ادامه بدید این تاپیک تا قیامت ادامه پیدا میکنه؟
حالت نوبتی پیدا کرده. یکی شما میگی یکی دوستمون (بعضی وقتا هم چندتا پشت سر هم). سوال اولیه تاپیک په چیزی بود که جوابشو کمو بیش متوجه شدید (تا اینجا که من پستا رو خوندم هیچکدوم حرف همدیگرو هم قبول نکردید و نخواهید کرد). اگر هم بازدیدش زیاد شده صرفا به خاطر اینه که ما ایرانیا کلا کل کل رو دوس داریم. ببینیم یه جا دو نفر با هم بزن بزن راه انداختن ما هم وامیسیم تشویق میکنیم.
بازدیدهای زیاد این تاپیک هم به معنای همو تشویقه هستش. ملت منتظرن ببینن کی کم میاره بالاخره
حق با شماست دوست عزیز
فکر کنم اینجوری پیش بریم رکورد بیشترین پست در یک تاپیک رو بتونیم توی گینس ثبت کنیم :لبخند:
ولی جدی ما که نمیتونیم جلو خودمون رو بگیریم به همین دلیل به مدیر سایت پیشنهاد دادم تاپیک رو قفل کنه. الانم میگم شما هم بگید لطفا قفلش کنن
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
من با قفل کردن تاپیک مخالفم :عصبانی:
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
نوشته شده توسط
FastCode
for (int i = 0; i < 10; i++) n+=(i+2)*(i+1)/2;
میشه ۲۱۹
هان؟
من تست کردم 220 میده.
بعدم این چیه مثلا از کجا اومده چه کلیتی داره؟
همینطور نیست که چندتا عملیات و عدد رو ترکیب کنی که عدد مورد نظر بدست بیاد.
یبارکی مینوشتی n=219 خیال خودت رو راحت میکردی :لبخند:
نقل قول:
نوشته شده توسط
FastCode
شاید هم
for (int i = 0; i < 10; i++) n+=(i)*(i+1)/2;
اصولا ۱۲ به بعد مغر من کار نمیکنه.الان واقعا نمیدونم کدوم کد درسته.ویرایش هم بستست.
اینم که اصلا 165 میده.
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
نوشته شده توسط
hamidhws
حالا باز اگه هم فکر میکنید از خودم در میارم حداقل دوست خوبم fast code کار منو ساده کرد و یه مثال براش گذاشت!
یه جای گذاری کن اگه زحمتت میشه خودم انجام میدم.
2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2 + 8*9/2 + 9*10/2 + 10*11/2
که برابر است با :
2!+3!+4!+5!+6!+7!+8!+9!+10!
(منظور از ! همون جمع اعداد متوالیه)
==============================
اما برای 5 رقم قضیه فرق میکنه :
و پیاده سازی اون بدین شکل میشه:
(1*2/2 + 2*3/2) + (1*2/2 + 2*3/2 + 3*4/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2 + 8*9/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2 + 8*9/2 + 9*10/2) + (1*2/2 + 2*3/2 + 3*4/2 + 4*5/2 + 5*6/2 + 6*7/2 + 7*8/2 + 8*9/2 + 9*10/2 + 10*11/2)
که میشه :
(1!+2!) + (1!+2!+3!) + (1!+2!+3!+4!) + (1!+2!+3!+4!+5!) + (1!+2!+3!+4!+5!+6!) + (1!+2!+3!+4!+5!+6!+7!) + (1!+2!+3!+4!+5!+6!+7!+8!) + (1!+2!+3!+4!+5!+6!+7!+8!+9!) + (1!+2!+3!+4!+5!+6!+7!+8!+9!+10!)
و این دقیقا همون چیزیه که بهش رسیدم و فرمولی هم ساختم بر همین اساس بود
امیدوارم کمی طرز تفکرونگرشتون نسبت به دنیای اطراف تغییر کنه . مطمئنم برای خودتون هم مفیده
تو تازه الان داری دوزار توضیح میدی.
قبلش فقط گفتی تست نکردم و یکسری چیزهای چپر چلاق و مبهم گذاشتی.
ضمنا میگی جمع اعداد متوالی، بعد از علامت فاکتوریل که مال ضربه استفاده میکنی.
جناب آیکیو! حداقل خلاقیت به خرج بده از یه علامتی چیز دیگه ای استفاده کن که با اون قاطی نشه! روش و اصول رو میگم رعایت نمیکنی همینه. آخه کدوم آدم باسوادی همچین چیز مبهم و بدون اصولی ببینه که انگار یه بچه نوشته بعدشم خودش داره میگه تست نکردم، میاد وقت و انرژی خودش رو روش تلف کنه؟
در نهایت هم اینا که گفتی خب حالا چطوری چه ربطی به جواب مسئله دارن؟
چیزی که تا اینجا بنده دیدم اینه که اول جواب یک حالت خاص رو با Brute-force پیدا میکنید، بعد میاید فرمول و حلقه های خاصی رو ترکیب میکنید تا به اون جواب برسه.
فرمول هاتون که کلی نیست.
و ظاهرا قاعدهء خاصی هم نداره درآوردنش. فقط تست میکنید و چند ترکیب و حدس رو تست میکنید تا یکیش جواب مورد نظر رو بده. بنظرت به این میگن ریاضی به اون معنا؟ اینم خودش یه نوع آزمون و خطا و روش Brute-force است، و تطابق جواب هم براحتی میتونه تصادفی باشه. شما با جمع و تفریق و ضرب اعداد هم میتونی به همون عدد برسی؛ ولی خب که چی؟!
کلیتش از نظر ریاضی هیچ چیز اثبات شده یا حتی رابطهء قابل توجهی که بشه بقدر کافی مطمئن بود که ربطی به اصل مسئله داره این وسط دیده نمیشه. بیشتر بازی با اعداد و عملیات بنظر میاد تا چیز دیگه.
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
این الان چیه مثلا:
نقل قول:
چیزی که حدودا بهش رسیدم ولی هنوز تستش نکردم :
x=n+n!+n*1+n*2+...+n*8
منظور از ! همون جمع اعداد متوالیه
منظور از n*n1 هم مجموع جمع اعداد متوالی به تعداد n1
فرمولت رو بذاری تو تگ کد که مرتب بشه و یوقت بهم ریختگی نمایشی پیش نیاد.
کار سختیه؟
x=n+n!+n*1+n*2+...+n*8
خب بعد فرمودید n*n1.
درحالیکه در فرمول شما اصلا چیز به اسم یا شکل n1 دیده نمیشه.
اگر منظورت اون عددها بود، بجاش مینوشتی m حداقل بهتر بود و از اون n هم مستقل بودنش مشخص میشد.
خلاصه تا اینجا همش ابهام و معما و تردید برای فرمولی که هنوز هیچ توضیحی ندادی اصلا از کجا اومده و میگی تست هم نکردی و درش معنای علامتهای ریاضی رو هم تغییر دادی.
حالا تازه این «مجموع جمع اعداد متوالی به تعداد n1» هم خودش داستان داره و باید علم روایت و تفسیر بلد باشی و بعد از کلی تلاش استنباط کنی که محتمل ترین منظور چی بوده!!
نقل قول:
امیدوارم کمی طرز تفکرونگرشتون نسبت به دنیای اطراف تغییر کنه . مطمئنم برای خودتون هم مفیده
تغییر کنه یعنی چی دقیقا؟
یعنی مثلا از اون فرمول و گفته های مبهم و چپر چلاق شما باید همه چیز رو متوجه میشدم؟
یا اینکه ازش انتقاد نمیکردم؟
چطوری برام مفید واقع میشه اونوقت؟
میشه بفرمایید؟
ببینم راستی شما نبودی که فکر کنم یکی دو سال قبل، ادعای اختراع یک روش فشرده سازی ای چیزی رو میکردی که گفتی دنیا رو متحول میکنه و بالاخره تا یه مدت دیگه خبرش رو میشنویم؟ :متفکر:
بنظرم در همین تالار تاپیک زده بودی راجع بهش.
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
ضمنا میگی جمع اعداد متوالی، بعد از علامت فاکتوریل که مال ضربه استفاده میکنی.
علامت که فقط یه شکل عزیزم مهم اصل قضیه هست. ولی چشم علامتشم عوض میکنم. فکر کنم علامتش برعکس فاکتوریل میشد اگه اشتباه نکنم :متفکر: کاراکترشو روی صفحه کلید نمیدونم اگه لطف کنید بگید alt+? ممنون میشم
نقل قول:
و ظاهرا قاعدهء خاصی هم نداره درآوردنش. فقط تست میکنید و چند ترکیب و حدس رو تست میکنید تا یکیش جواب مورد نظر رو بده
نه دوست عزیز .چنتا رو تست میکنیم و از روی روند افزایش یه فرمول براش میسازیم . اگرچه جمع اعداد متوالی هم خودش نیازمند حلقه هست اما تعداد محاسبات رو خیلی کاهش میده. ولی بازم اگه راهی یا فرمولی بهتری باشه که بشه کاملا بصورت خطی انجامش داد طبیعتا خیلی خیلی بهتره.
نقل قول:
خلاصه تا اینجا همش ابهام و معما و تردید برای فرمولی که هنوز هیچ توضیحی ندادی
والا من چند حالت رو بررسی کردم و از بین روند رشد اون ها سعی داشتم به یه فرمول کلی برسم . و روند رشدی هرکدام از رقم ها مثل 1 تا 9 رو بررسی کردم . اما فقط تا 2 رو تست کردم . بعدش چون دیدم برای خطی کردن این فرمول احتیاج به جمع اعداد متوالی دارم در نتیجه اون فرمول رو فعلا بیخیال شدم و دنبال راهی برای بدست اوردن جمع اعداد متوالی شدم,
نقل قول:
ببینم راستی شما نبودی که فکر کنم یکی دو سال قبل، ادعای اختراع یک روش فشرده سازی ای چیزی رو میکردی که گفتی دنیا رو متحول میکنه و بالاخره تا یه مدت دیگه خبرش رو میشنویم؟
بنظرم در همین تالار تاپیک زده بودی راجع بهش.
بله دوست عزیز بنده نزدیک به یک دهه هست دارم روی پیدا کردن روشی بهینه تر از الگوریتم های فعلی کار میکنم و نتیجه کارهامو هم با این فایل تست میکنم : http://prize.hutter1.net
به نتایج واقعا خوبی هم رسیدم و مطمئنم یک روز حداقل میتونم یه الگوریتم بهینه تر خلق کنم
پ.و: البته یه بنده خدا دیگم بود که ادعا کرده بود روشی دست پیدا کرده که بطور 100% قادره مثلا 4 بیت رو در 3 بیت ذخیره کنه! نمیدونم شاید بنده خدا قانون شانون رو نمیدونسته یا میخواسته منطق رو زیر سوال ببره.
ما به هیچ وجه نمیتونیم n حالت رو در n-1 حالت ذخیره کنیم و در این صورت حداقل یک حالت مشابه پیش میاد!اما n یک مقدار متغیره و اصل فشرده سازی هم بر همین مبنا استواره
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
میدونید چی خیلی جالبه؟
این محاسبات embarrassingly parallel هستن.
یعنی میتونید از .../OpenCL/Distributed computing/CUDA استفاده کنید.
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
آقا جمع اعداد متوالی که فرمول داره!
مگه شما توی مدرسه نخوندید؟
فرمولش فکرکنم اینه:
-
نقل قول: چگونه یک پردازش خطی را در کم ترین زمان ممکن انجام دهیم
نقل قول:
نوشته شده توسط
eshpilen
آقا جمع اعداد متوالی که فرمول داره!
مگه شما توی مدرسه نخوندید؟
فرمولش فکرکنم اینه:
دوست عزیز شما حافظتون رفرش میشه؟ من که خودم توی صفحه قبل همینو گفتم
نقل قول:
البته اینو میدونم که مثلا
5/2*4=4i
(i رو برای علامت جمع اعداد متوالی گذاشتم :لبخند:)
دوست عزیز من فرمولی برای مجموع جمع اعداد متوالی میخوام . مثلا فرمولی برای مثال زیر :
4i+3i+2i+1i