Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trCommodoreCommodore YazılımC64 BASIC Kısa Kod Yarışması - irqHack64 Ödüllü
Sayfa: 1 ... 8 9 [10] 11 12 ... 30   Aşağı git
Yazdır
Gönderen Konu: C64 BASIC Kısa Kod Yarışması - irqHack64 Ödüllü  (Okunma Sayısı 243057 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #135 : Mayıs 08, 2017, 03:46:40 ÖÖ »

@skate, aynı anda yazmışız.

Senin kodu alıp gelişine vuruyorum. Kahkaha

Kod:
0inputa:fori=1toa
1d%=rnd(1)*9:ife(d%)goto1
2printchr$(d%+49);:e(d%)=1:next
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #136 : Mayıs 08, 2017, 04:10:02 ÖÖ »

Süper optimizasyonlar ve kafa yormalar. Ben de ilk olarak benzer bir kod yazdım. Yani 1-9'a dizi init ederek başladım, sonrasında da random swap yaptım. Algoritma çok benzerdi ama baktım ki mevcut 3 satırlık kod daha kısa kalıyor, ben de onu kısaltmayı tercih ettim. Henüz üzerine yeterince düşünmedim, yarın düşüneceğim boş vakit bulduğum gibi.

Tek satır olma ve O(n) zamanda çalışma avantajı gibi şeylerle benim kalbimde bu çözüm winner. Ancak karakter sayısı olarak baktığımızda şu anki 79 karakter dediğin versiyon 0'dan sonraki boşlukla 80 karakter olarak sayılıyor. Çok satırlı çözümler daha kısa. Daha da kısalabilirler gibi geliyor bana. Dediğim gibi yarın salim kafayla bakacağım.
Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #137 : Mayıs 08, 2017, 04:11:05 ÖÖ »

An itibariyle en kısası bu.

@skate, aynı anda yazmışız.

Senin kodu alıp gelişine vuruyorum. Kahkaha

Kod:
0inputa:fori=1toa
1d%=rnd(1)*9:ife(d%)goto1
2printchr$(d%+49);:e(d%)=1:next
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #138 : Mayıs 08, 2017, 04:12:09 ÖÖ »

@delimawi : Son çözüm (sondan bir önceki) güzel ama kısalmamış. Ya da siz sayarken farklı bir yöntem kullanıyorsunuz.

1. Notepad'de courier font seçilir
2. Kod yapıştırılır.
3. Satır sonları silinir.

Senin shuffle yapan kod 80 karakter çıkıyor. Satır başından sonra gelen boşluk sayılıyor. Tek satıra indirme hevesini kırıyor gerçi bu, Wizofwor tekrar değerlendirsin
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #139 : Mayıs 08, 2017, 04:16:17 ÖÖ »

Ben substition cipher tarzi 1-9 arasi rakamlari tersinir 1-9 arasi baska rakamlara esleyecek formul uretmeye calistim. Bir seed ile tek dongude halledecektim. Ama ya kisa olmuyor ya da dagilim cok zayif kaliyor.

Ek. Ha bi de xor olsa basicde, rakamlar 1-9 degil 0-7 arasi olsa neler yapilir neler... Bu seri bitince bunun asm komposunu da yapalim...
« Son Düzenleme: Mayıs 08, 2017, 04:21:07 ÖÖ Gönderen: delimawi » Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #140 : Mayıs 08, 2017, 04:17:49 ÖÖ »

I_r_on o kodu en kisa olarak koymadim. Farkli ve tek satirlik zarif bir cozum olarak simdilik paste ettim...
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #141 : Mayıs 08, 2017, 04:54:11 ÖÖ »

70 karakterlik içime sinen çözüm

Kod:
0 inputa:fori=1toa
1 d=rnd(1)*9:one(d)goto1:poke1023+i,d+49:e(d)=1:next

69 karakterlik içime sinmeyen çözüm

Kod:
0 inputa:fori=1toa
1 d=rnd(1)*9:one(d)goto1:poke4^5+i,d+49:e(d)=1:next

Yazmaya 2. karakterden başlayınca özellikle ilk karakter doluysa kötü görünüyor. Ama her ikisi de çıktıyı ekrana yazıyor.

Demin on...goto kullanmamın amacı 3 satırı 2 satıra indirmekti. Yanlışlıkla 3 satırlık çözümü paylaşmışım yine. Burada 2 satırlık versiyonu var. if...else simülasyonu böyle yapılıyor tek satırda.

Bu bence daha da kısalabilir. Minimuma ulaştığını hissetmiyorum.
Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #142 : Mayıs 08, 2017, 05:08:42 ÖÖ »

O(n)lik çözümden infinite çalışan çözüme yolculuk. Kahkaha

67 karakter

Kod:
0 inputa
1 d=rnd(1)*9:one(d)goto1:e(d)=1:poke1023+a,d+49:a=a-1:goto1
Logged
AmigaMan
Deneyimli
*****
Mesaj Sayısı: 636



Üyelik Bilgileri
« Yanıtla #143 : Mayıs 08, 2017, 05:13:03 ÖÖ »

Ellerine sağlık süper çözüm olmuş
Logged

Amiga ölmedi, efsane uyuyor
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #144 : Mayıs 08, 2017, 05:17:19 ÖÖ »

Sonunda 4^5'i de kullanabildim, oh be Kahkaha

66 karakter

Kod:
0 inputa
1 d=rnd(1)*9:one(d)goto1:e(d)=1:a=a-1:poke4^5+a,d+49:goto1
Logged
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #145 : Mayıs 08, 2017, 09:57:03 ÖÖ »

@skate, dün gece fark etmemişim. "on goto" süper bir "if else" eşleniği olmuş. Çok sevdim bunu...

Gel gelelim çözümler bana biraz sıkıntılı geldi. Bence 1024 adresini kullanmak doğru değil. RUN edildiğinde cursor aşağılarda ise scroll edecek görünmeyeek sonuç. Sonsuz döngüye giren kod için ise hiç yorum yapmıyorum. Kahkaha
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
blackturk
Uzman
*****
Mesaj Sayısı: 1.284



Üyelik Bilgileri
« Yanıtla #146 : Mayıs 08, 2017, 10:10:43 ÖÖ »


  Bir kaç sohbetimizde , skate'in  bir sözü vardı."Aklın yolu birdir." .on x goto 1  şeklinde bir tasarım yapmıştım.demek ki atladığımız yerlerde varmış.Next question plase ?
Logged

A1200 | APOLLO 1240 32 MB | CNET PCMCIA | SYSINFO SPEED TEST 30 MIPS
SM1,SEGA MEGA CD,SM2,SMS II,Sega Saturn Mod ve AR 4MB,PSX Mod ve Mpeg ,PSX2 ,SNES ,ATARI 800XL,SPECTRUM 128K +2,YAMAHA CX5M MSX,ATARI 520 STFM,1040 STF,C64,C128,1541 II,1571,RAM 1764 ,A500,A500+,A600,A590,IDE68k,2X1084S,1084P
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #147 : Mayıs 08, 2017, 10:11:43 ÖÖ »

@delimawi: Cursor en alttayken de çalıştırsan problem çıkmaz. Input'u aldıktan sonra scroll edip, ondan sonra ekran adreslerine map ediyor. O aşamadan sonra da ekran tekrar kaymıyor.

Loop konusuna gelince ben size optimizasyon söz konusu olduğunda bu tür yöntemleri legal olarak hep kullanırım ki programın çalıştıktan sonra çıkmasının gerekmesi bence "aksi belirtilmediği sürece" bir gereklilik değildir. Run/stop bunun için var. "Print komutunu kullanma zorunluluğu" ya da "Basic'e dönme zorunluluğu" gibi bir şey olmadığı sürece ben bir aksilik göremiyorum.

Ben ilk başta bu mevzuya değil, üst satırda junk data varsa o satırın silinmiyor olmasına takılmıştım. Ama sonra print içeren çözümlerde de aynı sorun olduğunu fark ettim. Ekranda dolu olan bir satıra denk getirdiğin sürece print de o satırı temizlemiyor sonuç olarak.

Son olarak loop memory'i geriye doğru doldurmaya devam ediyor ve bir noktadan sonra crash ediyor gibi bir durum da söz konusu değil. 9 digit sonrası yeni unique bir digit yaratılamadığı için program "on goto"da kilitleniyor, memory junk data ile dolmuyor.
Logged
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #148 : Mayıs 08, 2017, 10:20:57 ÖÖ »

Evet, sonsuz döngülü olan en altta çalıştırılınca problem çıkarmaz, zira programdan çıkamadığı için scroll edemeyecek. Kahkaha Ben o çözüm için değil sonsuz döngülü olmayan çözüm için yazmıştım.

Sonsuz döngülü olmayan çözümüne sadece scroll ederse ekrandan kaçacak konusunda itirazım var zaten. Poke kullanmana değil.

Bu arada ilgili çözümüne +1 byte ekleyerek scroll edince ekrandan kaçamayacak hale getiriyorum. 71 byte.

Kod:
0 inputa:fori=1toa
1 d=rnd(1)*9:one(d)goto1:printchr$(d+49);:e(d)=1:next
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #149 : Mayıs 08, 2017, 11:25:52 ÖÖ »

@delimawi: bu arada infinite loop bana 3 karakter kazandırıyor. goto1 yerine ifathen1 yazacak olursak olması gerektiği gibi çıkıyor da. senin 71 karakter versiyon for'suz da çalışabiliyor aynı şekilde;

Kod:
0 inputa
1 d=rnd(1)*9:one(d)goto1:a=a-1:printchr$(d+49);:e(d)=1:ifathen1

fark nerede dersen benim versiyon goto1 ile daha da kısalabiliyor. ama print kullanan versiyon ifathen1 yerine goto1 kullanamıyor. poke kullanımı 2, infinite loop 3 toplamda 5 byte avantajı var. ama ben 66 byte'ın da final olduğunu düşünmüyorum. işler yoğun, bir rahatlasın kafa yorucam. çok değil ama 1-2 byte daha uçar diye düşünüyorum.
Logged
Sayfa: 1 ... 8 9 [10] 11 12 ... 30   Yukarı git
Yazdır
Gitmek istediğiniz yer: