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 ... 24 25 [26] 27 28 ... 30   Aşağı git
Yazdır
Gönderen Konu: C64 BASIC Kısa Kod Yarışması - irqHack64 Ödüllü  (Okunma Sayısı 233802 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #375 : Haziran 03, 2017, 15:54:07 ÖS »

Yooo öyle bir kural var diye demedim, benim hoşuma gitmedi...
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.785


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #376 : Haziran 04, 2017, 23:15:59 ÖS »

143 byte'la Skate kazandı diyebilir miyiz?

Bu durumda Skate 50, delimawi 30 puan oluyor.
Logged

wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.785


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #377 : Haziran 05, 2017, 00:20:32 ÖÖ »

20 puanlık son soru: Ay'ın evreleri

8x5 karakterlik bir alanda Ay'ın evrelerini (Ay'ın 8 evresini (yeni ay, büyüyen hilal, ilk dördün, büyüyen şişkin ay, dolunay, küçülen şişkin ay, son dördün, küçülen hilal) gösteren bir program yazın.

1. Program Ay'ın evrelerini yeni aydan başlayarak sırayla gösterecek.
2. Her evre bir öncekinin üzerine çizilecek.
3. Evreler arasında geçiş, iki evre arasında 1-2 saniyelik beklemeden sonra(iptal) otomatik olacak.
4. Program 8'inci evreden sonra başa dönecek.
5. Aşağıda örnek çıktılarda '.' karanlık '#' aydınlık anlamına geliyor.

Örnek:
Kod:
yeni ay  b.hilal  i.dördün b.şişkin
........ ....##.. ....##.. ....##..
........ ......#. ....###. ...####.
........ .......# ....#### ..######
........ ......#. ....###. ...####.
........ ....##.. ....##.. ....##..

dolunay  k.şişkin s.dördün k.hilal
..####.. ....##.. ....##.. ..##....
.######. ...####. ....###. .#......
######## ..###### ....#### #.......
.######. ...####. ....###. .#......
..####.. ....##.. ....##.. ..##....

6. Programın örnekle bire bir aynı çıktıyı vermesi beklenmiyor. Şekilleri Ay'ın evrelerini doğru yansıtmak koşuluyla değiştirebilirsiniz ancak 8x5 matris kullanmak zorunlu. Örneğin aşağıdaki ikinci hilal elde etmek daha kolaysa onu kullanabilirsiniz.

Kod:
..##....  ..##....
.#......  .##.....
#.......  ##...... 
.#......  .##.....
..##....  ..##....

7. Sadece şekilleri çizmek yeterli. Başlıkları ekrana yazmaya gerek yok.
8. '.' ve '#' yerine faklı karakter kullanabilirsiniz.
9. Ekranı temizlemeye gerek yok ancak 8x5 matrisin için seçilen iki karakterden başka karakter olmaması gerekiyor.

//Edit: Skate'in talep ettiği açıklamalar soruya eklendi.
« Son Düzenleme: Haziran 05, 2017, 23:22:20 ÖS Gönderen: wizofwor » Logged

Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #378 : Haziran 05, 2017, 02:07:24 ÖÖ »

1) yeni ay, b.hilal, ... gibi başlıklar da olacak mı, sadece evreler mi çizdirilecek?
2) "Programın örnekle bire bir aynı çıktıyı vermesi beklenmiyor" ucu çok açık kalmış. Örneğin 8x5'lik bir matris kullanmışsın.
2.a) Daha küçük olabiliyor mu?
2.b) Senin verdiğin örnekte soldan sağa kayış var. Sola yapışık çizdirsek ok mi?
2.c) . ve # harici karakterler kullanabilir miyiz?
Tam sınırları belirlemezsen çok fazla dirty trick kullanılır. "Ne var ulan, o gördüklerin de kraterleri işte" noktasına gider bu iş. Kahkaha
3) Ekran temizletilmek zorunda mı yoksa örneğin sol üst köşeye matrisi bassak yeterli olur mu?
« Son Düzenleme: Haziran 05, 2017, 02:09:45 ÖÖ Gönderen: Skate » Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #379 : Haziran 05, 2017, 03:06:15 ÖÖ »

İlk versiyon 223 byte.

Bu uygun mudur? Uygunsa bunun üzerinden devam edeceğim. Yukarıdaki soruların cevapları önemli.

Kod:
0 dimd(14):fori=0to14:readd(i):next:forp=-4to3:l=abs(p)*3:fory=-2to2:z=abs(y)
1 forx=0to7:poke1104+y*40+x,35-11*((d(l+z)and2^abs((p>=0)*7+x))=0):nextx,y
2 forw=0to2e3:nextw,p:run:data255,126,60,126,60,24,30,28,24,2,4,24,0,0,0
Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #380 : Haziran 05, 2017, 08:12:48 ÖÖ »

155 byte

{..} şeklindeki alanlar tek karakter. PRG'yi attach ettim. Petcat ile derlenebilir durumda.

Kod:
0 forp=0to7:fory=-2to2:forx=0to7
1 a=(asc(mid$("{12}{12}{12}{14}{16}{36}{42}{40}{36}{138}{72}{36}{11}{138}{72}{138}{72}{36}{132}{68}{36}{76}{44}{36}",1+3*p+abs(y)))-12and2^x)>0
2 poke6^4+y*40+x,46+11*a:nextx,y:forw=0to2e3:nextw,p:run

* moon_phases.prg (0.13 KB - Yükleme: 511 kez.)
Logged
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.785


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #381 : Haziran 05, 2017, 09:31:48 ÖÖ »

1) yeni ay, b.hilal, ... gibi başlıklar da olacak mı, sadece evreler mi çizdirilecek?
2) "Programın örnekle bire bir aynı çıktıyı vermesi beklenmiyor" ucu çok açık kalmış. Örneğin 8x5'lik bir matris kullanmışsın.
2.a) Daha küçük olabiliyor mu?
2.b) Senin verdiğin örnekte soldan sağa kayış var. Sola yapışık çizdirsek ok mi?
2.c) . ve # harici karakterler kullanabilir miyiz?
Tam sınırları belirlemezsen çok fazla dirty trick kullanılır. "Ne var ulan, o gördüklerin de kraterleri işte" noktasına gider bu iş. Kahkaha
3) Ekran temizletilmek zorunda mı yoksa örneğin sol üst köşeye matrisi bassak yeterli olur mu?


1) Başlıklara gerek yok.
2) 8x5 matris sabit ancak mesela hilalı farklı şekilde çizebilirsiniz.
  Aşağıdaki ikinci hilal elde etmek daha kolaysa onu kullanabilirsiniz mesela.

Kod:
..##....  ..##....
.#......  .##.....
#.......  ##...... 
.#......  .##.....
..##....  ..##....

2.b)
"Bunun orjinalinde soldan sağa kayış var." Diyecektim ama sağdan sola kayıyor galiba. Astronom olan cevap versin. Evreleri tersten mi yazdım acaba?


2.c) Faklı karakter kullanabilirsiniz.
3) 8x5 matrisin için seçilen iki karakterden başka karakter olmaması gerekiyor. Bunun haricinde ekranı temizlemeye gerek yok.
Logged

Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #382 : Haziran 05, 2017, 10:05:52 ÖÖ »

Evet, evreleri ters yazmışsın. Kodun uzunluğunu etkileyen bir faktör değil (en azından benim kodum açısından).

154 byte, doğru sıralı, # yerine * kullandım.

Kod:
0 forp=0to7:fory=-2to2:forx=0to7
1 a=(asc(mid$("{12}{12}{12}{76}{44}{36}{132}{68}{36}{138}{72}{36}{11}{138}{72}{138}{72}{36}{42}{40}{36}{14}{16}{36}",1+3*p+abs(y)))-12and2^x)>0
2 poke6^4+y*40+x,46+4*a:nextx,y:forw=0to2e3:nextw,p:run

* moon_phases.prg (0.13 KB - Yükleme: 494 kez.)
Logged
joker_
Deneyimli
*****
Mesaj Sayısı: 2.120



Üyelik Bilgileri
« Yanıtla #383 : Haziran 05, 2017, 10:13:05 ÖÖ »

Astronom olan cevap versin. Evreleri tersten mi yazdım acaba?

Kendisi şu anda zaten kodu yazıyor Kahkaha
Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #384 : Haziran 05, 2017, 18:25:06 ÖS »

Gün içinde uğraşamadım daha çok optimize etmeye, gece tekrar bir göz atıcam. Arada karakter kodları ile ilgili bir açıklama yapmak istiyorum.

Petcat reverse on ile yazılan karakterleri desteklemediği için karakter kodlarıyla vermek zorunda kaldım ancak illegal bir durum yok. Bu karakterlerin tamamı klavyeden rahatlıkla yazılabilen karakterler. Normalde petcat'in derleyemediği, 24 karakterlik alanı size baka baka yazabilmeniz için hazırladığım versiyon aşağıda.

Kod:
0 forp=0to7:fory=-2to2:forx=0to7
1 a=(asc(mid$("<RVS+L><RVS+L><RVS+L>l,$<RVS+SHIFT+D>d$<RVS+SHIFT+J>h$<RVS+K><RVS+SHIFT+J>h<RVS+SHIFT+J>h$*($<RVS+N><RVS+P>$",1+3*p+abs(y)))-12and2^x)>0
2 poke6^4+y*40+x,46+4*a:nextx,y:forw=0to2e3:nextw,p:run

Buradaki tek trick şu. Tırnak karakterini açınca normalde reverse on yapmaya çalıştığınızda (CTRL+9) reverse on anlamında inverted R karakteri çıkar. Bunun için kodu yazarken tırnağı açtıktan sonra kapatıp, kapatılan tırnağı silip normal modda yazmaya devam edebilirsiniz. Ya da daha temizi aşağıdaki özel karakter alanları boş bırakılmış kodu copy&paste edin, elle doldurun geri kalanını yukarıdakine bakarak.

Kod:
0 forp=0to7:fory=-2to2:forx=0to7
1 a=(asc(mid$("   l,$ d$ h$  h h$*($  $",1+3*p+abs(y)))-12and2^x)>0
2 poke6^4+y*40+x,46+4*a:nextx,y:forw=0to2e3:nextw,p:run

Tüm bunlarla uğraşmamanız için PRG'yi zaten paylaştım önceki postumda ama "biz bunu normal basic'de elle yazabiliyor muyuz ki?" sorusuna istinaden paylaşmak istedim. Evet, yazabiliyorsunuz.
Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #385 : Haziran 05, 2017, 19:15:14 ÖS »

Animasyonu ortak karakter kullanırım diye ortalamıştım. Daha sonra başka metoda geçince ortalanması anlamsız kaldı. Bu versiyon birebir orjinal framelerden oluşuyor. İşin güzeli bu frameler bana 1 byte kazandıracak uygunlukta çıktı.

153 byte

Kod:
0 forp=0to7:fory=-2to2:forx=0to7
1 a=(asc(mid$("{9}{9}{9}{137}{73}{57}{249}{121}{57}{5}{129}{57}{8}{135}{69}{72}{39}{21}{24}{23}{21}{10}{11}{21}",1+3*p+abs(y)))-9and2^x)>0
2 poke6^4+y*40+x,46+4*a:nextx,y:forw=0to2e3:nextw,p:run

Edit: PRG yine ekte.

Edit 2: Frameleri ters sıralatmayı unutmuşum. Düzelttim.

* moon_phases.prg (0.13 KB - Yükleme: 515 kez.)
« Son Düzenleme: Haziran 05, 2017, 19:21:43 ÖS Gönderen: Skate » Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #386 : Haziran 05, 2017, 19:27:05 ÖS »

Bu arada çizim işlemi yavaş olduğu için bence arada bekletmeye de gerek yok. Sırf kurallara uygun olsun diye o bekletmeyi ekledim ama zaten çok yavaş çizildiği için evreler bu şekilde de rahatlıkla görüntüleniyor. Bence çok daha hızlı çizileceğini düşünerek o kuralı koydun @wizofwor, ne dersin? Bu legal midir?

135 byte

Kod:
0 forp=0to7:fory=-2to2:forx=0to7
1 a=(asc(mid$("{9}{9}{9}{137}{73}{57}{249}{121}{57}{5}{129}{57}{8}{135}{69}{72}{39}{21}{24}{23}{21}{10}{11}{21}",1+3*p+abs(y)))-9and2^x)>0
2 poke6^4+y*40+x,46+4*a:nextx,y,p:run

* moon_phases_nowait.prg (0.12 KB - Yükleme: 494 kez.)
Logged
Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #387 : Haziran 05, 2017, 20:16:00 ÖS »

Çok daha kısası da yolda. Ama geceyarısından sonra uğraşabileceğim. Arada ilk davranan olursa optimizasyonda kapışırız sonrasında.
Logged
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.785


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #388 : Haziran 05, 2017, 23:08:44 ÖS »

Bu arada çizim işlemi yavaş olduğu için bence arada bekletmeye de gerek yok. Sırf kurallara uygun olsun diye o bekletmeyi ekledim ama zaten çok yavaş çizildiği için evreler bu şekilde de rahatlıkla görüntüleniyor. Bence çok daha hızlı çizileceğini düşünerek o kuralı koydun @wizofwor, ne dersin? Bu legal midir?

135 byte

Problemin bu şekilde formulize edilebileceği hiç aklıma gelmemişti. Bol for next'li ve goto'lu bir çözüm bekliyordum. Bekleme kuralını da kolay takip edilebilir bir efekt olması için düşünmüştüm. Gerek olmadığına göre bence kaldırabiliriz.

Yukarıda soruyu editledim. 
« Son Düzenleme: Haziran 05, 2017, 23:22:54 ÖS Gönderen: wizofwor » Logged

Skate
Uzman
*****
Mesaj Sayısı: 1.479


A Sinner Scener


Üyelik Bilgileri WWW
« Yanıtla #389 : Haziran 06, 2017, 01:33:14 ÖÖ »

Optimizasyonsuz ilk versiyon.

107 byte

Kod:
0 forp=0to9:fory=-2to2:forx=-4to3:z=x+p+10*(p>5)
1 poke6^4+y*40+x,46+4*(x*x+y*y<6andz*z+y*y>6):nextx,y,p:run
« Son Düzenleme: Haziran 06, 2017, 01:44:26 ÖÖ Gönderen: Skate » Logged
Sayfa: 1 ... 24 25 [26] 27 28 ... 30   Yukarı git
Yazdır
Gitmek istediğiniz yer: