Permalänk
Medlem

FunkFarfar
Gjorde denna enbart för dig... Iof i VB.. men iaf

http://backslash.1go.dk/Funk.rar <--- Komplerad och packad ca 4k

Dim LeftCord As Single Dim TopCord As Single Dim CountMe As Single Funk = "###############################000#0##0#0##0#0##0############0###0##0#00#0#0#0#############00##0##0#0#00#000#############0####00##0##0#0##0##########################################000#0000#000##000#0000#000####0###0##0#0##0#0###0##0#0##0###00##0000#0#0##00##0000#0#0####0###0##0#0##0#0###0##0#0##0#############################################0##0#########################0#00#0#########################0##0###########################00##############" CountMe = Len(Funk) For TopCord = 15 To 0 Step -1 For LeftCord = 29 To 0 Step -1 CountMe = CountMe - 1 If CountMe = 0 Then Exit Sub Loaded = 0 If Mid(Funk, CountMe, 1) = "0" Then Load block(block.Count) block(block.Count - 1).Move block(0).Width * LeftCord, 0 block(block.Count - 1).Visible = True Loaded = 1 End If If Loaded = 1 Then For FallDown = 0 To TopCord block(block.Count - 1).Top = FallDown * block(0).Height DoEvents tid = Timer Do DoEvents Loop Until Timer >= tid + 0.05 Next End If Next Next

Forumet är dumt och misshandlar min kod och stoppar in en Space mellan " och # vilket är fel..
Sen är koden långt ifrån ren, t.ex. så ska inte if-satsen som avslutar suben behövas men jag fuskade lite och la in den. Hittade dock felet och det är For TopCord = 15 To 0 Step -1 som igentligen ska vara For TopCord = 14 To 0 Step -1

Hoppas jag leder nu.. i tävlingen alltså.

**Edit**
Skickade upp en ny ver.. märkte att den förra kunde knepa sig lite..

Visa signatur

tack o bock

Permalänk
Medlem

Får väl bidra med lite kärlek också.

extern "C" { int printf(const char*, ...); int time(void*); int srand(unsigned int); int rand(); } int main(int argc, char **argv) { return argc > 1 && !printf("",srand(time(0))) ? printf("Funkfarfar is %s\n", argv[1+(rand()%(argc-1))]): printf("%s what1 [what2] [what3]\n", argv[0]); }

Här kan ni få ett annat problem som jag klura på lite förut efter ett snack på IRC (#c++.se på qnet).
Hur sorterar du 3st int i storleksordning snabbast?

Efter en del klurade kom jag fram till en snygg lösning. Postar den senare. Se om det är någon annan som kommer på något fint

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Ska man bara komma på i vilken ordning dom ska vara eller ska dom faktiskt byta värden också?

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.

Permalänk
Medlem

void Sort3(const int *src, int *dst)
{
// kod
}

eller:

void Sort3(int *src_and_dst)
{
// kod
}

så typ.. src och dst är pekare till arrays med 3 int..

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Glömsk
Citat:

Ursprungligen inskrivet av Myris
Strängar? Inge gotos? Vad är det där för halv-fasoner? Ska man använda C så ska man använda det som en man! Skåda:

#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { snipp }

Håll dig till Python och andra sånna hjärn-dödar språk, du.

Fixade din kod i ett block, blir bättre så.

#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int v,c[] = {'F','a','b','d','e', 'f','g','h','i','j','k','l','n','p','r','s','t', 'u','v','y','ä',',',' ','!','\n','c','o'}; srand( (unsigned)time(NULL)); s: printf("%c%c%c%c%c%c%c"\ "%c%c%c%c%c%c",c[24],c[0],c[17],c[12],c[10],c[0], c[1],c[14],c[5],c[1],c[14],c[21], c[22]); v = rand() % 4; if(v==1) goto k1; else if(v==2) goto k2; else if(v==3) goto k3; else goto x; k1: printf("%c%c%c%"\ "c%c%c%c%c%c%c%c%c%c%c", c[18],c[1],c[3],c[22],c[2] ,c[14],c[1],c[22],c[3],c[17],c[22],c[20],c[14],c[23] ); goto s; k2: printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%"\ "c%c%c%c", c[4],c[12],c[22],c[16],c[14],c[4],c[18], c[11],c[6],c[13],c[14],c[8],c[25],c[10],c[13]); goto s; k3: printf("%c%c%c%c%c%c%c%c%c%c%c%c%c",c[7], c[19],c[18],c[4],c[12],c[15],c[22],c[10],c[8],c[11], c[11],c[4],c[13]); goto s; x: printf("%c%c%c%c%c%c"\ "%c%c%c", c[15],c[25],c[22],c[11],c[25],c[12],c[6], c[23],c[23],c[23]); return 0; }

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av matricks
void Sort3(const int *src, int *dst)
{
// kod
}

eller:

void Sort3(int *src_and_dst)
{
// kod
}

så typ.. src och dst är pekare till arrays med 3 int..

Okej, är målet att få så kort kod som möjligt, eller så snabb kod som möjligt?

Citat:

Ursprungligen inskrivet av Psionicist
Fixade din kod i ett block, blir bättre så.

#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int v,c[] = {'F','a','b','d','e', 'f','g','h','i','j','k','l','n','p','r','s','t', 'u','v','y','ä',',',' ','!','\n','c','o'}; srand( (unsigned)time(NULL)); s: printf("%c%c%c%c%c%c%c"\ "%c%c%c%c%c%c",c[24],c[0],c[17],c[12],c[10],c[0], c[1],c[14],c[5],c[1],c[14],c[21], c[22]); v = rand() % 4; if(v==1) goto k1; else if(v==2) goto k2; else if(v==3) goto k3; else goto x; k1: printf("%c%c%c%"\ "c%c%c%c%c%c%c%c%c%c%c", c[18],c[1],c[3],c[22],c[2] ,c[14],c[1],c[22],c[3],c[17],c[22],c[20],c[14],c[23] ); goto s; k2: printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%"\ "c%c%c%c", c[4],c[12],c[22],c[16],c[14],c[4],c[18], c[11],c[6],c[13],c[14],c[8],c[25],c[10],c[13]); goto s; k3: printf("%c%c%c%c%c%c%c%c%c%c%c%c%c",c[7], c[19],c[18],c[4],c[12],c[15],c[22],c[10],c[8],c[11], c[11],c[4],c[13]); goto s; x: printf("%c%c%c%c%c%c"\ "%c%c%c", c[15],c[25],c[22],c[11],c[25],c[12],c[6], c[23],c[23],c[23]); return 0; }

Thx, jo, det är sant, mkt snyggare.
E.g. ska det vara nummer och inte tecken i arrayen också så jag var lite slarvig med det hela.

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Myris
Okej, är målet att få så kort kod som möjligt, eller så snabb kod som möjligt?

Thx, jo, det är sant, mkt snyggare.
E.g. ska det vara nummer och inte tecken i arrayen också så jag var lite slarvig med det hela.

Så snabb som möjligt.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

void swap(const int *a, int *b) { *a ^= *b; *b ^= *a; *a ^= *b; } void Sort3(int arr[]) { if(arr[0] > arr[1]) swap(&arr[0], &arr[1]); if(arr[0] > arr[2]) swap(&arr[0], &arr[2]); if(arr[1] > arr[2]) swap(&arr[1], &arr[2]); }

Typ så?

Edit-
Nej hoppsan, tänkte fel nu.. det funkar ju inte

Edit 2-
Okej, nu kanske

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.

Permalänk
Medlem

Mjo.. det funkar nog (inte testat).. fast du får väl inte ha const int a*? sedan inline på swap.. fast små detaljer..

Skall leta upp sourcen till min.. Fann ett sätt att göra det helt utan branches.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Glömsk

matricks: Vänta ett tag, har en fyndig lösning på G.

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Psionicist
matricks: Vänta ett tag, har en fyndig lösning på G.

waiting

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

void Sort3(const int *src, int *dst){ // worst case scenario: 3 compares; best: 2... if (*src[0] < *src[1]){ if (*src[2] < *src[1]){ if (*src[2] < *src[0]){ *dst[0] = *src[2]; *dst[1] = *src[0]; *dst[2] = *src[1]; } else{ *dst[0] = *src[0]; *dst[1] = *src[2]; *dst[2] = *src[1]; } } else{ *dst[0] = *src[0]; *dst[1] = *src[1]; *dst[2] = *src[2]; } } else{ if (*src[2] < *src[1]){ *dst[0] = *src[2]; *dst[1] = *src[1]; *dst[2] = *src[0]; } else{ if (*src[2] < *src[0]){ *dst[0] = *src[1]; *dst[1] = *src[2]; *dst[2] = *src[0]; } else{ *dst[0] = *src[1]; *dst[1] = *src[0]; *dst[2] = *src[2]; } } } }

vet inte om det är den snabbaste, men den borde vara hyfsat ok... inga calls, och som värst endast tre compares som sagt...
Edit: oj, så...

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av matricks
Mjo.. det funkar nog (inte testat).. fast du får väl inte ha const int a*? sedan inline på swap.. fast små detaljer..

Skall leta upp sourcen till min.. Fann ett sätt att göra det helt utan branches.

Oj, nej.. jag kopierade det du postade och ändrade, missade att det var const.

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Osaou

void Sort3(const int *src, int *dst){ // worst case scenario: 3 compares; best: 2... if (*src[0] < *src[1]){ if (*src[2] < *src[1]){ if (*src[2] < *src[0]){ *dst[0] = *src[2]; *dst[1] = *src[0]; *dst[2] = *src[1]; } else{ *dst[0] = *src[0]; *dst[1] = *src[2]; *dst[2] = *src[1]; } } else{ *dst[0] = *src[0]; *dst[1] = *src[1]; *dst[2] = *src[2]; } } else{ if (*src[2] < *src[1]){ *dst[0] = *src[2]; *dst[1] = *src[1]; *dst[2] = *src[0]; } else{ if (*src[2] < *src[0]){ *dst[0] = *src[1]; *dst[1] = *src[2]; *dst[2] = *src[0]; } else{ *dst[0] = *src[1]; *dst[1] = *src[0]; *dst[2] = *src[2]; } } } }

vet inte om det är den snabbaste, men den borde vara hyfsat ok...
Edit: oj, så...

erh.. lite mycket * där.. annars så.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

oh, sorry, tänkte de var pointers... för sent antar jag..
så här då:

void Sort3(const int *src, int *dst){ // worst case scenario: 3 compares; best: 2... if (src[0] < src[1]){ if (src[2] < src[1]){ if (src[2] < src[0]){ dst[0] = src[2]; dst[1] = src[0]; dst[2] = src[1]; } else{ dst[0] = src[0]; dst[1] = src[2]; dst[2] = src[1]; } } else{ dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; } } else{ if (src[2] < src[1]){ dst[0] = src[2]; dst[1] = src[1]; dst[2] = src[0]; } else{ if (src[2] < src[0]){ dst[0] = src[1]; dst[1] = src[2]; dst[2] = src[0]; } else{ dst[0] = src[1]; dst[1] = src[0]; dst[2] = src[2]; } } } }

Hur kan man kolla hur många klockcyklar ett program tar förresten (med t.ex. VC++)?

Permalänk
Medlem

det är inte så enkelt att göra pga att det tar olika beroende på vad du kastar in i det.. jag skall göra en liten test greja som man kan köra med. Och Psi får skynda.. ger han till 3:30 innan jag pastar min

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

jag inser att det tar olika lång tid, men om man kör programmet med talen 0,1,2 två gånger med olika ordning på talen (en gång som generar tre jämförelser, och en gång som genererar två), så får du ju ett bra svar...
allt jag ville veta var hur man kan göra det, har hört/sett flera som visar exempel på hur många klockcykler deras kod tar...

Permalänk
Glömsk

Mina assemblykunskaper är inte skitbra, men detta funkar iaf.

void Sort3(int *s) { __asm { mov edi, s mov eax, [edi] mov edx, 4 cmp eax, [edi+edx] ja swappa start: mov edx, 8 cmp eax, [edi+edx] ja swappa mov eax, [edi+4] add edi, 4 mov edx, 4 cmp eax, [edi+edx] ja swappa jmp slut swappa: xchg [edi+edx], eax mov [edi], eax jmp start slut: } }

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem

fusk, klart assembler kirrar det snabbare (read: kan inte asm så bra som jag skulle vilja)....
men få se din variant nu matricks...

Permalänk
Medlem

const int g_SortOrder[8<<2] = { 0,1,2,0, // 0 1,0,2,0, // 1 0,2,1,0, // 2 2,1,0,0, // 3 2,0,1,0, // 4 1,2,0,0, // 5 2,0,1,0, // 6 2,1,0,0};// 7 inline void Sort3_matricks(const int t[3], int *d) { const int *s = &g_SortOrder[((t[0]>t[1])|((t[1]>t[2])<<1)|((t[0]>t[2])<<2))<<2]; *d++ = t[*s++]; *d++ = t[*s++]; *d++ = t[*s++]; };

Psionicist håller på att bencha alla under windows.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Den va fin du... måste jag säga.
Tror minsann jag sparar den.

Permalänk
Glömsk

Sort3-resultat (ms). Dock VC 6.0, men alltid något.

ms. Matricks 157 Osaou 422 Myris 578 Psio Ska vi inte tala om. Dumma kompilatorjävel! ;)

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem

andraplats iaf.... heh...
och återigen, hur kollar du millisekunder? hämtar du tiden och kör subtraktion, eller finns det nån metod direkt i vc?

Permalänk
Glömsk

Windows GetTickCount, lite slarvigt kanske. Tror matricks vinner oavsett bättre timer.

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem

Testa quicksort också och kolla dess hastighet i jämförelse.

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Psionicist
Windows GetTickCount, lite slarvigt kanske. Tror matricks vinner oavsett bättre timer.

Prat, förtal! där har vi felkällan...
Skulle tro att quicksort inte vinner då den är gjort att sortera n antal noder.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Osaou
Prat, förtal! där har vi felkällan...
Skulle tro att quicksort inte vinner då den är gjort att sortera n antal noder.

Nej quicksort lämpar siginte för småuppgifter som denna...

En tävling till vore trevligt... en som jag inte sover igenom =), och som är lite större kanske?
Kommer sjävklart inte på någon vettig uppgift nu menjag återkommer!

Visa signatur

LAN i stockholmv9
http://www.hazard.nu

Permalänk
Medlem

Jag vill gärna tävla mot andra som programmerar i ti-basic...

Kommer att ägna söndagen åt att göra ett spel i Dxball-stil! Lägger upp det här i kväll, kom gärna med bidrag ni också.

Visa signatur

Denta

Permalänk
Medlem

Hm... Vad sägs om att sortera char*s i bokstavsordning?

void SortChar3(char* arr[]) { }

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Denta
Jag vill gärna tävla mot andra som programmerar i ti-basic...

Kommer att ägna söndagen åt att göra ett spel i Dxball-stil! Lägger upp det här i kväll, kom gärna med bidrag ni också.

Ok, Iof så proggade jag i Asm för TI.
Sök på Tim Hegyi på www.ticalc.org så får du fram lite av det jag gjort. Bla ett spel i basic, Tower of hanoi.
Du får nog oxå fram Long Worms och ett som heter något i stil med Asm-Bas View eller sådant.

Jag började på ett spel som gick ut på att man hade ett sikte och skulle skjuta folk som ploppade upp på displayen. Detta blev dock så pass stort så det gick inte att då det färdig för att det fick inte plats i minnet. Detta var alltså i ASM.

Observera att detta var mitt första spel i ASM till ti83.
Skåda, källkoden till Long Worms

#include "ti83asm.inc" #include "tokens.inc" #DEFINE way 9327h #DEFINE curco 8280h #DEFINE curcoo 8285h #DEFINE xcoord 8270h #DEFINE ycoord 8275h .org $9327 prog_s: call _clrlcdfull call _runindicoff call _gfbufclr ld hl,1 push hl ld hl,32 ld (ycoord),hl ld hl,48 ld (xcoord),hl ld hl,1 ld (way),hl call _homeup ld hl,fp call _puts ld hl,17 ld (pencol),hl ld hl,25 ld (penrow),hl ld hl,codedby call _vputs ld hl,8 ld (pencol),hl ld hl,35 ld (penrow),hl ld hl,email call _vputs ld hl,31 ld (pencol),hl ld hl,55 ld (penrow),hl ld hl,pent call _vputs ;call _newline ;ld a,(highscore) ;ld l,a ;ld h,0 ;call _dispHL call _getkey call _clrlcdfull ld b,0 ld c,54 ld d,96 ld e,54 ld h,1 call _iline ld hl,1 ld (pencol),hl ld hl,1 ld (penrow),hl ld hl,tit call _vputs ld a,1 ld (curco),a mainloop: ml: ld a,(curco) inc a ld (curco),a sub 255 jp z,el jp ml el: ld a,1 mll: ld a,(curco) inc a ld (curco),a sub 255 jp z,ell jp mll ell: ld a,1 mlll: ld a,(curco) inc a ld (curco),a sub 255 jp z,elll jp mlll elll: ld a,1 mllll: ld a,(curco) inc a ld (curco),a sub 255 jp z,ellll jp mllll ellll: ld a,1 mlllll: ld a,(curco) inc a ld (curco),a sub 255 jp z,elllll jp mlllll elllll: ld a,1 mllllll: ld a,(curco) inc a ld (curco),a sub 255 jp z,ellllll jp mllllll ellllll: ld a,1 mlllllll: ld a,(curco) inc a ld (curco),a sub 255 jp z,elllllll jp mlllllll elllllll: ld a,1 mllllllll: ld a,(curco) inc a ld (curco),a sub 255 jp z,ellllllll jp mllllllll ellllllll: ;get keys ld a,0ffh out (1),a ld a,0feh out (1),a in a,(1) cp 253 jp z,only_left cp 251 jp z,only_right cp 254 jp z,only_down cp 247 jp z,only_up ld a,0ffh out (1),a ld a,0fdh out (1),a in a,(1) cp 191 jp z,Crash back_gk: ld a,(way) sub 1 jp z,left ld a,(way) sub 2 jp z,up ld a,(way) sub 3 jp z,right ld a,(way) sub 4 jp z,down bf_rk: ld a,(xcoord) ld b,a ld a,(ycoord) ld c,a ld d,3 call _ipoint sub 0 jp z,hh jp Crash hh: ld a,(ycoord) cp 0 jp z,crash ld a,(xcoord) cp 97 jp z,crash ld a,(xcoord) cp 0 jp z,crash ld a,(xcoord) ld b,a ld a,(ycoord) ld c,a ld d,1 call _ipoint pop hl ld de,1 add hl,de push hl ld a,1 jp mainloop Only_Up: ld hl,4 ld (way),hl jp back_gk Only_Down: ld hl,2 ld (way),hl jp back_gk Only_Left: ld hl,1 ld (way),hl jp back_gk Only_Right: ld hl,3 ld (way),hl jp back_gk up: ld a,(ycoord) dec a ld (ycoord),a jp bf_rk down: ld a,(ycoord) inc a ld (ycoord),a jp bf_rk left: ld a,(xcoord) dec a ld (xcoord),a jp bf_rk right: ld a,(xcoord) inc a ld (xcoord),a jp bf_rk Crash: call _clrlcdfull ld hl,1 ld (currow),hl ld hl,1 ld (curcol),hl ld hl,score call _puts ld hl,1 ld (currow),hl ld hl,6 ld (curcol),hl pop hl call _disphl call _newline ld hl,mb call _puts call _newline ret score: .db "Score: ",0 tit: .db "Long Worms By Tim Hegyi",0 mb: ; 1234567890123456 .db " By: Tim Hegyi ",0 fp: .db " " .db " Long Worms 1.0 ",0 codedby: .db "Coded by: Tim Hegyi",0 email: .db "tim_hegyi@hotmail.com",0 pent: .db "Hit any key!",0 .end

Visa signatur

tack o bock