الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حاول تكتب البرنامج التالي باي لغه

بدأه ibr_exn في 5 مارس 2009 · 16 رد · 3,359 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

سؤال جميل في الخوارزميات

الذي يعرف الحل يرسل على الخاص للسماح للاعضاء بالتفكير في الحل

اكتب برنامج باي لغة برمجه ( او خوارزمية ) يقوم بطباعة نفسه ( طبعا دون اللجوء الى نظام التشغيل او ملف المصدر -_- )

ساضع الحل بعد اسبوع ان شاء الله

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#2

جزاك الله خيراً

لكن ما معنى يطبع نفسه؟ يطبع النافذة أو الكود أو....

شكراً لك :)

هذه الجملة خاطئة  :wacko: 


#3

أرجو التوضيح أكثر

قولوا لا اله الا الله تفلحوا

ومن يبتغي غير الاسلام دينا فلن يقبل منه وهو في الاخرة من الخاسرين- صدق الله العظيم

#4

اسف للتاخير

بكل بساطة عندما تنفذ البرنامج يقوم بطباعة نفس الكود الذي كتبته . طبعا مثل ما قلت دون اللجوء لنظام التشغيل بطباعة ملف المصدر

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#5

ما شاء الله

لم اكن اتوقع ان يهتم الخبراء بهذا السؤال :lol:

وصلت محاولات من كل من :

ابو خالد السوري : الحل بلغة الجافا

فهد الشلوي : الحل بلغة سي ++ يبدو انك استخدمت الملفات !!!

مش عارف حاسس انكم معقدنيها :wacko:

يوجد حل ابسط بكثير B)

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#6

الاخ ياسر حلك صحيح

كنت اتمنى لو كنت انت من قام بالحل فالفكرة في غاية البساطة وكل ما كانت تحتاجه مجرد اعطاءها الوقت في التفكير فيها

منتظر بقية الاعضاء

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#7

ممكن يكون بسيط لكنه غير منطقي وأعتقد أنك تعلم ما أتكلم عنه وممكن يكون غير بسيط لكن منطقي.

منطقي عندما لا يكون يتضمن النص البرمجي مكتوب مرة أخرى بشكل ما في متغير لأنه سوى هذا فهو بسيط لكنه غير منطقي بالمرة.

أرسلته لك perl، بسيط وغير منطقي :D

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8

اشكر كل من تفاعل مع السؤال وشارك في الحل .

ساعطي شرح بسيط للموضوع ومن ثم ارفق حلول الشباب ( للاسف كانت المشاركات معدوده ) :

فكرة الحل تعتمد على نظرية الRecursion فيمكن كتابة برنامج ليقوم بعمل معين ويطبع وصف ما قام به . لحل هذا السؤال يتم تقسيم البرنامج الى جزئين :A و B .

ِ A: يقوم بحفظ الجزء B

B: يقوم بتنفيذ الجزء A

Begin
X=“Print “Begin”, /nl, “X=“” , X , /nl ,”Print”” , X , , /nl , ”End”“	
Print “Begin”, /nl, “X=“” , X , /nl ,”Print”” , X , , /nl , ”End”
End

لاحظ ان : اخر خطوة في الخوارزم السابق هي اعطاء المتغير X قيمته . طبعا ستحتاج اكواد الASCII للتغلب على مشكلة طباعة بعض الرموز .

يعني ببساطة اكتب البرنامج الذي تحب ومن ثم اخزنه في المتغير X

ولمزيد من المعلومات :

هذه البرامج مشهورة باسم Quine ويوجد موقع يحوي الحل بمعظم لغات البرمجه :

http://www.nyx.net/~gthompso/quine.htm

حلول الشباب :

===================

أبو خالد السوري

===================

محاولة بلغة الجافا لحل لغز البرنامج الذي يطبع نفسه ..

الفكرة ببساطة :

تخزين أسطر البرنامج في مصفوفة ..

طباعتها سطر سطر ,, و في نقطة معينة طباعتها كاملة مرة ثانية ..

package mainPkg;
public class Test5 {
static String text[] = {
"package mainPkg;",
"public class Test5 {",
"static String text[] = {",
"",
"};",
"	public static void main(String[] args) {",		
"		for (int i=0;i<text.length; i++) {",
"			if (text.length() == 0){",
"				for (int j=0;j<text.length; j++) {",
"					quote(text[j]);",
"				}",
"			} else",
"				System.out.println(text);",
"		}",
"	}",	
"	static void quote(String s){",
"		System.out.print((char)34+s+(char)34+(char)44+(char)10);",
"	}",	
"}",
};	
	public static void main(String[] args) {		
		for (int i=0;i<text.length; i++) {
			if (text.length() == 0){
				for (int j=0;j<text.length; j++) {
					quote(text[j]);
				}									
			} else
				System.out.println(text);
		}		
	}	
	static void quote(String s){		
		System.out.print((char)34+s+(char)34+(char)44+(char)10);
	}	
}

==============

فهد الشلوي :

==============

هذه محاولة بلغة السي

#include <iostream>
#include<fstream>
#include<string>
using namespace std;

void printitslef(){string line;ifstream file(__FILE__);while(!file.eof()){getline(file,line);if((line.substr(0,18)!="void printitslef()")&&(line!="printitslef();"))cout<<line<<endl;}file.close();}
int main(int argc, char *argv[])
{
printitslef();
int i,n;
cout<<"\nEnter Number n=";
cin>>n;
cin.ignore();
cout<<"i\ti^2"<<endl;
for(i=0;i<n;i++)
cout<<i<<"\t"<<i*i<<endl;

	cin.get();
	return 0;
}

حل اخر :

   
	  #include <iostream>
		using namespace std;
	  int main(int argc, char *argv[])
	  {
	  cout<<"#include <iostream>n";
	  cout<<"using namespace std;n";
	  cout<<"int main(int argc, char *argv[])n";
	  cout<<"{n";
	  cout<<"cout<<"hello arab\n";n";
	  cout<<"cin.get();n";
	  cout<<"cin.get();";
	  cout<<"return 0;n}n";
	  cout<<"hello arabn";
	  cin.get();
	  return 0;
	  }

=============

ياسر YDVIPER

=============

The methodology is based on a pointer *s (character array) and using ASCII Symbolization to print the code.
Here;
(34) is the ASCII for a quotation mark.
(10) is the Ascii for a line-feed.

------------
#include <stdio.h>
char *s="char *s=%c%s%c;%cmain(){printf(s,34,s,34,10,10);}%c";
main(){printf(s,34,s,34,10,10);}
-----------

================

Xacker

================

$q='$q=%c%s%c;
printf($q,0x27,$q,0x27);';
printf($q,0x27,$q,0x27);

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#9

تمام وهذا ما تكلمت عنه، بسيط وغير منطقي :D

يبقى إضافة

#include <stdio.h>

إلى المؤشر في كود الأخ ياسر.

بالمناسبة بعض الشفرات تنقص escaping chars يبدو أنها بسبب النسخ من GCode؟ ما أتكلم عنه هو "حل آخر"

تحياتي.

تم تعديل هذه المشاركة بواسطة Xacker في 12 مارس 2009 في 10:52

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#10
اقتباس
الRecursion

مم انت تثير شهيتي يا اخي

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#11

السلآمـ عليكم :)

إذا كنت تقصد آمر الطباعة فيتم كتابته بهذه الطريقة :lol: <~ توها تتعلم وبتوريكم :blush:

بلغة المآتلاب ،،

fprintf(1,'malam7\n');
fprintf(1,'123456789\n');
fprintf(1,'matlab\n');

وشكراااااااااااااااااااااا :D

#12
ibr_exn كتب:

السلام عليكم

سؤال جميل في الخوارزميات

الذي يعرف الحل يرسل على الخاص للسماح للاعضاء بالتفكير في الحل

اكتب برنامج باي لغة برمجه ( او خوارزمية ) يقوم بطباعة نفسه ( طبعا دون اللجوء الى نظام التشغيل او ملف المصدر -_- )

ساضع الحل بعد اسبوع ان شاء الله

موضوع قديم حصل له resurrect بطريقة

انا وقفت عند نقطة عدم اللجوء الى نظام التشغيل

جميع البرامج تستخدم نظام التشغيل في عدة امور

ربما احتاج الى كتابة برنامج في boot sector

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#13
password123 كتب:

موضوع قديم حصل له resurrect بطريقة

انا وقفت عند نقطة عدم اللجوء الى نظام التشغيل

جميع البرامج تستخدم نظام التشغيل في عدة امور

ربما احتاج الى كتابة برنامج في boot sector

ما يقصده هو عدم اللجوء إلى الـFile System لقراءة السورس وإعادة طباعته أو أي طريقة مشابهة.

#15
Eisa Ayed كتب:

اتذكر انني سالت نفس السؤال عام 2009 :lol:

http://www.arabteam2...howtopic=207990

ونفس المشاركين happy.gif

آسفة للمقاطعة

bye

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#16

مع احترامي الشديد لكاتب الموضوع فهو يعرف مدى تقديري له ولكن اما أنني لم أفهم السؤال جيدا او أن السؤال غريب ولا يحمل اية أفكار خوارزميات.

الذي فهمته أن تقوم بطباعة المصدر للبرنامج ولكن أين اللغز بالموضوع!!

ءاسف على التدخل ولكن هذه المرة الاولى التي أجد سؤالا غريبا في هذه المنتدى الرائع

وشكرا

قولوا لا اله الا الله تفلحوا

ومن يبتغي غير الاسلام دينا فلن يقبل منه وهو في الاخرة من الخاسرين- صدق الله العظيم

#17
akramKamal كتب:

مع احترامي الشديد لكاتب الموضوع فهو يعرف مدى تقديري له ولكن اما أنني لم أفهم السؤال جيدا او أن السؤال غريب ولا يحمل اية أفكار خوارزميات.

الذي فهمته أن تقوم بطباعة المصدر للبرنامج ولكن أين اللغز بالموضوع!!

ءاسف على التدخل ولكن هذه المرة الاولى التي أجد سؤالا غريبا في هذه المنتدى الرائع

وشكرا

الموضوع ليس بالسهولة التي تتوقعها. :)

حاول القيام بذلك دون استخدام دوال قراءة الملفات أو ما شابه (ودون مشاهدة الحلول الموجودة :P )

هذا لغز برمجي مشهور يدعى Quine.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…