Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

C kendi source kodunu yazdıran program


Kemarlos

Öne çıkan mesajlar

  • 2 yıl sonra ...
#include

int
main (void)
{
char *s1="#include %c%cint%cmain (void)%c{%c";
char *s2=" char *s%c=%c%s%c;%c char *s%c=%c%s%c;%c";
char *s3=" char n='%cn', q='%c', b='%c%c';%c";
char *sp=" printf(";
char *s4="%ss1,n,n,n,n,n);%c";
char *s5="%ss2,'1',q,s1,q,n,'2',q,s2,q,n);%ss2,'3',q,s3,q,n,'p',q,sp,q,n);%c";
char *s6="%ss2,'4',q,s4,q,n,'5',q,s5,q,n);%ss2,'6',q,s6,q,n,'7',q,s7,q,n);%c";
char *s7="%ss2,'8',q,s8,q,n,'9',q,s9,q,n);%ss2,'0',q,s0,q,n,'x',q,sx,q,n);%c";
char *s8="%ss3,b,q,b,b,n);%ss4,sp,n);%ss5,sp,sp,n);%c";
char *s9="%ss6,sp,sp,n);%ss7,sp,sp,n);%ss8,sp,sp,sp,n);%c";
char *s0="%ss9,sp,sp,sp,n);%ss0,sp,sp,n,n,n);%c return 0;%c}%c";
char *sx="--- This is an intron. ---";
char n='n', q='"', b='';
printf(s1,n,n,n,n,n);
printf(s2,'1',q,s1,q,n,'2',q,s2,q,n); printf(s2,'3',q,s3,q,n,'p',q,sp,q,n);
printf(s2,'4',q,s4,q,n,'5',q,s5,q,n); printf(s2,'6',q,s6,q,n,'7',q,s7,q,n);
printf(s2,'8',q,s8,q,n,'9',q,s9,q,n); printf(s2,'0',q,s0,q,n,'x',q,sx,q,n);
printf(s3,b,q,b,b,n); printf(s4,sp,n); printf(s5,sp,sp,n);
printf(s6,sp,sp,n); printf(s7,sp,sp,n); printf(s8,sp,sp,sp,n);
printf(s9,sp,sp,sp,n); printf(s0,sp,sp,n,n,n);
return 0;
}

Gençler bende bir matematik dergisinde bu soruyu görmüştüm ve internette araştırırken bunu buldum sanırım çalışıyor :D Hemde C de konu bayağı eskiymiş bu arada :)
Link to comment
Sosyal ağlarda paylaş

nedanko said:

eh orasi oyle, onun icin koca bi printf bile yeter tek satirda cozersin yani :)


aquila said:

ahaha lan her kod satirinin altina ayni kodu prinfle yazsan olur.



Son dahil ettiğin şeyi tekrar tekrar eklemen gerekir ama. Mesela

a

print a

olmaz. Ve de

a

print a, print a

da olmaz. Kısacası ekledikçe eklersin hehe. Fixed point theoremden falan bahsediyolar hangi uyuşturucunun etkisi altında bu bağlantıyı kurmuşlar bilmiyorum ama bir çeşit contraction mapping kurup bu ekleme sekansını devam ettirdikçe kodun kendisine varıyorsun gibi saçma bişey olsa gerek
Link to comment
Sosyal ağlarda paylaş

o değil de kendi kodunu modifiye edip tekrar compile eden program yazmak mümkündür herhalde değil mi?

burda cheat etmek de serbest direk source kodu okuyacak değişiklik yapıp sonra tekrar compile edecek, kendisi compile etmeyecek tabi compilerı çalıştıracak, onu çalıştırınca kendini kapatacak falan.

bu sorudan serbest çağrışım yaptım
Link to comment
Sosyal ağlarda paylaş

Ken thompson'in bir yazisinda oneriliyordu bu yanlis hatirlamiyorsam. Hatta TAOCP'de de geciyordu sozu.

Ismi quine bu olayin. Zor bir sey. Google'larsan bir suru sey bulursun ama. Bilmem ne recursive teorimine dayali olarak anlatiliyordu. Ben becerememistim kendim, kolay gelsin.
Link to comment
Sosyal ağlarda paylaş

Ardeth said:

o değil de kendi kodunu modifiye edip tekrar compile eden program yazmak mümkündür herhalde değil mi?

burda cheat etmek de serbest direk source kodu okuyacak değişiklik yapıp sonra tekrar compile edecek, kendisi compile etmeyecek tabi compilerı çalıştıracak, onu çalıştırınca kendini kapatacak falan.

bu sorudan serbest çağrışım yaptım


Mumkun tabii. Zaten source koddan executable'i cikarttiktan sonra source code'un bir olayi yok ki. Herhangi bir dosya gibi acar kodu, gerekli degisikligi yapar sonra da run eder o executable'i.
Link to comment
Sosyal ağlarda paylaş

Adam mezun olmuş ben ne diyorum... asdfasd

başlığı okuduğumda hocanın ismi ahmet koltuksuzmu diye soracaktım tam :)
bizim final sınavımızda sormuştu bu soruyu.

çok abzürd şeyler düşünme.
bi array tanımla koddaki tüm karakterleri içersin. ayrıca kod bunu yazdırsın.
bu kadar dangalak bi soru bu aslında. :)
Link to comment
Sosyal ağlarda paylaş

@Dwinz evet dostum. tanışıyo muyuz? gerçi nickimden adımın kemal olduğu belli oluyo ama..

@senko ya quinine'i çoğu kişi bilmiyo olabilir çok bilinen bişi değil ama, yazması kolay aslında, sorarken çok fazla düşünmemişim ya da düşünememişim mi artık bilmiyorum :)
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...