Rekke koding og koding
Tirsdag, 14. oktober 2008Noen hevder at programmering er en kunst, og i siste instans, kan jeg bare enig spesielt når løsninger er funnet svært forskjellig for samme problem. For å forstå hvordan sant dette er som en identisk trenger i medisimo språk (JavaScript) kan løses med tilnærminger ganske annerledes og originalt.
Venstre null tast
Et tall, men talen er også gyldig for alle strengen, 123 123 kan bli fylt til venstre - til å trekke - med et antall nuller, for eksempel: 00123 Dette behovet er presentert ved flere anledninger og er nyttig for innretta - eller vis - en ren, implisitt indikerer høyeste verdi. I videoen, for eksempel den klassiske poeng (poeng) er ofte indikert av 001234 ved de fleste det kommer til 999999 Her ser du hvordan problemet ble løst ved ulike utviklere:
- / **
- * Venstre puten string
- *
- * @ Fra http://snipplr.com/view/8423/left-pad-string/
- * @ Forfatter web-http: / / www.mechanicmatt.com/
- *
- * @ Param num - for å fylle Striga
- * @ Param totalChars - Totalt antall tegn, inkludert "nuller"
- * @ Param padWidth - Karakterer brukes til å fylle, standard "0"
- * /
- num, totalChars, padWith ) { leadingZeros funksjon (num, totalChars, padWith) (
- num num + = "";
- ? padWith = (padWith)? padWith: "0";
- num. length <totalChars ) { if (lengde interne referansenummer <totalChars) (
- num. length <totalChars ) { while (lengde interne referansenummer <totalChars) (
- padWith + num = num;
- )
- { } Else ())
- num. length > totalChars ) { //if padWith was a multiple character string and num was overpadded if (lengde interne referansenummer> totalChars) (/ / hvis padWith var en av flere tegnstreng og num var overpadded
- num. length - totalChars ) , totalChars ) ; = Num num. Delstreng ((interne referansenummer lengde - totalChars), totalChars);
- { } Else ())
- return num;
- )
- leadingZeros ( "asdf" , 10 , "0" ) ) ; alert (leadingZeros ( "asdf", 10 "0"));
Denne løsningen er ekstremt velformulerte, men kan legge til et ubestemt antall 0 nummer num også velge font brukes av padWidth i stedet for standard 0
Definitivt originalen, men denne løsningen:
- / **
- * String_pad
- *
- * @ Fra http://snipplr.com/view/700/stringpad/
- * @ Forfatter http://d.hatena.ne.jp/brazil/20060721/1153489937
- *
- * @ Param str - for å fylle Striga
- * @ Param len - Totalt antall tegn, inkludert "nuller"
- * @ Param ch - Karakterer brukes til å fylle
- * /
- str, len, ch ) { return new Array ( len- ( '' +str ) . length + 1 ) . join ( ch ) + str } fungere rondell (str, len, kap.) (return new Array (len-(''+ str). lengde + 1). delta (ka) + str)
- pad ( 56 , 4 , '0' ) ) ; // 0056 alert (rondell (56, 4,'0 ')); / / 0056
Samme resultat, med en helt annen tilnærming. Igjen har vi muligheten til å bestemme antallet tegn padding gjennom parameteren len og fonten som brukes av ch Ikke klarer å bruke standard leveres i forrige funksjon.
Den ene som jeg bruker, i stedet ...:
- / **
- * String_pad
- *
- * @ Forfatter Giovambattista Fazioli
- * @ Web http://www.undolog.com
- *
- * @ Param s - å fylle Striga
- * @ Param l - En streng som angir tegnet er at lengden
- * For eksempel "0000"-tegnet = "0" lengde 4
- * /
- s,l ) { return ( l. substr ( 0 , ( l. length -s. length ) ) +s ) ; } padding-funksjon (r, l) (Return (l. substr (0, (l-s lengde. lengde)) + r);)
- padding ( '123' , '0000' ) ) ; alert (padding ('123 ','0000'));
Hvis du har andre interessante løsninger kan du kommentar ![]()






















Napolux sa:
Linje 12 av funksjon forestille skal være:
alert (padding ('123 ','0000'));Giovambattista Fazioli sa:
@ Napolux:
Riktig!
Francesco Gavello sa:
Interessant, de 3 ulike tilnærminger!
Camelize, CamelCase | Undolog.com sa:
[...] Allerede sett i etterkrigstiden rekke koding og koding tilnærminger som en utvikler kan ha for å løse problemer er forskjellige og [...]
unwiredbrain sa:
Jeg testet tidspunktet for alle tre metodene. Det første er tregere forutsigbarhet, mens det tredje er forbanna fort.
Jeg lansert 100.000 ganger den enkelte metoder for å gjøre ham padding til ti sifrene i et firesifret tall, og jeg har samlet fra tid til annen kjøring gang med en banal
På slutten har jeg beregnet aritmetiske gjennomsnittet av individuell tid.
Den første algoritmen tar 0,06896 sekunder, andre benytter 0,06896 mens det tredje går opp til 0,01331.
Øke antallet lanseringer millioner forskjellen mellom de tre begynner å bli påtagelig:
Den første algoritmen tar 0.047184 sekunder, den andre 0.028644 mens det tredje bare 0,018635.
Min forskning ubrukelig for i dag er gjort. En snart fordel.
PS: Kurset bør tas med et smil på munnen ...
Napolux sa:
@ Unwiredbrain:
For nysgjerrighet, på hvilken nettleser du har testen? Har du prøvd andre nettlesere for å se om det er forskjeller mellom weblesere og leseren?
Giovambattista Fazioli sa:
@ Napolux: Bravo! Jeg har fjernet jungeltelegrafen
Jeg var fascinert av den også ... prøv Google Chrome 
Napolux sa:
PHP er alltid, JS endringer i henhold til leseren, nei?
Napolux sa:
@ Napolux:
Jeg forklarte onde ... jeg ønsket å si "endre motor JS henhold til leseren"
unwiredbrain sa:
@ Napolux, Giovambattista Fazioli: Firefox 3.0.3 på Linux.
Opera åpenbart bringer ut resultatene for å si det minst spennende: i 0.010882, 0.013681, og (høre høre) 0,007994 millisekunder! Nesten 77, 52 og 57% avslag!
Ah, jeg ser at det bare timer tidligere i kommentarer jeg snakket om sekunder: i realiteten er det millisekunder.
Jeg vil gjerne se hvordan ting er hjemme KHTML / WebKit og Firefox 3.1, men fremdeles ikke har tilstrekkelig styrke og stabilitet for å gjøre alvorlige test. Jeg ber deg om å avkrefte det i tilfelle vet noe om det, ville jeg være fornøyd ...
Som for Chrome, så snart den er tilgjengelig for Linux spremerò meg å gå ...
Hilsener.
PS: snart publisere kilden til test suite, nå har jeg egentlig ikke tid ...
unwiredbrain sa:
Men mest av alt: hvorfor min gravatar de forlot å gjøre lystig Donnini at mercimonio selv? Mysteries av getAvatar ...
Giovambattista Fazioli sa:
@ Napolux:
Riktig! Imidlertid å være nøyaktig, men PHP er ikke akkurat det samme, er det forskjellige versjoner på forskjellige servere, med flere utvidelser. Men dette er å anse for langt mer kompliserte tilfellene av våre.
Napolux sa:
@ Giovambattista Fazioli:
Fiskale ...
Giovambattista Fazioli sa:
@ Napolux Kun med deg at jeg har råd til å være "presis" ... minst du forstår hva jeg mente
og takker for beskatning 
Napolux sa:
Nå begynner jeg å trolleggiare her, en liten "som de gjorde fra meg for KB / kB / Kb og godt selskap.
unwiredbrain sa:
@ Napolux: KIB og KIB løse alt.