Sypro Mesaj tarihi: Aralık 10, 2007 Paylaş Mesaj tarihi: Aralık 10, 2007 Elimizde böyle bir imaj var, 1'den 8'e kadar rakamları uygun yerlere yazmak istiyoruz. Her rakam 1 kere yazılcak ve ardışık iki rakamın birbiri ile bağlantısı olmayacak. i$in yazılım ve donanım ile ilgili kısmına gelicek olursak, bu bahsedilenlerin hepsi C++ ile yapılacak. Bi kaç denemeden sonra "Array" ile olabileceğine karar verdik lakin önce 1 3 5 7 'yi sonra 2 4 6 8 'i kendi arasında diziler haline getirip sonra arasından random birini çektirerek ve her sonucu bi yere kaydettirip eğer sonuç ba$arısız ise bir sonraki denemede o sonucu hesaba katamamasını sağlatmayı amaçladık. lakin okurken bile bu kadar uzun gelen bi$ey yazarken çok daha yorucu olabileceği için farklı fikirler arayı$ına çıkmayı uygun gördüm. Bu konu ile ilgili her türlü mantıklı fikre açık olmak ile beraber te$ekkürü $imdiden borç bilirim.edik: raham değil rakam tabi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aktiftablet Mesaj tarihi: Aralık 10, 2007 Paylaş Mesaj tarihi: Aralık 10, 2007 Öyle 2 diziyle olacağına ihtimal vermiyorum, olur belki ama mantıklı olmaz, güzel olmaz vs. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Volfied Mesaj tarihi: Aralık 10, 2007 Paylaş Mesaj tarihi: Aralık 10, 2007 C++ da bu tur seyleri yapmak guzel olmuyor. SML de yazabilir miyiz :) Continuation lar ile 2 degil ama az bi satir sayisiyla halledilebilir. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sypro Mesaj tarihi: Aralık 11, 2007 Konuyu açan Paylaş Mesaj tarihi: Aralık 11, 2007 sorun C++ olması ztn :) yukarda geçen yol için bi de database olu$turup ordan çaartmak falan gerekeceği için cidden çok uzun olcak ve uğra$ılmaz bi hal alcak. C++ için öneri varsa halen açığım. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
BonePART Mesaj tarihi: Aralık 11, 2007 Paylaş Mesaj tarihi: Aralık 11, 2007 abi bisi sorcam ama simdi 8 tane delik war 8 tanede sayi bu durumda olabilicek opsiyon sayisi 8 ! olduugndna 40320 adet sayi dizisi olacagindan dirke random atatp deneseni zolmuyo mu her delige bi sayi atayip baglanilari yazin mesela ilk delik 1 den 2 3 4 e -1 +1 olmucak 2 den neyse iste diye direk randomlayip blsun bilgisayar Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Volfied Mesaj tarihi: Aralık 11, 2007 Paylaş Mesaj tarihi: Aralık 11, 2007 bone un dedigini pseudocode a parse eyleyelim: 1 den 8 e tum permutationlari yarat tablo soyle: be acfh dg kurallarimizi belirleyelim bol bol switch in ifin olacak c - abdefg ile gibi... bi function da bunu kontrol edersin sonra her permutation i a dan h ye oturtup check ediceksin, bulamadigi anda aticaksin bi sonrakini yapacaksin (permutation yaratmak icin algoritma kitabina bak, recursive function ile kolayca yaratabilirsin, hatta memory efficient olmak icin compute_next_permutation da yazabilirsin hepsini saklamak yerine deterministic olarak sorunu cozebilirsin yani :), ki check ederken failure aninda break edersen time efficiency de saglamis olursun. Continuation ile yapmani gene de tavsiye ederim herhangi bir functional dilde, cok yardimi dokunur sana programci olarak Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
BonePART Mesaj tarihi: Aralık 11, 2007 Paylaş Mesaj tarihi: Aralık 11, 2007 volfi gelme bana bole pseudo codela felan bildigin deneyerek cozcen lan iste eauhuheauhea 40320 tane permutasyonun her birini 24 *2 adet olay icin check etcen ki saymaya usendim ama yarisi felan gider sanirim yane 1den 2 yeyi +1 ve -1 icin check edince zaten 3 den 1 i chek etmeye gerek yok fean o kadar iste Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aquila Mesaj tarihi: Aralık 11, 2007 Paylaş Mesaj tarihi: Aralık 11, 2007 bu soruyu gecenlerde baska biri daha sormamis miydi? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Gazanfer Mesaj tarihi: Aralık 11, 2007 Paylaş Mesaj tarihi: Aralık 11, 2007 cevap: - 3 5 - 7 1 8 2 - 4 6 - ama c ile nasıl yaparsın bilmem. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Volfied Mesaj tarihi: Aralık 11, 2007 Paylaş Mesaj tarihi: Aralık 11, 2007 bone bilgisayara al bunu random sayi cek dene diyemiyosun dersin ama bi mantigi yok, randomness bu sonucta, onceden denedigin sey bi daa gelebilir karsina Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Gazanfer Mesaj tarihi: Aralık 11, 2007 Paylaş Mesaj tarihi: Aralık 11, 2007 c++ bilmiyorum ama php ile çözdüm. çok yavşak oldu kod, sayıların sırasını değiştirip değiştirip deniyo, hiç optimize falan değil, ama iş görüyo. shuffle etmek yerine kendi olayınızı koyarsanız çok daha optimize olur. edit: kod hatalı şu an, çözüme ulaşsa bile olmadi diyor, düzeltecek vaktim yok şu an. ama kodu silmiyorum, işinize yarar belki. php kodu <?php $matrix = array(); $numbers = array(1, 2, 3, 4, 5, 6, 7, 8); $solved = 0; echo("Basliyoruz.<br>"); while ($solved == 0) { shuffle($numbers); echo("Denenen siralama: "); for ($k = 0; $k <= count($numbers); $k++) { echo($numbers[$k]." "); } $current_number = 0; for ($j = 0; $j <= 2; $j++) { for ($i = 0; $i <= 3; $i++) { if (!($i == 0 && $j == 0) && !($i == 3 && $j == 0) && !($i == 0 && $j == 2) && !($i == 3 && $j == 2)) { $matrix[$i][$j] = $numbers[$current_number]; $current_number++; } } } $error = 0; $numbers = array(1, 2, 3, 4, 5, 6, 7, 8); if ($error == 0) { for ($j = 0; $j <= 2; $j++) { for ($i = 0; $i <= 3; $i++) { if (!($i == 0 && $j == 0) && !($i == 3 && $j == 0) && !($i == 0 && $j == 2) && !($i == 3 && $j == 2)) { $value = array_search($matrix[$i][$j], $numbers); if ( ($matrix[$i+1][$j] == $numbers[$value+1]) || ($matrix[$i+1][$j] == $numbers[$value-1]) || ($matrix[$i-1][$j] == $numbers[$value+1]) || ($matrix[$i-1][$j] == $numbers[$value-1]) || ($matrix[$i][$j+1] == $numbers[$value+1]) || ($matrix[$i][$j+1] == $numbers[$value-1]) || ($matrix[$i][$j-1] == $numbers[$value+1]) || ($matrix[$i-1][$j-1] == $numbers[$value-1]) || ($matrix[$i-1][$j-1] == $numbers[$value+1]) || ($matrix[$i-1][$j+1] == $numbers[$value-1]) || ($matrix[$i-1][$j+1] == $numbers[$value+1]) || ($matrix[$i+1][$j-1] == $numbers[$value-1]) || ($matrix[$i+1][$j-1] == $numbers[$value+1]) || ($matrix[$i+1][$j+1] == $numbers[$value-1]) || ($matrix[$i+1][$j+1] == $numbers[$value+1]) ) { $error = 1; } } } } echo("Olmadi. <br>"); } if ($error == 0) { $solved = 1; } } if ($solved == 1) { echo("Cozume ulasildi: <br>"); for ($j = 0; $j <= 2; $j++) { for ($i = 0; $i <= 3; $i++) { echo($matrix[$i][$j]." "); } echo("<br>"); } } ?> Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Aralık 11, 2007 Paylaş Mesaj tarihi: Aralık 11, 2007 - 1 2 - 3 4 5 6 - 7 8 - şeklinde arrayin üyeleri sıralanacak. function boolean KomsuKontrol() // arrayin geçerlilik kontrolü { 1. üyenin 2-3-4-5 ile 2. üyenin 4-5-6 ile 3. üyenin 4-7 ile 4. üyenin 5-7-8 ile 5. üyenin 6-7-8 ile 6. üyenin 8 ile arasındaki fark > 1 ise return true, değilse return false (burada mutlak değer kullan) (hepsini kontrol etmene gerek yok bu arada, sadece kendinden büyük olanlarla kontrol etsen yeter, çünkü 1-3 arasını kontrol edince 3-1i de etmiş oluyorsun) } function Main() { iç içe for döngüleriyle sırayla her olası arrayi gez ve önce arraykontrol'den sonra komsukontrol'den geçir. ikisinin de true döndürdüğü anda buldun demek. } function boolean ArrayKontrol(array) array'in üyeleri tekilse true, değilse false döndür yalnız, unutmamak lazım, en az iki doğru çözüm var. (inverted) yalnız bu çok ilkel bir çözüm yöntemi. herhangi bir teknik yaklaşımı yok. bildiğini deneme yanılma Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Gazanfer Mesaj tarihi: Aralık 11, 2007 Paylaş Mesaj tarihi: Aralık 11, 2007 tekrar php kodu, bu sefer düzelttim, gıcır gıcır oldu. (yine harala gürele dalıyo tabi ama en azından çalışıyo.) ---------Deneme 5257 matrix yapiyom... matrix yaptim. sayilari karistiriyom... sayilari karistirdim: 4 8 1 2 6 3 7 5 matrix dolduruyom... matrix doldurdum. matrixi kontrol ediyom... (2~1) matrixi kontrol ettim. olmadi... ---------Deneme 5258 matrix yapiyom... matrix yaptim. sayilari karistiriyom... sayilari karistirdim: 5 3 2 8 1 7 6 4 matrix dolduruyom... matrix doldurdum. matrixi kontrol ediyom... matrixi kontrol ettim. oldu gibi lan? Cozume ulastim! -7 5 3 -7 2 8 1 7 -7 6 4 -7 php kodu <?php set_time_limit(360); $matrix = array(); $numbers = array(1, 2, 3, 4, 5, 6, 7, 8); $trials = array(); function set_matrix() { global $matrix; echo("matrix yapiyom... "); for ($j = 0; $j <= 2; $j++) { for ($i = 0; $i <= 3; $i++) { if (!($i == 0 && $j == 0) && !($i == 3 && $j == 0) && !($i == 0 && $j == 2) && !($i == 3 && $j == 2)) { $matrix[$i][$j] = 0; } else { $matrix[$i][$j] = "-7"; } } } echo("matrix yaptim."); echo("<br>"); } function fill_matrix() { global $matrix; global $numbers; echo("matrix dolduruyom... "); foreach ($numbers as $number) { $used = 0; for ($j = 0; $j <= 2; $j++) { for ($i = 0; $i <= 3; $i++) { if ($matrix[$i][$j] == 0 && $used == 0) { $matrix[$i][$j] = $number; $used = 1; } } } } echo("matrix doldurdum."); echo("<br>"); } function check_matrix() { global $matrix; echo("matrixi kontrol ediyom... "); $numbers2 = array(1, 2, 3, 4, 5, 6, 7, 8); $status = 1; for ($j = 0; $j <= 2; $j++) { for ($i = 0; $i <= 3; $i++) { $key = array_search($matrix[$i][$j], $numbers2); if ($matrix[$i][$j] > 0) { $neighbors = array($matrix[$i+1][$j], $matrix[$i-1][$j], $matrix[$i][$j+1], $matrix[$i][$j-1], $matrix[$i-1][$j+1], $matrix[$i-1][$j-1], $matrix[$i+1][$j-1], $matrix[$i+1][$j+1]); foreach ($neighbors as $neighbor) { if (in_array($neighbor, $numbers2) && ($neighbor == $numbers2[$key-1] || $neighbor == $numbers2[$key+1])) { echo("(".$neighbor."~".$numbers2[$key].") "); $status = 0; break(3); } } } } } echo("matrixi kontrol ettim. "); if ($status == 0) { echo("olmadi... "); } if ($status == 1) { echo("oldu gibi lan? "); } echo("<br>"); return ($status); } function show_matrix() { global $matrix; for ($j = 0; $j <= 2; $j++) { for ($i = 0; $i <= 3; $i++) { echo($matrix[$i][$j]." "); } echo("<br>"); } } function mix() { echo("sayilari karistiriyom... "); global $numbers; global $trials; array_push($trials, $numbers); while (in_array($numbers, $trials)) { shuffle($numbers); } echo("sayilari karistirdim: "); for ($k = 0; $k < count($numbers); $k++) { echo($numbers[$k]." "); } echo("<br>"); } $trial = 1; $solved = 0; while ($solved == 0) { echo("---------Deneme ".$trial."<br>"); set_matrix(); mix(); fill_matrix(); if (check_matrix() == 1) { $solved = 1; } $trial++; } if ($solved == 1) { echo("Cozume ulastim! <br>"); show_matrix(); } if ($solved == 0) { echo("Cozume ulasamadim, ama sorun nerde bilmiyorum ki ben..."); } ?> Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar