Ποικιλία από την κωδικοποίηση και την κωδικοποίηση
Τρίτη, 14 Οκτωβρίου 2008Κάποιος ισχυρίζεται ότι ο προγραμματισμός είναι τέχνη και, τελικά, μπορώ παρά να συμφωνήσω, ιδίως όταν οι λύσεις βρέθηκαν πολύ διαφορετική για το ίδιο πρόβλημα. Για να καταλάβετε πώς αυτή η αλήθεια είναι σαν την ίδια ανάγκη σε medisimo γλώσσα (Javascript) μπορούν να λυθούν με αρκετά διαφορετικές προσεγγίσεις και πρωτότυπο.
Αριστερά μηδέν Pad
Ένας αριθμός, αλλά η ομιλία ισχύει επίσης για κάθε string, όπως η 123 μπορεί να πληρωθεί για την αριστερά - να - με μια σειρά μηδενικά, για παράδειγμα: 00123 Η ανάγκη αυτή παρουσιάστηκε σε αρκετές περιπτώσεις και είναι χρήσιμες για την ευθυγραμμιστεί - ή δείχνουν - μια σειρά καθαρά, εμμέσως δείχνει τη μέγιστη τιμή. Στο βίντεο, για παράδειγμα, η κλασική βαθμολογία (η βαθμολογία) είναι συχνά αναφέρεται από 001234 ότι το πολύ πρόκειται για 999999 Να πώς το πρόβλημα λύθηκε με διάφορους προγραμματιστές:
- / **
- * Αριστεράς Pad string
- *
- * @ Από http://snipplr.com/view/8423/left-pad-string/
- * @ Συγγραφέας web-http: / / www.mechanicmatt.com/
- *
- * @ Param NUM - για την πλήρωση Striga
- * @ Param totalChars - Συνολικός αριθμός χαρακτήρων, συμπεριλαμβανομένου του "μηδενικά"
- * @ Param padWidth - χαρακτήρων που χρησιμοποιούνται για την πλήρωση, προεπιλογή "0"
- * /
- num, totalChars, padWith ) { leadingZeros λειτουργία (NUM, totalChars, padWith) (
- num = num + ""?
- ? padWith = (padWith); padWith: "0"?
- num. length <totalChars ) { εάν (μήκος εσωτερικό αριθμό <totalChars) (
- num. length <totalChars ) { ενώ (μήκος εσωτερικό αριθμό <totalChars) (
- padWith + NUM NUM =?
- )
- { } Else ())
- num. length > totalChars ) { //if padWith was a multiple character string and num was overpadded εάν (μήκος εσωτερικό αριθμό> totalChars) (/ / padWith εάν ήταν πολλαπλή και αριθμό χαρακτήρων που ήταν overpadded
- num. length - totalChars ) , totalChars ) ; = NUM NUM. Substring ((αριθμός μήκους - totalChars), totalChars)?
- { } Else ())
- επιστροφή num?
- )
- leadingZeros ( "asdf" , 10 , "0" ) ) ; συναγερμού (leadingZeros ( "asdf", 10, "0"))?
Η λύση αυτή είναι εξαιρετικά άρθρωση, αλλά μπορεί να προσθέσει απεριόριστο αριθμό 0 0 έως αριθμού num επίσης την επιλογή της γραμματοσειράς που χρησιμοποιείται από padWidth αντί για το προεπιλεγμένο 0
Σίγουρα πρωτότυπο, ωστόσο, αυτή η λύση:
- / **
- * String_pad
- *
- * @ Από http://snipplr.com/view/700/stringpad/
- * @ Συγγραφέας http://d.hatena.ne.jp/brazil/20060721/1153489937
- *
- * @ Param σ. - για την πλήρωση Striga
- * @ Param LEN - Συνολικός αριθμός χαρακτήρων, συμπεριλαμβανομένου του "μηδενικά"
- * @ Param CH - χαρακτήρων που χρησιμοποιούνται για την πλήρωση
- * /
- str, len, ch ) { return new Array ( len- ( '' +str ) . length + 1 ) . join ( ch ) + str } λειτουργία επίθεμα (STR, LEN, CH) (επιστροφή νέα Array (LEN-(+''STR). μήκους + 1). ενταχθούν (CH) + σ.)
- pad ( 56 , 4 , '0' ) ) ; // 0056 συναγερμού (pad (56, 4,'0 '))? / / 0056
Ίδιο αποτέλεσμα, με μια εντελώς διαφορετική προσέγγιση. Και πάλι έχουμε την ευκαιρία να αποφασίσουν τον αριθμό των χαρακτήρων μέσω της επενδυτικής παράμετρο len και η γραμματοσειρά που χρησιμοποιείται από τον ch Αδυνατεί να χρησιμοποιήσετε την προεπιλογή που παρέχονται στις προηγούμενες λειτουργία.
Τι να χρησιμοποιήσω αντί ...:
- / **
- * String_pad
- *
- * @ Συγγραφέας Giovambattista Fazioli
- * @ Web http://www.undolog.com
- *
- * @ S Παράμ - για την πλήρωση Striga
- * @ Param l - Μια συμβολοσειρά που δείχνει τον χαρακτήρα είναι ότι το μήκος
- * Όπως το "0000" χαρακτήρα = "0" μήκος 4
- * /
- s,l ) { return ( l. substr ( 0 , ( l. length -s. length ) ) +s ) ; } φουλάρ λειτουργία (s, l) (μετ 'επιστροφής (λ. substr (0, (L-s μήκος. μήκους)) + s)?)
- padding ( '123' , '0000' ) ) ; συναγερμού (παραγέμισμα ('123 ', «0000»))?
Αν έχετε άλλες ενδιαφέρουσες λύσεις παρακαλώ σχόλιο ![]()



















Napolux δήλωσε:
Γραμμή 12 του λειτουργία θα πρέπει να φανταστείτε:
συναγερμού (παραγέμισμα ('123 ', «0000»))?Giovambattista Fazioli δήλωσε:
@ Napolux:
Σωστός!
Francesco Gavello δήλωσε:
Ενδιαφέρον, το 3 διαφορετικές προσεγγίσεις!
Camelize, CamelCase | Undolog.com δήλωσε:
[...] Ήδη δει στη μετά την κωδικοποίηση και την ποικιλία των προσεγγίσεων που κωδικοποιεί προγραμματιστής μπορεί να έχουν να επιλύσουν προβλήματα είναι διαφορετικά και [...]
unwiredbrain δήλωσε:
Θα δοκιμαστεί το χρονοδιάγραμμα των τριών μεθόδων. Η πρώτη είναι η πιο αργή προβλέψιμο, ενώ η τρίτη είναι καταραμένο γρήγορα.
Θα ξεκινήσει 100.000 φορές η κάθε μια από τις μεθόδους για να τον κάνει να το παραγέμισμα με δέκα ψηφία από έναν τετραψήφιο αριθμό, και έχω συλλέγονται από καιρό σε καιρό, την προθεσμία εκτέλεσης με κοινότυπος
Στο τέλος έχω υπολογίζεται ο αριθμητικός μέσος όρος των επιμέρους χρονικό διάστημα.
Ο πρώτος αλγόριθμος λαμβάνει 0,06896 δευτερόλεπτα, το δεύτερο απασχολεί 0,06896 ενώ το τρίτο πηγαίνει μέχρι 0,01331.
Η αύξηση του αριθμού των εγκαινιάζει ένα εκατομμύριο διαφορά μεταξύ των τριών αρχίζει να χειροπιαστός:
Ο πρώτος αλγόριθμος λαμβάνει 0.047184 δευτερόλεπτα, το δεύτερο 0.028644 ενώ η τρίτη μόλις 0,018635.
My άχρηστα για την έρευνα σήμερα έχει γίνει. Σύντομα όφελος.
PS: Αυτή η πορεία πρέπει να λαμβάνονται με ένα χαμόγελο στα χείλη ...
Napolux δήλωσε:
@ Unwiredbrain:
Για την περιέργεια, την οποία browser έχετε τη δοκιμή; Έχετε δοκιμάσει άλλα προγράμματα περιήγησης για να δει αν υπάρχουν διαφορές μεταξύ των browsers και browser;
Giovambattista Fazioli δήλωσε:
@ Napolux: μπράβο! Έχω απομακρυνθεί το στόμα σε στόμα
I was intrigued από ότι θα ήταν πολύ ... δοκιμάστε το Google Chrome 
Napolux δήλωσε:
PHP είναι πάντα, JS αλλάζει ανάλογα με τον browser, δεν είναι;
Napolux δήλωσε:
@ Napolux:
Εξήγησα κακό ... ήθελα να πω "αλλαγή ο κινητήρας JS σύμφωνα με το πρόγραμμα περιήγησης"
unwiredbrain δήλωσε:
@ Napolux, Giovambattista Fazioli: Firefox 3.0.3 για Linux.
Opera προφανώς βγάζει τα αποτελέσματα για να πούμε το λιγότερο συναρπαστικό: σε 0.010882, 0.013681, και (ακούω ακούω) 0,007994 χιλιοστά! Σχεδόν το 77, 52 και 57% Off!
Ah, βλέπω ότι μόνο ώρες νωρίτερα, στις παρατηρήσεις, μίλησα για δευτερόλεπτα: στην πραγματικότητα είναι χιλιοστά του δευτερολέπτου.
Θα ήθελα να δω πώς έχουν τα πράγματα στο σπίτι KHTML / WebKit και Firefox 3.1, αλλά ακόμη δεν έχουν επαρκή αντοχή και σταθερότητα, προκειμένου να κάνουν σοβαρή δοκιμασία. Σας ζητώ να αναιρεί ότι σε περίπτωση που γνωρίζουν κάτι για αυτό, θα χαιρόμουν ...
Όσο για Chrome, μόλις θα είναι διαθέσιμο για Linux spremerò θα μου ...
Χαιρετισμούς.
PS: δημοσιεύσει σύντομα την πηγή της δοκιμής σουίτα, τώρα πραγματικά δεν έχω χρόνο ...
unwiredbrain δήλωσε:
Αλλά το σημαντικότερο όλων: γιατί μου gravatar άφησαν να κάνουν χαρούμενα Donnini mercimonio ότι ο ίδιος; Μυστήρια του getAvatar ...
Giovambattista Fazioli δήλωσε:
@ Napolux:
Σωστός! Ωστόσο, για την ακρίβεια, ακόμη και PHP δεν είναι ακριβώς το ίδιο, υπάρχουν διαφορετικές εκδοχές για διαφορετικούς διακομιστές, με πολλές παρατάσεις. Αυτό όμως θα πρέπει να θεωρείται για πολύ πιο περίπλοκες περιπτώσεις μας.
Napolux δήλωσε:
@ Giovambattista Fazioli:
Φορολογικά ...
Giovambattista Fazioli δήλωσε:
@ Μπορείτε Napolux Μόνο με εγώ μπορεί να είναι "ακριβή" ... τουλάχιστον να καταλαβαίνεις τι εννοούσα
και να εκτιμήσουν τη φορολογία 
Napolux δήλωσε:
Τώρα αρχίζω να trolleggiare εδώ, λίγο ", όπως έπραξαν από μένα για KB / kB / Kb και καλή παρέα.
unwiredbrain δήλωσε:
@ Napolux: KIB και KIB λύσει όλα τα προβλήματα.