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] 2 3 ... 30   Aşağı git
Yazdır
Gönderen Konu: C64 BASIC Kısa Kod Yarışması - irqHack64 Ödüllü  (Okunma Sayısı 183500 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.733


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« : Nisan 22, 2017, 00:29:09 ÖÖ »

Uzun süredir aklımda bir programlama yarışması düzenlemek vardı. Bu güne kısmetmiş.
Karşınızda C64 BASIC Kısa Kod Yarışması kodlama yarışması.



Kurallar
1. Yarışmanın amacı sorulan soruya cevap veren en kısa programı yazmak.
2. Her hafta cuma akşamı yeni bir soru soru soracağım.
3. Cevap vermek için bir sonraki soruya kadar süreniz olacak.
4. Programlar C64 BASIC ile yazılacak. (POKE, PEEK vb. komutlar serbest.)
6. Komut kısaltmaları kullanılmayacak. (Okunabilirliği yüksek tutmak için)
5. Kaynak kodlarınız PETCAT uyumlu olacak. Kodları CBM Prg Studio'ya kopyalayarak çalıştıracağım.
6. İlk 4 soru 10 son 3 soru 20'şey puanlık olmak üzere toplamda 7 soru soracağım.
7. En kısa kodu yazan o haftaki puanın sahibi olacak.

Ödül
Elimdeki fazla olan irqHack64 kartuşlardan birini ödül olarak vermeyi düşündüm.
Yalnız elimdeki kartuşların üzerindeki arduino yazılımı güncel değil. Ben güncelleyemiyorum. Kazanan arkadaşın bu yazılımı güncellemesi gerekiyor.



İlk soru: Tek mi çift mi?
Sadece tam sayı girdiler için verilen sayının tek mi çift mi olduğunu bulan bir program yazın.
Program tek sayılar için 'TEK' çift sayılar için 'CIFT' yazmalı.

Örnekler
Kod:

Girdi: 1; Çıktı: TEK
Girdi: 2; Çıktı: CIFT


İkinci soru: Eksik rakamı bul
Tüm basamakları birbirinden farklı olmak üzere, girilen 9 karakterlik bir sayıda hanki rakamın eksik olduğunu bulan bir program yazın.

Not: Girdi olarak sadece 9 haneli ve rakamları birbirinden farklı sayılar test edilecektir.

Örnekler:
Kod:

Girdi: 123456789; Çıktı: 0
Girdi: 124560789; Çıktı: 3
Girdi: 098762345; Çıktı: 1



Üçüncü soru: n basamaklı rastgele sayı

0<n<10 olmak üzere girilen rakam için: n basamaklı, her basamağı birbirinden farklı ve sıfırla başlamayan rastgele bir sayı üretin.
Programınızın n'in koşullara uymadığı kontrol etmesine gerek yok. Üretilen rastgele sayının dağılımı önemli değil. Yani RND() fonksiyonun ürettiği sayılar yeterli.

Dördüncü soru: İkinci ismi bul

Girilen bir ismin içinden varsa ikinci ismi bulan bir program yazın.
Program ikinci isim yoksa boş değer döndürmeli.
Eğer ilk isimle soyad arasından birden fazla isim varsa hepsini döndürmeli.

Örnekler:
fatma sezen aksu : sezen
rabia demet sağıroğlu : demet
fatma yonca evcimik : yonca
haluk levent :

Not: "Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Cipriano de la Santísima Trinidad Ruiz y Picasso" gibi uzun isimleri denemeyeceğim.


* output_CBy9sF.gif (19.66 KB, 376x179 - Görüntüleme: 2865 kez.)
* tekcift.d64 (170.75 KB - Yükleme: 518 kez.)
« Son Düzenleme: Mayıs 20, 2017, 00:16:42 ÖÖ Gönderen: wizofwor » Logged

i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #1 : Nisan 22, 2017, 00:45:56 ÖÖ »

Ooo.. çarşı karışır

Performans önemli değil di mi? (İlk soruda söz konusu değil muhtemelen de)

Bence "iyi" kelimesini tariflemelisin. Tabii subjektif olarak değerlendireceksen o zaman bir şey diyemem.
Logged

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

twitter | blog
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.733


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #2 : Nisan 22, 2017, 01:18:00 ÖÖ »

Oradaki iyi hatalı olmuş. Sadece doğru çıktıyı veren en kısa koda bakacağım. Performans önemli değil. Zaten çok ağır hesaplama gerektiren şeyler sormayacağım.
Logged

WildLord
Deneyimli
*****
Mesaj Sayısı: 705



Üyelik Bilgileri
« Yanıtla #3 : Nisan 22, 2017, 01:35:39 ÖÖ »

Programcı değilim daha kısası ve mantıklısı nasıl olur bilemiyorum Ama sanırım en ilkel haliyle aşağıdaki şekilde olur.

5 input "sayi :";sayi
7 sayi$=str$(sayi/2)
9 if mid$(sayi$,len(sayi$)-1,1)="." then print "tek":end
11 print"cift"
Logged
AmigaMan
Deneyimli
*****
Mesaj Sayısı: 619



Üyelik Bilgileri
« Yanıtla #4 : Nisan 22, 2017, 02:12:34 ÖÖ »

Sevdim bu fikri ödüle gerek her hafta devam etsin. Odul biterse kazananın adını şampiyon ilan edin yeter.
Logged

Amiga ölmedi, efsane uyuyor
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #5 : Nisan 22, 2017, 02:27:53 ÖÖ »

eminim daha kısası vardır ancak katılım sağlayalım. sorsan basic bilirim, unutmuşum

1 print"sayi?":inputa%:ifa%and1thenprint"tek":goto1
2 print"cift":goto1

ps1: Hediyeye talip değilim
ps2: Dönüp durmasın, bir defa işini yapsın denirse şu şekilde

1 print"sayi?":inputa%:ifa%and1thenprint"tek":end
2 print"cift"

ps3: print yerine soru işareti girince daha sonra listelendiğinde tekrar print'e çeviriyormuş meret. bence kısaltma kullanılmasın.
« Son Düzenleme: Nisan 22, 2017, 02:36:17 ÖÖ Gönderen: i_r_on » Logged

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

twitter | blog
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #6 : Nisan 22, 2017, 02:42:09 ÖÖ »

Bu da if sevmeyenlere gelsin,

1 a$(1)="tek":a$(0)="cift":print "sayi?":inputa%:printa$(a%and1)
Logged

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

twitter | blog
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.587


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #7 : Nisan 22, 2017, 03:31:28 ÖÖ »

@i_r_on: Seninkiler kadar kısa değil ama alternatif bir yol. Ney

1 poke19,65:input"sayi:";s:y=int(s/2):t=y*2:ift=sthenprint"cift":goto1
2 print"tek":goto1


Bu arada ilk print'e ve ?'ne gerek yok

1 poke19,65:input"sayi:";a%:ifa%and1thenprint"tek":goto1
2 print"cift":goto1


ve

1 poke19,65:a$(1)="tek":a$(0)="cift":input"sayi:";a%:printa$(a%and1):goto1

şeklinde kısaltabilirsin.

Not: Hediyeye ben de talip değilim. Masum
Edit: VICE'a kopyala yapıştır yapılabilir hale getirildi. Karizmatik
« Son Düzenleme: Nisan 22, 2017, 03:45:31 ÖÖ Gönderen: Simon (Özay Turay) » Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
june8efe
Deneyimli
*****
Mesaj Sayısı: 1.283



Üyelik Bilgileri
« Yanıtla #8 : Nisan 22, 2017, 10:54:07 ÖÖ »

hediye benimdir


10 print "x"
run
x

Logged

Geliştirme kartları: Raspberry Pi2, Arduino Uno R3
El konsolları: Ngage,DS Lite,Nintendo 3DS cfw
Tv konsolları: PS1, Hdd'li fat PS2, Wii (Softmod'lu), Xbox360 slim rgh, PS4 Slim
WildLord
Deneyimli
*****
Mesaj Sayısı: 705



Üyelik Bilgileri
« Yanıtla #9 : Nisan 22, 2017, 11:00:00 ÖÖ »

Benim kodumda şöyle bir hata var rakam hanesi 11 basamağa ulaştığında örn. 11111111111 program sayının tek ya da çift olmasını karıştırıyor yani yuvarlama hatası yapıyor. 10 haneye kadar yuvarlama hatası yok doğru hesaplıyor. Aynı durum Simon'un ilk örneğinde de var.

i_r_on'un kodlarında bir de Simon'un son iki örneği de basamak sayısı 6 hane olduğunda ILLEGAL QUANTITY ERROR veriyor.
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #10 : Nisan 22, 2017, 11:19:06 ÖÖ »

@wildlord : c64 basic'te tam sayılar 16 bit signed. Yani alabilecekleri değerler -32768 ile +32767 arası..

Senin programa 700000.1 gibi bir değer ver bakalım doğru sonuç veriyor mu
Logged

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

twitter | blog
WildLord
Deneyimli
*****
Mesaj Sayısı: 705



Üyelik Bilgileri
« Yanıtla #11 : Nisan 22, 2017, 11:48:48 ÖÖ »

Benim programımın syntax error vermemesi bile sevindirici Açıklama için sağol bu konu sayesinde yeni bir şeyler öğreneceğim.
Logged
skonac
Üye
***
Mesaj Sayısı: 149



Üyelik Bilgileri
« Yanıtla #12 : Nisan 22, 2017, 11:49:54 ÖÖ »

En sevdiğim

Kod:
1 INPUTA%:PRINTMID$("CIFTTEK ",(A%AND1)*4+1,4)
Logged
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.587


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #13 : Nisan 22, 2017, 12:01:30 ÖS »

@skonac: Bu zekice olmuş.
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
skonac
Üye
***
Mesaj Sayısı: 149



Üyelik Bilgileri
« Yanıtla #14 : Nisan 22, 2017, 12:06:44 ÖS »

@skonac: Bu zekice olmuş.
Teşekkürler  Kahkaha
Logged
Sayfa: [1] 2 3 ... 30   Yukarı git
Yazdır
Gitmek istediğiniz yer: