hmmm anladım hocam kusura bakmayın. Olimpiyat sorusu olduğunu zaten biliyordum fakat ne tür soruları çözmeyi hedeflediğinizi bilmiyordum. |
8 karakterli kombinasyonları Raku (eski adıyla Perl 6) kullanarak 1 anda buldurdum. Kod biraz karışık görünmekle beraber, Perl bilenlere tanıdık gelecektir. < Resime gitmek için tıklayın > |
1 saniye mi? Script dilleri bilgisayarın anasını ağlatıyormuş onu anladım ben. |
Konumuz herhangi bir temel ya da orta düzeyprogramcılık sorusunu anlaşılabilir de yalın kod ile çözmek. Senin gönderiye bakıyoruz ortada ne doğru dürüst tanımlı bir soru, ne bir kod kod yok. Sadece bir yığın anlamsız ilgisiz nesler var. Ben yalnızca onları yazarım yaparım diyorsanız, yeni konu açın. |
hocam maksatım konuyu baltalamak değildi kusura bakma kaptırmışım ![]() @elektro_gadget_ 10 karakter 8 hane (10^8) * (8 + 2) = 1,000,000,000 + 2 new line ve return karakteri. |
2^8 bitin kombinasyonunu göstermekten pek farkı yok bunun harflerin yeri değişmiyor int main() { char str[2][8]={{'A','B','C','D','E','F','G','H'},{'a','b','c','d','e','f','g','h'}}; for(int x=0;x<256;++x) { for (int i=0; i < 8; i++) printf("%c",str[x >> i & 1 == 1 ][ i ]); printf(" "); } getchar(); return 0; } çıktı
-------------- sıfırları küçük birleri büyük harf farz edersek aynı sonucu vermiş olur. void showbits(int x) { for (int i=7; i >= 0; --i) if (x >> i & 1 == 1) putchar('1'); else putchar('0'); printf(" "); } int main() { for(int x=0;x<256;++x) showbits(x); getchar(); return 0; } çıktı
|
Bende ona benzer şekilde yapmıştım. #include <stdio.h> #include <string.h> #include <stdint.h> int main(int a, char *argv[]) { char *kelime = argv[1]; int uzn = strlen(kelime); uint64_t maks = (1u << uzn) - 1; uint64_t basla = -1; do { uint64_t deger = ++basla; for(int i = 0; i < uzn; ++i) { kelime &= ~0x20; kelime |= (deger & 1) << 5; deger >>= 1; } printf("%s\n", kelime); } while(basla != maks); return 0; } |
dh ye kod yazmak eziyet yazdığım kodlar siliniyor yada saçma <span> bişeyler çıkıyor ![]() bu işlemi tek satırda yapan c kodu < Resime gitmek için tıklayın > |
Konumuz yalın kod yazmak ancak esas amaç yeni programlama yöntemlerini etkili biçimde kullanmak. Durum böyleyken sen klasik C kodu yazdın. "{" ile başlayan sıralar dışında 16 sıralık senin C kodu Perl 6'da tek sıra :)
Çalışma anı: < Resime gitmek için tıklayın > Şimdi başka bir soru: Paskal üçgenini basan kod yazınız. 5 değerinde Paskal üçgeni için örnek çıktılar:
Sola yatık de arada virgül olan, dizi operatörü içeren çıktılar da olabilir ancak böyle çıktı daha iyi görünüyor dogal olarak. Not: Paskal üçgeninin Wikipedia ile birlikte Internette birçok sitede çözümü var. |
Raku'nun tek sıra kod ile yapılabilen birnesi, C'de 17 sıralık kodla yapmanın avantajını söyle ben de C kullanmaya başlayacağım :) |
|
https://forum.donanimhaber.com//mesaj/yonlen/139500699 < Resime gitmek için tıklayın > tek satır ![]() |
Kodu denedim, güzel düşünce, C'nin for döngüsü içinde birden komut komut içerme olanağını, ASCII koduna 32 ekleyince A -> a olması, bitsel aritmetiği iyi kullanıyor ancak kod kırılgan. Benim Windows taki GCC 5.1 ile ilk denemede doğru çalışmadı. < Resime gitmek için tıklayın > |
devc++ uyarı dahi yok kod temiz ![]() < Resime gitmek için tıklayın > edit: x 256 yerine 2048 den küçükse yazman lazım. |
printf'nin parantezini yanlış yerde kapatmışım düzeltince çalıştı ancak görülebildiği ölçüde yalnızca ardışık karakterler üzerinde çalışıyor dolayısıyla örneğin "importance" gibi bir sözcük üzerinde özdeş işlemi yaptırmak olası değil: < Resime gitmek için tıklayın > Neyse, sonraki soru üzerine yorumları alayım. Paskal üçgenini en kısa nasıl kodlayabilrsiniz :) |
char str[2][8]={{'A','B','C','D','E','F','G','H'},{'a','b','c','d','e','f','g','h'}}; bu tanımlamayı şöyle de yapabiliriz char str[2][10]={{"ABCDEFGH"},{"abcdefgh"}}; c dili belli amaçlar için oluşturulmadığı halde bukadar iş çıkarması nekadar başarılı olduğunu gösteriyor. |
Bu mesaja 1 cevap geldi. Cevapları Gizle