Vielzahl von Kodierung und Codierung
Dienstag, 14. Oktober, 2008Jemand macht geltend, dass die Programmierung ist eine Kunst, und letztlich kann ich nur zustimmen vor allem, wenn Lösungen gefunden werden sehr unterschiedlich für das gleiche Problem. Um zu verstehen, wie wahr das ist wie eine identische müssen in medisimo Sprache (Javascript) gelöst werden können, mit ganz unterschiedlichen Ansätzen und Original.
Linke Null-Pad
Eine Reihe, aber die Rede ist auch gültig für eine beliebige Zeichenfolge, wie z. B. 123 ausgefüllt werden kann auf der linken Seite - zu ziehen - mit einer Reihe von Nullen, zum Beispiel: 00123 Diese Notwendigkeit ist bei mehreren Gelegenheiten und ist nützlich für an - oder zeigen - eine Reihe sauber, implizit hervorgeht, ihren maximalen Wert. In dem Video, zum Beispiel die klassische Partitur (der Partitur) ist oft mit 001234 bei den meisten es um 999999 Hier ist, wie das Problem wurde gelöst, indem auch viele Entwickler:
- / **
- * Links String Pad
- *
- * @ Von http://snipplr.com/view/8423/left-pad-string/
- * Autor @ web-http: / / www.mechanicmatt.com/
- *
- * @ Param num - zu füllen Striga
- * @ Param totalChars - Gesamtzahl der Zeichen, einschließlich der "Nullen"
- * @ Param padWidth - Zeichen verwendet zu füllen, standardmäßig "0"
- * /
- num, totalChars, padWith ) { leadingZeros Funktion (num, totalChars, padWith) (
- num num + = "";
- ? padWith = (padWith)? padWith: "0";
- num. length <totalChars ) { if (Länge interne Nummer <totalChars) (
- num. length <totalChars ) { while (Länge interne Nummer <totalChars) (
- padWith + num = num;
- )
- { } Else ())
- num. length > totalChars ) { //if padWith was a multiple character string and num was overpadded if (Länge interne Referenznummer> totalChars) (/ / if padWith wurde ein Vielfaches Zeichenkette und num wurde overpadded
- num. length - totalChars ) , totalChars ) ; = Num num. Substring ((interne Referenznummer Länge - totalChars), totalChars);
- { } Else ())
- Rückkehr NUM;
- )
- leadingZeros ( "asdf" , 10 , "0" ) ) ; alert (leadingZeros ( "asdf", 10, "0"));
Diese Lösung ist äußerst artikulieren, sondern können eine unbestimmte Anzahl von 0 Anzahl num auch die Wahl der Schrift, die durch padWidth anstelle des 0
Definitiv Original, aber diese Lösung:
- / **
- * String_pad
- *
- * @ Von http://snipplr.com/view/700/stringpad/
- * @ Autor http://d.hatena.ne.jp/brazil/20060721/1153489937
- *
- * @ Param str - zu füllen Striga
- * @ Param len - Gesamtzahl der Zeichen, einschließlich der "Nullen"
- * @ Param ch - Zeichen verwendet werden, um
- * /
- str, len, ch ) { return new Array ( len- ( '' +str ) . length + 1 ) . join ( ch ) + str } Pad-Funktion (str, len, CH) (Hin-und Rückfahrt new Array (len-(''+ str). Länge + 1). beitreten (CH) + str)
- pad ( 56 , 4 , '0' ) ) ; // 0056 alert (pad (56, 4,'0 ')); / / 0056
Gleichen Ergebnis, mit einer völlig anderen Ansatz. Auch hier haben wir die Möglichkeit zu entscheiden, die Anzahl der Zeichen Polsterung durch den Parameter len und die Schrift, die von ch Schlägt fehl, den Standard zu verwenden, die in der vorherigen Funktion.
Was verwende ich anstelle ...:
- / **
- * String_pad
- *
- * @ Autor Giovambattista Fazioli
- * @ Web http://www.undolog.com
- *
- * @ Param s - zu füllen Striga
- * @ Param l - Ein String, dass die Zeichen ist, dass die Länge
- * Wie "0000" Zeichen = "0" Länge 4
- * /
- s,l ) { return ( l. substr ( 0 , ( l. length -s. length ) ) +s ) ; } padding-Funktion (s, l) (Hin-und Rückfahrt (l. substr (0, (l-s Länge. Länge)) + s);)
- padding ( '123' , '0000' ) ) ; alert (padding ('123 ','0000'));
Wenn Sie weitere interessante Lösungen wenden Sie sich bitte Kommentar ![]()





















Napolux sagte:
Linie 12 von Ihrer Funktion vorstellen sollten:
alert (padding ('123 ','0000'));Giovambattista Fazioli sagte:
@ Napolux:
Richtig!
Francesco Gavello sagte:
Interessant, die 3 verschiedene Ansätze!
Camelize, CamelCase | Undolog.com sagte:
[...] Bereits in der Post Vielzahl von Kodierung und Codierung Ansätze, dass ein Entwickler Mai haben, um Probleme zu lösen sind unterschiedlich und [...]
unwiredbrain sagte:
Getestet habe ich den Zeitpunkt der alle drei Methoden. Die erste ist die vorhersehbar langsamer, während der dritte ist verdammt schnell.
Ich startete 100.000 mal die einzelnen Methoden, um ihm die Polsterung zu zehn Ziffern einer vier-stelligen Zahl, und ich haben von Zeit zu Zeit die Ausführungszeit mit einem banal
Am Ende habe ich berechnet das arithmetische Mittel der individuellen Zeit.
Der erste Algorithmus nimmt 0,06896 Sekunden, die zweite beschäftigt 0,06896 während der dritte geht bis zu 0,01331.
Erhöhung der Zahl der Starts Million Unterschied zwischen den drei beginnt zu spürbar:
Der erste Algorithmus nimmt 0.047184 Sekunden, die zweite 0.028644 während der dritte nur 0,018635.
Meine Forschung nutzlos für heute ist getan. Ein bald profitieren.
PS: Dieser Kurs sollte mit einem Lächeln auf den Lippen ...
Napolux sagte:
@ Unwiredbrain:
Für Neugier, auf dem Browser haben Sie die Prüfung? Haben Sie versucht anderen Browsern, um zu sehen, ob es Unterschiede zwischen Browser und Browser?
Giovambattista Fazioli sagte:
@ Napolux: bravo! Ich habe entfernt die Mundpropaganda
Ich war fasziniert von ihr zu versuchen ... Google-Chrome 
Napolux sagte:
PHP ist immer, JS ändert sich, je nachdem an den Browser, nein?
Napolux sagte:
@ Napolux:
Ich habe erläutert, böse ... Ich wollte sagen, "ändern Sie die JS-Engine nach dem Browser"
unwiredbrain sagte:
@ Napolux, Giovambattista Fazioli: Firefox 3.0.3 auf Linux.
Opera bringt natürlich die Ergebnisse zu sagen, die am wenigsten spannend: in 0.010882, 0.013681, und (hören, hören) 0,007994 Millisekunden! Fast 77, 52 und 57% Rabatt!
Ah, ich sehe, dass nur Stunden früher in den Erläuterungen Ich sprach von Sekunden: in Wirklichkeit ist es Millisekunden.
Ich möchte sehen, wie die Dinge sind zu Hause KHTML / WebKit und Firefox 3.1, aber immer noch nicht über ausreichende Festigkeit und Stabilität, um ernsthafte Prüfung. Ich bitte Sie, widerlegen sie im Fall wissen, etwas dagegen zu unternehmen, Ich würde mich freuen, ...
Wie für Chrom, sobald es verfügbar ist für Linux spremerò mir gehen ...
Grüße.
PS: in Kürze die Quelle der Test-Suite, jetzt habe ich nicht wirklich an der Zeit ...
unwiredbrain sagte:
Aber vor allem: warum meine gravatar sie nach links, um Merry Donnini, dass mercimonio selbst? Mysteries of getAvatar ...
Giovambattista Fazioli sagte:
@ Napolux:
Richtig! Allerdings, um genau zu sein, auch PHP ist nicht genau das gleiche, gibt es verschiedene Versionen auf verschiedenen Servern, mit mehreren Erweiterungen. Aber dies ist zu berücksichtigen, für viel komplizierter Fälle von uns.
Napolux sagte:
@ Giovambattista Fazioli:
Steuerliche ...
Giovambattista Fazioli sagte:
@ Napolux Nur mit Ihnen kann ich leisten, werden "präzise" ... mindestens Sie verstehen, was ich meinte
und schätzen die Besteuerung 
Napolux sagte:
Jetzt beginne ich zu trolleggiare hier, ein wenig ", wie sie es von mir für KB / KB / KB und guter Gesellschaft.
unwiredbrain sagte:
@ Napolux: KIB und KIB alles lösen.