بسم الله الرحمن الرحيم.
السلام عليكم ورحمة الله وبركاته.
أعلن انتهاء المسابقة وأن الفائز الأول هو المتاسبق الرابع الأخ مجدي المسجل باسم magdy_3.
ولقد تمكن من وضع كود كامل يتكون من 29 تعليمة فقط بالطريقة التي نعد بها.
والآن إليكم الكود النهائي:
كود:
#define sw1 porta.f0
#define sw2 porta.f1
#define is ==
#define click 0
////////////////////////////////////////////////////////////////
void main()
{
porta=portb=trisb=0;
trisa=3;
while(porta<12)
{
delay_ms(200);
porta+=((portb.f7)*4);
portb=(portb<<1)+(!portb);
}
do
{
delay_ms(200);
porta-=((portb.f0)*4);
portb=(portb>>1)+((!portb)*128);
}
while((porta<12)+portb);
while(1)
{
if(sw1 is click)
{
delay_ms(25);
portb=(portb<<1)+(!portb);
while(!sw1){}
delay_ms(25);
}
if(sw2 is click)
{
delay_ms(25);
portb=(portb>>1)+(!portb*128);
while(!sw2){}
delay_ms(25);
}
}
}
بالنسبة للسطر:
كود:
while((porta<12)+portb);
إن اعتبرتم أن بداخل القوسين شرط واحد فسيكون الكود 29 تعليمة.. أما إن اعتبرتموه شرطين فسيكون الكود 30 تعليمة.
في هذا الكود تمكن الأخ مجدي من استخدام porta كمتغير... وهذا الذي ساعده على تقليل عدد التعليمات... كما أن مشتاق الله تمكن من الوصول لنفس الفكرة لكنه لم يتمكن من تقليل عدد التعليمات لهذا القدر.
في المشاركات القادمة إن شاء الله سأستعرض أكواد الفائز الثاني والثالث والرابع والخامس والسادس... وسأستعرض أول كود تقدم به الأخ مجدي لأنظر هل ستستطيعون استنباط الأخطاء الخفية التي كانت فيه؟!!
أستاذ عريبي محمود...
لقد حان الوقت لأجيب على سؤالك الذي سألته في أول المسابقة عن لماذا لا يجوز وضع مقاومة رفع على A4 ؟
أفضل فكرة لتقليل عدد الأكواد هي استخدام porta كمتغير.
هناك 2 بت فقط من porta يمكن الاستفادة منهم وهم A2 و A3 .
فإذا وضعنا مقاومة رفع على A4 فسيكون هناك 3 بت يمكن الاستفادة منهم.
كان التحدي هل تستطيع استخدام 2 بت فقط لأداء الوظيفة؟
أرجو أن تكونوا استمتعتم واستفدتم من هذه المسابقة.
لقد كلفتني هذه المسابقة الكثير من الوقت والجهد الذهني والتركيز والتدبر... أما عن الجهد الذهني والتركيز والتدبر فلا أحزن على ذلك لأن هذه مُتْعَتِي.. فقد استمتعت كثيرا وأنا أعصر دماغي في التركيز وتدبر أكواد المتسابقين لأفهم كيف كان يفكر هذا المتسابق وهل أخطأ وهل هناك ما هو أفضل من ذلك وهل هناك تعليمة يمكنه حذفها لا فائدة منها؟؟
أتمنى أن يتقدم أحد الأعضاء بمسابقة مثل هذه.
انتظروا المشاركات القادمة التي أذكر فيها المزيد من الأكواد.
والسلام عليكم ورحمة الله وبركاته.