1

Temat: Sudoku

Witam,

Napisalem (skonczylem) w c program do generowania sudoku (http://en.wikipedia.org/wiki/Sudoku)
latwe/srednio trudne/trudne plus podprogram rozwiazujacy sudoku latwe i srednio trudne... i co z tego?

a to, ze probowalem kompilowac go cc65 (chyba) ale to porazka, w action! tez nie bylo duzo lepiej (wyszla straszna kobyla) pracowalem, pracowalem i przepisalem go na assemblera 6502. Dlaczego to pisze - dzieki temu za mam go w assie moge dodac (mam nadzieje) jakas muzyke :-) i to zadanie dla CIEBIE !!! jesli jestes chetny do napisania muzyki/fxow skontaktuj sie ze mna.

stan na dzis:
- generuje sudoku w 5 stopniach trudnosci (dla dwoch ostatnich istnieje wiecej jak 1 rozwiazanie)
- zegar dziala, klawisze kursora i kursor dzialaja, wpisywanie liczb nie dziala
- nie sprawdza (jeszcze) poprawnosci
- nie przewiduje procedury podpowiedzi (szkoda czasu a przydaje sie tylko dla beginnerow)

jak powiedzialem, program jest skonczony w c. obecnie bawie sie w maszynistke ktora przepisuje go na assa wiec nie widze powodow zeby go nie skonczyc z powodzeniem :-)

pytania? podpowiedzi? fucki?

http://atari.pl/hsc/ad.php?i=1.

2

Odp: Sudoku

Great!!! Mam nadzieję, że skończysz!!!
Aha, muzyki ja nie napiszę, bo nie potrafię, ale mam nadzieję, że ktoś się zgłosi!!!
I że nie jest to kolejny "słomiany zapał"...

Sikor umarł...

3

Odp: Sudoku

Może chociaż jakąś wersję Demo upublicznisz - tak aby można było to w ogóle zobaczyć.

Ci, którzy przemawiają w imieniu Boga powinni pokazać listy uwierzytelniające. J. Tuwim

4

Odp: Sudoku

napisz do mikera on ma duzo niedokonczonych utworkow i napewno jakis ci zapoda ;P

"wszystko się kiedyś kończy......."

5

Odp: Sudoku

Czemu w cc65 to porażka?

Pytam, bo ciekaw jestem jakie masz doświadczenia z tym kompilatorem, chciałbym kiedyś w nim coś porobić (możnaby szybko parę narzędzi sklecić).

Czy rozmiar po kompilacji to był jedyny powód? Ile to mniej więcej było bajtów?

I'm not so bad, once you get to know me.

6

Odp: Sudoku

nie znam gry, nie gralem, jednak gratuluje skonczonego lub wiecej niz prawie skonczonego projektu
z tego co zobaczylem na wikipedii rzeczywiscie jest to wyzwanie dla programisty

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

7

Odp: Sudoku

Sudoku fajne jest, przez wakacje jak sie gdzies nudzilem rozwiazywalem :)
Generatory sa przydatne, ale jednak najwygodniej rozwiazuje sie toto na kartce papieru.
Mimo wszystko - powodzenia, fajnie,  jesli powstanie jakis nowy soft :)

: 404. Stopka not found

8

Odp: Sudoku

msx jakie wymagania - lub przewidywane obciążenie dla proca. Może być 8chn tmc 4x na ramke ?? :P :)

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info

9

Odp: Sudoku

1. pod koniec przyszlego tygodnia upublicznie niezaleznie od tego czy skoncze (brakuje juz tylko obslugi klawiszy i sprawdzania poprawnosci wypelnionego przez gracza sudoku) bedzie mozna zobaczyc... juz w tym momencie mozna posluzyc sie tym programem do generowania hmm 6*10^21 roznych sudoku?

2. dlaczego nie w cc65? - zrobilem test - 2 zagniezdzone petle i operacje na tablicy 3d stworylo kod o wielkosci calego programu w asie6502 lacznie z grafika. pewnie sie naraze, c jest super ale na wiekszych maszynach :(

3. wymagania muzyczki? bo ja wiem :-) ? niemam doswiadczenia, milo by bylo gdyby plajer byl na przerwaniu timera2 (nie musialbym nic robic :-) )

dzieki za mile slowa

http://atari.pl/hsc/ad.php?i=1.

10

Odp: Sudoku

Xxl: chodzi o to ile razy w ciągu ramki mógłby zostać player wywołany (1-4), czyli ile czasu procka Twoja gierka zabiera, a na jakie przerwanie wrzucisz playera, to już Twój biznes, nie? :)

I Ty zostaniesz big endianem...

11

Odp: Sudoku

sprawa wyglada tak: podczas generowania sudoku 100% czasu zabieram generowanie trwa do 20 sekund... czasem i 40 sekund :( pozniej juz tylko odczyt klawiatury, poruszanie kursorem wypelnianie 2 tablic, odczyt konsoli... - wszystko nie zabiera wiecej jak 20 lini skaningowych, dli nie uzywam... moze by tak dli wyzwalalo plajera ? prawde mowiac myslalem o czyms prostym o np. emulacji aygreka. (zart) mysle ze nawet fx by wystarczyly :-)

http://atari.pl/hsc/ad.php?i=1.

12

Odp: Sudoku

xxl napisał/a:

2. dlaczego nie w cc65? - zrobilem test - 2 zagniezdzone petle i operacje na tablicy 3d stworylo kod o wielkosci calego programu w asie6502 lacznie z grafika. pewnie sie naraze, c jest super ale na wiekszych maszynach :(

Takie kompilatory mają coś takiego jak "overhead". Tzn. że napiszesz "a = b;" i wielkość programu wynikowego idzie w setki lub tysiące bajtów. Żeby wiedzieć ile twoja funkcja miała, musiałbyś porównać dwa programy: jeden wykorzystujący wszystkie potrzebne funkcje biblioteczne z twoją funkcją testową i drugi też wykorzystujący te same funkcje biblioteczne bez twojej funkcji testowej. Wtedy miałbyś obraz ile zajmowała sama funkcja.

Wybacz jeśli to już dawno wiesz... (wiem, wiem, wszyscy lub prawie wszyscy tu programują)

I'm not so bad, once you get to know me.

13

Odp: Sudoku

moge zobaczyc ten kod w c?
pewnie wiele nie pomoge, ale moze "jakos" uda mi sie zkopulowac do "w miare" normalnych rozmiarow...

co do stwierdzenie ze C to sie bardziej dla wiekszych kompow nadaje - pure true...
chociaz komodziaze takiego lunix-a potrafili w tym naklepac... (ups - wyglada na to ze w .s napisany...)

btw. widze ze w sources lunixa cos i do atari jest... cza sie przyjrzec

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

14

Odp: Sudoku

piotrv napisał/a:

Tzn. że napiszesz "a = b;" i wielkość programu wynikowego idzie w setki lub tysiące bajtów.

A czasem w dziesiątki lub setki kilobajtów. Przyczyną jest linkowany do binarki kod startowy, który na wszelki wypadek robi masę rzeczy a na dodatek często dolinkowuje jeszcze funkcję printf (bo "nie ma takiego programu" - oczywiście - "który nie potrzebowałby funkcji printf" :D ), a ta stdio itd.

Jeśli jednak mamy do czynienia z programem - mimo że takie wg tuzów informatyki nie istnieją - który funkcji printf i tego całego badziewia nie potrzebuje, wystarczy podmienić moduł startowy programu. W takim gcc on się nazywa (IIRC, bo dawno nie zaglądałem) bodaj crt0. Jak by się jednak nie nazywał, linker powinien mieć opcję, za pomocą której automatyczne linkowanie tego się wyłącza. Na gcc pod MiNT-em to jest ... zapomniałem, może -nostartup, ale nic sobie nie dam uciąć. Oczywiście pominięcie kodu startowego powoduje, że w większości przypadków przestanie też działać libc, wobec tego nie ma sensu jej linkować (-nostdlib).

Dzięki stosowaniu tego oraz napisanego własnoręcznie w asemblerze kodu startowego o objętości 300 bajtów (zamiast 90k) udało mi się pod MiNT-em spokojnie pisać w C programy, które po zlinkowaniu - statycznym - miały 3-4k.

Ostatnio edytowany przez drac030 (2006-01-09 08:30:49)

KMK
? HEX$(6670358)

15

Odp: Sudoku

drac030 napisał/a:

Dzięki stosowaniu tego oraz napisanego własnoręcznie w asemblerze kodu startowego o objętości 300 bajtów (zamiast 90k) udało mi się pod MiNT-em spokojnie pisać w C programy, które po zlinkowaniu miały 3-4k.

To co jest w tych 90k że można to sobie spokojnie, ładnie to ujmując, pominąć? Inicjalizer libc ma tyle?? No ale na cc65 taki inicjalizer nie miałby racji bytu. Ciekawe jak tam to wygląda.

Ostatnio edytowany przez piotrv (2006-01-08 15:16:57)

I'm not so bad, once you get to know me.

16

Odp: Sudoku

W tych 90k jest przede wszystkim printf, a poza tym kod inicjujący libc, parsujący linię komend itp. Osobiście uważam, że rozmiar tego jest chory.

Ostatnio edytowany przez drac030 (2006-01-08 15:29:14)

KMK
? HEX$(6670358)

17

Odp: Sudoku

drac030 napisał/a:

W tych 90k jest przede wszystkim printf, a poza tym kod inicjujący libc, parsujący linię komend itp. Osobiście uważam, że rozmiar tego jest chory.

Z ciekawości zainstalowałem cc65 i zrobiłem testy.

667 bajtów - najprostszy program który zrobiłem - czekanie na wciśnięcie klawisza
3330 bajtów - program z printf
3645 bajtów - program z printf + funkcja testowa
3650 bajtów - program z printf + funkcja testowa + jej wywołanie
6414 bajtów - program z printf + funkcja testowa + jej wywołanie + scanf

Wynika z tego że moja prosta funkcja zajeła jakieś 300 bajtów. Nie wygląda to aż tak źle, ale chyba bez doładowywania modułów by się nie obeszło.

Kod funkcji:

void test_arr()
{
 int a[10], i;

 for(i=0; i< 10; i++)
   a[i] = i;

 for(i=0; i< 10; i++)
   printf("a[%d]=%d\n", i, a[i]);
}

Ostatnio edytowany przez piotrv (2006-01-09 00:11:00)

I'm not so bad, once you get to know me.

18

Odp: Sudoku

drac030 dobrze prawi. w wypadku linuksa ciekawa alternatywa dla glibc jest uclibc, ktora ma pewne sprawy lepiej przemyslana (nie linkuje np. rzeczonego stdio "na wszelki wypadek"). ciekawie wygladaja tez programy skompilowane z ta biblioteka - statycznie.

piotrv: w przypadku cc65 jesli tylko nie potrzebujesz - nie uzywaj printf. jesli mozesz to stosuj puts (+ jawnie/na piechote konwertuj liczby do stringow - itoa). sporo zaoszczedzisz na tym...

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

19

Odp: Sudoku

Ewentualnie można napisać własną funkcję printf, która co prawda nie będzie miała wszystkich bajerów, ale za to będzie 10x krótsza. Oczywiście jej wielkość i działanie zależy już w tym momencie od konkretnych potrzeb.

KMK
? HEX$(6670358)

20

Odp: Sudoku

drac030 napisał/a:

Ewentualnie można napisać własną funkcję printf, która co prawda nie będzie miała wszystkich bajerów, ale za to będzie 10x krótsza. Oczywiście jej wielkość i działanie zależy już w tym momencie od konkretnych potrzeb.

Zgadzam się, można sporo zaoszczędzić na ominięciu funkcji bibliotecznych. Ale gdy się chce szybko coś napisać, to printf jest nieocenione. No i widać, że cc65 do pisania driverów lub narzędzi systemowych to się średnio nadaje.

Dlatego jak dla mnie cc65 mógłby być stosowany na takich polach jak:
- sprytne programiki napisane "na szybko"
- programy złożone algorytmicznie (np. jakieś packery)
- generatory, parsery danych
- gry tekstowe
- programy rozwiązujące problemy matematyczne

Czyli jest to większość z rzeczy, które programowałem na Atari... :)

A co do długości kodu, to patrząc na złożoność funkcji testowej mogę sobie ją wyobrazić zapisaną w 30 (asm) a nie w 300 bajtach (C), więc raczej trzeba założyć, że program będzie dłuższy nawet do 10x w stosunku do asm.
Natomiast niewątpliwą zaletą C jest szybkość tworzenia programu.

Ostatnio edytowany przez piotrv (2006-01-09 09:56:29)

I'm not so bad, once you get to know me.

21

Odp: Sudoku

xxl: lol! swietny pomysl!
moge probowac twierdzic, ze nie masz (jeszcze :)) procki do rozwiazania sudoku, a taka moge Ci dostarczyc - do tej pory poradzila sobie nawet z najtrudniejszymi, ktore jej zadalem. mysle, ze bylaby idealna rowniez do generowania podpowiedzi. :) format: jedyny sluszny, czyli tbxl :) (a mialem ja przepisywac na asma...).

Ostatnio edytowany przez epi (2006-01-09 10:20:46)

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

22

Odp: Sudoku

napisalem procedurke rozwalajaca sudoku :p ale jej nie dolacze do programu na atari bo poco:p na atari chce zeby byl generator + sprawdzanie poprawnosci rozwiazania

http://atari.pl/hsc/ad.php?i=1.

23

Odp: Sudoku

piotrv napisał/a:

Dlatego jak dla mnie cc65 mógłby być stosowany na takich polach jak:
- sprytne programiki napisane "na szybko"
- programy złożone algorytmicznie (np. jakieś packery)
- generatory, parsery danych
- gry tekstowe
- programy rozwiązujące problemy matematyczne

Do tego - może oprócz "packerów" - jest BASIC, zwłaszcza Turbo BASIC XL. Ma tę przewagę nad CC65, że działa na Atari no i wystarczy RUN (nie trzeba kompilować, linkować itp.)

KMK
? HEX$(6670358)

24

Odp: Sudoku

xxl napisał/a:

napisalem procedurke rozwalajaca sudoku :p ale jej nie dolacze do programu na atari bo poco:p na atari chce zeby byl generator + sprawdzanie poprawnosci rozwiazania

to konkurencja Cie zje... ;) po to.

drac030 napisał/a:

Do tego - może oprócz "packerów" - jest BASIC, zwłaszcza Turbo BASIC XL. Ma tę przewagę nad CC65, że działa na Atari no i wystarczy RUN (nie trzeba kompilować, linkować itp.)

czuu.. czuu... ;)

oczywiście można sobie skompilować i zlinkować, ale trzeba się wtedy liczyć z tym że (w dużym skrócie): usr działa inaczej, val działą czasami, priorytety operatorów i funkcji się czasem mieszają, skutkiem czego w nawet niezbyt skomplikowanych wyrażeniach można dostać byxa albo wynik z kosmosu, najczęściej, jeżeli w takim wyrażeniu są tablice numeryczne (prawie gwarantowany error 9) albo jego wynik ma być np. użyty w poke, itp... itd...

ale wiedząc o tym, można nawet napisać windowsy. ;)

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

25

Odp: Sudoku

Tia. Interpreter na szczęście jest - nieco - lepszy, dlatego się nadaje dobrze do pisania wspominanych przez piotrav programików na szybko itp. Zwłaszcza, że załadowanie Turbo BASIC-a z twardego dysku trwa ile - dwie sekundy?

No ale ja teraz uzywam TBXL z rzadka do tych celów, <commercial>MultiBASIC jest jednak wygodniejszy</commercial>. ;)

KMK
? HEX$(6670358)