Ποικιλία από την κωδικοποίηση και την κωδικοποίηση

Τρίτη, 14 Οκτωβρίου 2008

Κάποιος ισχυρίζεται ότι ο προγραμματισμός είναι τέχνη και, τελικά, μπορώ παρά να συμφωνήσω, ιδίως όταν οι λύσεις βρέθηκαν πολύ διαφορετική για το ίδιο πρόβλημα. Για να καταλάβετε πώς αυτή η αλήθεια είναι σαν την ίδια ανάγκη σε medisimo γλώσσα (Javascript) μπορούν να λυθούν με αρκετά διαφορετικές προσεγγίσεις και πρωτότυπο.

Αριστερά μηδέν Pad

Ένας αριθμός, αλλά η ομιλία ισχύει επίσης για κάθε string, όπως η 123 μπορεί να πληρωθεί για την αριστερά - να - με μια σειρά μηδενικά, για παράδειγμα: 00123 Η ανάγκη αυτή παρουσιάστηκε σε αρκετές περιπτώσεις και είναι χρήσιμες για την ευθυγραμμιστεί - ή δείχνουν - μια σειρά καθαρά, εμμέσως δείχνει τη μέγιστη τιμή. Στο βίντεο, για παράδειγμα, η κλασική βαθμολογία (η βαθμολογία) είναι συχνά αναφέρεται από 001234 ότι το πολύ πρόκειται για 999999 Να πώς το πρόβλημα λύθηκε με διάφορους προγραμματιστές:

JavaScript:
  1. / **
  2. * Αριστεράς Pad string
  3. *
  4. * @ Από http://snipplr.com/view/8423/left-pad-string/
  5. * @ Συγγραφέας web-http: / / www.mechanicmatt.com/
  6. *
  7. * @ Param NUM - για την πλήρωση Striga
  8. * @ Param totalChars - Συνολικός αριθμός χαρακτήρων, συμπεριλαμβανομένου του "μηδενικά"
  9. * @ Param padWidth - χαρακτήρων που χρησιμοποιούνται για την πλήρωση, προεπιλογή "0"
  10. * /
  11. num, totalChars, padWith ) { leadingZeros λειτουργία (NUM, totalChars, padWith) (
  12. num = num + ""?
  13. ? padWith = (padWith); padWith: "0"?
  14. num. length <totalChars ) { εάν (μήκος εσωτερικό αριθμό <totalChars) (
  15. num. length <totalChars ) { ενώ (μήκος εσωτερικό αριθμό <totalChars) (
  16. padWith + NUM NUM =?
  17. )
  18. { } Else ())
  19. num. length > totalChars ) { //if padWith was a multiple character string and num was overpadded εάν (μήκος εσωτερικό αριθμό> totalChars) (/ / padWith εάν ήταν πολλαπλή και αριθμό χαρακτήρων που ήταν overpadded
  20. num. length - totalChars ) , totalChars ) ; = NUM NUM. Substring ((αριθμός μήκους - totalChars), totalChars)?
  21. { } Else ())
  22. επιστροφή num?
  23. )
  24. leadingZeros ( "asdf" , 10 , "0" ) ) ; συναγερμού (leadingZeros ( "asdf", 10, "0"))?

Η λύση αυτή είναι εξαιρετικά άρθρωση, αλλά μπορεί να προσθέσει απεριόριστο αριθμό 0 0 έως αριθμού num επίσης την επιλογή της γραμματοσειράς που χρησιμοποιείται από padWidth αντί για το προεπιλεγμένο 0
Σίγουρα πρωτότυπο, ωστόσο, αυτή η λύση:

JavaScript:
  1. / **
  2. * String_pad
  3. *
  4. * @ Από http://snipplr.com/view/700/stringpad/
  5. * @ Συγγραφέας http://d.hatena.ne.jp/brazil/20060721/1153489937
  6. *
  7. * @ Param σ. - για την πλήρωση Striga
  8. * @ Param LEN - Συνολικός αριθμός χαρακτήρων, συμπεριλαμβανομένου του "μηδενικά"
  9. * @ Param CH - χαρακτήρων που χρησιμοποιούνται για την πλήρωση
  10. * /
  11. str, len, ch ) { return new Array ( len- ( '' +str ) . length + 1 ) . join ( ch ) + str } λειτουργία επίθεμα (STR, LEN, CH) (επιστροφή νέα Array (LEN-(+''STR). μήκους + 1). ενταχθούν (CH) + σ.)
  12. pad ( 56 , 4 , '0' ) ) ; // 0056 συναγερμού (pad (56, 4,'0 '))? / / 0056

Ίδιο αποτέλεσμα, με μια εντελώς διαφορετική προσέγγιση. Και πάλι έχουμε την ευκαιρία να αποφασίσουν τον αριθμό των χαρακτήρων μέσω της επενδυτικής παράμετρο len και η γραμματοσειρά που χρησιμοποιείται από τον ch Αδυνατεί να χρησιμοποιήσετε την προεπιλογή που παρέχονται στις προηγούμενες λειτουργία.
Τι να χρησιμοποιήσω αντί ...:

JavaScript:
  1. / **
  2. * String_pad
  3. *
  4. * @ Συγγραφέας Giovambattista Fazioli
  5. * @ Web http://www.undolog.com
  6. *
  7. * @ S Παράμ - για την πλήρωση Striga
  8. * @ Param l - Μια συμβολοσειρά που δείχνει τον χαρακτήρα είναι ότι το μήκος
  9. * Όπως το "0000" χαρακτήρα = "0" μήκος 4
  10. * /
  11. s,l ) { return ( l. substr ( 0 , ( l. length -s. length ) ) +s ) ; } φουλάρ λειτουργία (s, l) (μετ 'επιστροφής (λ. substr (0, (L-s μήκος. μήκους)) + s)?)
  12. padding ( '123' , '0000' ) ) ; συναγερμού (παραγέμισμα ('123 ', «0000»))?

Αν έχετε άλλες ενδιαφέρουσες λύσεις παρακαλώ σχόλιο : D

Σχετικές Post

16 σχόλια: "Οι ποικιλίες της κωδικοποίησης και κωδικοποίησης"

  1. getAvatar 1,0 Τρίτη, 14 Οκτωβρίου 2008 στις 14:49
    Napolux δήλωσε:

    Γραμμή 12 του λειτουργία θα πρέπει να φανταστείτε:

      συναγερμού (παραγέμισμα ('123 ', «0000»))? 
    
  2. getAvatar 1,0 Τρίτη, 14 Οκτωβρίου 2008 στις 14:53
    Giovambattista Fazioli δήλωσε:

    @ Napolux:

    Γραμμή 12 του λειτουργία θα πρέπει να φανταστεί κανείς: συναγερμού (παραγέμισμα ('123 ', «0000»))?

    Σωστός! : D

  3. getAvatar 1,0 Τετάρτη, 15η Οκτωβρίου, 2008 στις 10:07 π.μ.
    Francesco Gavello δήλωσε:

    Ενδιαφέρον, το 3 διαφορετικές προσεγγίσεις! :)

  4. getAvatar 1,0 Δευτέρα, 20 Οκτωβρίου, 2008 στις 10:14
    Camelize, CamelCase | Undolog.com δήλωσε:

    [...] Ήδη δει στη μετά την κωδικοποίηση και την ποικιλία των προσεγγίσεων που κωδικοποιεί προγραμματιστής μπορεί να έχουν να επιλύσουν προβλήματα είναι διαφορετικά και [...]

  5. getAvatar 1,0 Πέμπτη 06 Νοεμβρίου, 2008 στις 00:10
    unwiredbrain δήλωσε:

    Θα δοκιμαστεί το χρονοδιάγραμμα των τριών μεθόδων. Η πρώτη είναι η πιο αργή προβλέψιμο, ενώ η τρίτη είναι καταραμένο γρήγορα.

    Θα ξεκινήσει 100.000 φορές η κάθε μια από τις μεθόδους για να τον κάνει να το παραγέμισμα με δέκα ψηφία από έναν τετραψήφιο αριθμό, και έχω συλλέγονται από καιρό σε καιρό, την προθεσμία εκτέλεσης με κοινότυπος

      var ωράρια = []? 
      var χρόνος = 0? 
    
      για (...) ( 
          = χρόνος (νέα ημερομηνία). getTime ()? 
          robaDaEseguire ()? 
          χρονοδιαγράμματα [i] = ((νέα ημερομηνία). getTime () - time)? 
      ) 
    

    Στο τέλος έχω υπολογίζεται ο αριθμητικός μέσος όρος των επιμέρους χρονικό διάστημα.

    Ο πρώτος αλγόριθμος λαμβάνει 0,06896 δευτερόλεπτα, το δεύτερο απασχολεί 0,06896 ενώ το τρίτο πηγαίνει μέχρι 0,01331.

    Η αύξηση του αριθμού των εγκαινιάζει ένα εκατομμύριο διαφορά μεταξύ των τριών αρχίζει να χειροπιαστός:
    Ο πρώτος αλγόριθμος λαμβάνει 0.047184 δευτερόλεπτα, το δεύτερο 0.028644 ενώ η τρίτη μόλις 0,018635.

    My άχρηστα για την έρευνα σήμερα έχει γίνει. Σύντομα όφελος.

    PS: Αυτή η πορεία πρέπει να λαμβάνονται με ένα χαμόγελο στα χείλη ... ;-)

  6. getAvatar 1,0 Πέμπτη 06 Νοεμβρίου, 2008 στις 16:59
    Napolux δήλωσε:

    @ Unwiredbrain:
    Για την περιέργεια, την οποία browser έχετε τη δοκιμή; Έχετε δοκιμάσει άλλα προγράμματα περιήγησης για να δει αν υπάρχουν διαφορές μεταξύ των browsers και browser;

  7. getAvatar 1,0 Πέμπτη 06 Νοεμβρίου, 2008 στις 17:05
    Giovambattista Fazioli δήλωσε:

    @ Napolux: μπράβο! Έχω απομακρυνθεί το στόμα σε στόμα : D I was intrigued από ότι θα ήταν πολύ ... δοκιμάστε το Google Chrome : D

  8. getAvatar 1,0 Πέμπτη 06 Νοεμβρίου, 2008 στις 18:39
    Napolux δήλωσε:

    PHP είναι πάντα, JS αλλάζει ανάλογα με τον browser, δεν είναι; : P

  9. getAvatar 1,0 Παρασκευή 07 Νοεμβρίου, 2008 στις 01:02
    Napolux δήλωσε:

    @ Napolux:

    PHP είναι πάντα, JS αλλάζει ανάλογα με τον browser, δεν είναι;

    Εξήγησα κακό ... ήθελα να πω "αλλαγή ο κινητήρας JS σύμφωνα με το πρόγραμμα περιήγησης"

  10. getAvatar 1,0 Παρασκευή 07 Νοεμβρίου, 2008 στις 07:38
    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: δημοσιεύσει σύντομα την πηγή της δοκιμής σουίτα, τώρα πραγματικά δεν έχω χρόνο ...

  11. getAvatar 1,0 Παρασκευή 07 Νοεμβρίου, 2008 στις 07:41
    unwiredbrain δήλωσε:

    Αλλά το σημαντικότερο όλων: γιατί μου gravatar άφησαν να κάνουν χαρούμενα Donnini mercimonio ότι ο ίδιος; Μυστήρια του getAvatar ...

  12. getAvatar 1,0 Παρασκευή 07 Νοεμβρίου, 2008 στις 10:41 π.μ.
    Giovambattista Fazioli δήλωσε:

    @ Napolux:

    Εξήγησα κακό ... ήθελα να πω "αλλαγή ο κινητήρας JS σύμφωνα με το πρόγραμμα περιήγησης"

    Σωστός! Ωστόσο, για την ακρίβεια, ακόμη και PHP δεν είναι ακριβώς το ίδιο, υπάρχουν διαφορετικές εκδοχές για διαφορετικούς διακομιστές, με πολλές παρατάσεις. Αυτό όμως θα πρέπει να θεωρείται για πολύ πιο περίπλοκες περιπτώσεις μας. : D

  13. getAvatar 1,0 Δευτέρα, 10 Νοεμβρίου 2008 18:29
    Napolux δήλωσε:

    @ Giovambattista Fazioli:

    @ Napolux: Εξήγησα κακό ... ήθελα να πω "αλλαγή ο κινητήρας JS σύμφωνα με το πρόγραμμα" Σωστό! Ωστόσο, για την ακρίβεια, ακόμη και PHP δεν είναι ακριβώς το ίδιο, υπάρχουν διαφορετικές εκδοχές για διαφορετικούς διακομιστές, με πολλές παρατάσεις. Αυτό όμως θα πρέπει να θεωρείται για πολύ πιο περίπλοκες περιπτώσεις μας.

    Φορολογικά ... : P

  14. getAvatar 1,0 Δευτέρα, 10 Νοεμβρίου 2008 18:42
    Giovambattista Fazioli δήλωσε:

    @ Μπορείτε Napolux Μόνο με εγώ μπορεί να είναι "ακριβή" ... τουλάχιστον να καταλαβαίνεις τι εννοούσα : D και να εκτιμήσουν τη φορολογία : D

  15. getAvatar 1,0 Δευτέρα, 10 Νοεμβρίου 2008 18:46
    Napolux δήλωσε:

    Τώρα αρχίζω να trolleggiare εδώ, λίγο ", όπως έπραξαν από μένα για KB / kB / Kb και καλή παρέα.

    : Mrgreen:

  16. getAvatar 1,0 Δευτέρα, 10 Νοεμβρίου 2008 19:02
    unwiredbrain δήλωσε:

    @ Napolux: KIB και KIB λύσει όλα τα προβλήματα.

Αφήστε ένα σχόλιο

TAG XHTML <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <a <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Χρησιμοποιήστε <pre> να επισυνάψουν κωδικός