{"id":207,"date":"2013-12-09T21:40:51","date_gmt":"2013-12-09T21:40:51","guid":{"rendered":"http:\/\/enginmercan.com\/?p=207"},"modified":"2013-12-29T16:11:05","modified_gmt":"2013-12-29T16:11:05","slug":"sleepsort-hem-de-bf-ile","status":"publish","type":"post","link":"https:\/\/enginmercan.com\/?p=207","title":{"rendered":"Sleepsort (hem de BF ile!)"},"content":{"rendered":"<p>Favori s\u0131ralama algoritmalar\u0131m aras\u0131nda bulunan sleep sort&#8217;u sizlerle payla\u015fmak istedim. <\/p>\n<p>S\u0131ralama algoritmas\u0131 nedir? Bir liste al\u0131r, size listenin s\u0131ralanm\u0131\u015f halini geri verir. Bir \u00e7ok farkl\u0131 t\u00fcr\u00fc var, yan\u0131l\u0131yor olabilirim ama \u015fu an quick sort en iyisi (en az\u0131ndan genel bir makinada \u00e7al\u0131\u015fabilen). Quick sort&#8217;u heap sort ve insertion sort ile birle\u015ftirip intro sort isminde daha iyi bir algoritma (intro sort) \u00fcretilmi\u015f ve \u015fu an da da gnu C++&#8217;\u0131n sorting algoritmas\u0131 olarak kullan\u0131l\u0131yor (quick sort&#8217;a sava\u015f a\u00e7\u0131p hezimete u\u011fray\u0131nca \u00f6\u011frendi\u011fim bir bilgi :() <a href=\"http:\/\/en.wikipedia.org\/wiki\/Introsort\">Wiki<\/a>&#8216;ye g\u00f6re .net de ge\u00e7mi\u015f.<\/p>\n<p>Neyse, sleep sort. Sleep sort ise espri i\u00e7in yap\u0131lm\u0131\u015f bir s\u0131ralama algoritmas\u0131. Nas\u0131l \u00e7al\u0131\u015f\u0131yor derseniz her eleman i\u00e7in bir thread a\u00e7\u0131yor, her thread input de\u011feri kadar uyuyor ve eleman\u0131 ekrana bast\u0131r\u0131yor. Mesele input 1 5 4 ise 3 thread a\u00e7\u0131l\u0131yor. \u0130lk thread 1 saniye uyuyup ekrana 1 bas\u0131yor, 3 saniye sonra 4&#8217;\u00fcn thread e geliyor ve ekrana 4 bas\u0131yor. Son olarak da 1 saniye sonra 5&#8217;in thread i ekrana 5 bas\u0131yor. Dahiyane bir fikir! \u0130lk 4chan\/<a href=\"http:\/\/dis.4chan.org\/read\/prog\/1295544154\">prog<\/a>&#8216;da \u00e7\u0131km\u0131\u015f idi ve fena geyi\u011fi d\u00f6nm\u00fc\u015ft\u00fc. <\/p>\n<p>Bu da benim brainfuck implementasyonum.<\/p>\n<pre>>>>>>,[[->+>+<<]>+>[-\r\n<<+>>]++++++++[-<----\r\n-->]>>+<+[->>>>>+<<<<\r\n<]>>,]>>>[<<<<[<<<[->\r\n>+<<[->+>[-]<<]]>[-<+\r\n>]>[-<<<.>>>>->>>>>[>\r\n>>>>]<-<<<<[<<<<<]+<]\r\n<<<<]>>>>>[>>>>>]<]\r\n<\/pre>\n<p>Teknik olarak string sort ediyor, 193182 gibi bir \u015fey girin 112389. Ama araya istedi\u011finiz karakteri serpi\u015ftirebilirsiniz, ascii de\u011ferine g\u00f6re sort edecektir :D<\/p>\n<p>Bu neden sleep sort derseniz, benzer bir mant\u0131kta \u00e7al\u0131\u015fmakta. Array i input edince her iterasyonda eleman\u0131 tek tek azaltmaya ba\u015fl\u0131yor ve eleman\u0131n de\u011feri 0 a d\u00fc\u015f\u00fcnce eleman\u0131n (bir kopyas\u0131n\u0131) ekrana bast\u0131yor. Kod boyutu olarak olduk\u00e7a k\u00fc\u00e7\u00fck oldu ve muhtemelen daha da k\u00fc\u00e7\u00fclt\u00fclebilir.<\/p>\n<p>Bu kodu biraz'da <a href=\"http:\/\/en.wikipedia.org\/wiki\/Grace_Hopper\">Grace Hopper<\/a>'\u0131n do\u011fum g\u00fcn\u00fc i\u00e7in yazay\u0131m dedim. Kendisi programlama dillerinin makineden \u00e7ok insana yak\u0131n olmas\u0131n\u0131n gerekti\u011finin savunucular\u0131ndan. \u015eu anda insan gibi kod yaz\u0131yorsak kendisinin etkisi vard\u0131r. \u015eu videosunu izleyin derim, \u00e7ok ilgin\u00e7 bir insan<\/p>\n<p><iframe loading=\"lazy\" title=\"Grace Hopper on Letterman\" width=\"640\" height=\"480\" src=\"https:\/\/www.youtube.com\/embed\/1-vcErOPofQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>Yak\u0131n zamanda daha ileri bir brainfuck dersi yazmak istiyorum, s\u0131k kulland\u0131\u011f\u0131m BF \u00fczerinde array benzeri kullanmaya izin veren bir y\u00f6netmi anlataca\u011f\u0131m. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Favori s\u0131ralama algoritmalar\u0131m aras\u0131nda bulunan sleep sort&#8217;u sizlerle payla\u015fmak istedim. S\u0131ralama algoritmas\u0131 nedir? Bir liste al\u0131r, size listenin s\u0131ralanm\u0131\u015f halini geri verir. Bir \u00e7ok farkl\u0131 t\u00fcr\u00fc var, yan\u0131l\u0131yor olabilirim ama \u015fu an quick sort en iyisi (en az\u0131ndan genel bir makinada \u00e7al\u0131\u015fabilen). Quick sort&#8217;u heap sort ve insertion sort ile birle\u015ftirip intro sort isminde daha [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,3],"tags":[],"class_list":["post-207","post","type-post","status-publish","format-standard","hentry","category-bf","category-ff"],"_links":{"self":[{"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/posts\/207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/enginmercan.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=207"}],"version-history":[{"count":8,"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/posts\/207\/revisions"}],"predecessor-version":[{"id":215,"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/posts\/207\/revisions\/215"}],"wp:attachment":[{"href":"https:\/\/enginmercan.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enginmercan.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enginmercan.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}