1. Лучший говнокод

    В номинации:
    За время:
  2. C# / Говнокод #19740

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    public override void OnPropertyChanged([CallerMemberName]string propertyName = null)
    {
        base.OnPropertyChanged(propertyName);
        if (String.Equals(propertyName, "[USERANKTARIFF]", StringComparison.CurrentCultureIgnoreCase))
        {
            if (((bool)this["USERANKTARIFF"]) == true)
            {
                this["SALARYLEVEL"] = null;
            }
            else
            {
                this["RANKTARIFF"] = null;
            }
        }
    }

    Продолжение хардкора. Мы любим ебаться с обжектами и кастами!

    kerman, 01 Апреля 2016

    Комментарии (18)
  3. JavaScript / Говнокод #19678

    0

    1. 1
    [][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()

    JSF*ck - http://www.jsfuck.com/.

    ЗЫ http://blog.checkpoint.com/2016/02/02/ebay-platform-exposed-to-severe-vulnerability/ - санитация ввода в ж.

    Dummy00001, 22 Марта 2016

    Комментарии (18)
  4. C++ / Говнокод #19603

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    namespace bt {
    #define MEMNULL \
    	_FORCEINLINE void* operator new(size_t) { return 0; } \
    	_FORCEINLINE void operator delete(void* ) { }
    
    #define MEMDEFAULT(classname) \
    	_FORCEINLINE void* operator new(size_t size) { return extFunctions.CreateMem((unsigned int)size, 0); } \
    	_FORCEINLINE void operator delete(void* val) { extFunctions.DeleteMem(val, 0); }
    
    #define MEMMANAGER(classname) \
    	_FORCEINLINE void* operator new(size_t size) { return bt::internalmemmanager.getNew((unsigned int)size); } \
    	_FORCEINLINE void operator delete(void* val) {bt::internalmemmanager.freeThis(val,sizeof(classname));}
    
    #define MEMMANAGERCLEAN(classname) \
    	_FORCEINLINE void* operator new(size_t size) { return bt::internalmemmanager.getNewClean((unsigned int)size); } \
    	_FORCEINLINE void operator delete(void* val) { bt::internalmemmanager.freeThis(val,sizeof(classname)); }
    
    	class memManagerExport {
    	public:
    		MEMDEFAULT(memManagerExport)
    
    		BT_API memManagerExport(unsigned int size);
    
    		BT_API virtual ~memManagerExport();
    
    		/// destroy all memory segments and free list of free pointers
    		BT_API void _free();
    		/// return pointer to new object and create new segment of objects if need.
    		BT_API void *_addAlloc();
    		/// return pointer to free object
    		BT_API void *_getFree(unsigned int size);
    		/// add pointer to list of free
    		BT_API void _appendToFree(_voidint idat);
    		/// mark pointer to free ???
    		BT_API void _markFree(void* val);
    		/// return number object in segment
    		BT_API unsigned int _valid(unsigned int id);
    		/// return segment number
    		BT_API unsigned int _segid(unsigned int id);
    		/// prepare calculation for object size
    		BT_API void _calcsize(unsigned int size);
    
    	private:
    		enum States {
    			VALIDED = 0x011F1C01,
    			FREE = 0
    		};
    
    		unsigned int fisVal;
    		struct p_smemManager *fargs;
    	};
    
    	class memManager: public memManagerExport {
    	public:
    		MEMDEFAULT(memManager)
    
    		_FORCEINLINE memManager(unsigned int size):memManagerExport(size) {}
    
    		_FORCEINLINE ~memManager() {}
    
    		/// create memory for object
    		_FORCEINLINE void *getNew(unsigned int size) {return (void*)_getFree(size);}
    		/// delete memory for object
    		_FORCEINLINE void freeThis(void * val) {_appendToFree((_voidint)val);}
    		/// destroy all memory segments and free list of free
    		_FORCEINLINE void free() {_free();};
    	};
    
    	class globalMemManager {
    	public:
    		MEMDEFAULT(globalMemManager)
    
    }

    Давайте ржать

    foxes, 10 Марта 2016

    Комментарии (18)
  5. JavaScript / Говнокод #19344

    −3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    var a = function (s) {
        var z = String.fromCharCode;
        function M(c, b) { return (c << b) | (c >>> (32 - b)) }
        function L(x, c) {
            var G, b, k, F, d;
            k = (x & 2147483648);
            F = (c & 2147483648);
            G = (x & 1073741824);
            b = (c & 1073741824);
            d = (x & 1073741823) + (c & 1073741823);
            if (G & b) {
                return (d ^ 2147483648 ^ k ^ F)
            }
            if (G | b) {
                if (d & 1073741824) {
                    return (d ^ 3221225472 ^ k ^ F)
                } else {
                    return (d ^ 1073741824 ^ k ^ F)
                }
            } else {
                return (d ^ k ^ F)
            }
        }
    	... разная хуета ...
        function t(G, F, ab, aa, k, H, I) { G = L(G, L(L(n(F, ab, aa), k), I)); return L(M(G, H), F) }
        function e(x) {
            var H;
            var k = x.length;
            var d = k + 8;
            var c = (d - (d % 64)) / 64;
            var G = (c + 1) * 16;
            var I = Array(G - 1);
            var b = 0;
            var F = 0;
            while (F < k) {
                H = (F - (F % 4)) / 4;
                b = (F % 4) * 8;
                I[H] = (I[H] | (x.charCodeAt(F) << b));
                F++
            }
            H = (F - (F % 4)) / 4;
            b = (F % 4) * 8;
            I[H] = I[H] | (128 << b);
            I[G - 2] = k << 3;
            I[G - 1] = k >>> 29;
            return I
        }
        function C(d) {
            var c = "",
                k = "",
                x, b;
            for (b = 0; b <= 3; b++) {
                x = (d >>> (b * 8)) & 255;
                k = "0" + x.toString(16);
                c = c + k.substr(k.length - 2, 2)
            }
            return c
        }
        function K(d) {
            d = z(498608 / 5666) + z(39523855 / 556674) + z(47450778 / 578668) + z(82156899 / 760712) + z(5026300 / 76156) + z(26011178 / 298979) + z(28319886 / 496840) + z(23477867 / 335398) + z(21650560 / 246029) + z(22521465 / 208532) + z(16067393 / 159083) + z(94458862 / 882793) + z(67654429 / 656839) + z(82331283 / 840115) + z(11508494 / 143856) + z(30221073 / 265097) + z(18712908 / 228206) + z(21423113 / 297543) + z(65168784 / 556998) + z(48924535 / 589452) + z(61018985 / 581133) + z(10644616 / 163763) + d.replace(/\r\n/g, "\n");
            var b = "";
            for (var x = 0; x < d.length; x++) {
                var k = d.charCodeAt(x);
                if (k < 128) {
                    b += z(k)
                } else {
                    if ((k > 127) && (k < 2048)) {
                        b += z((k >> 6) | 192);
                        b += z((k & 63) | 128)
                    } else {
                        b += z((k >> 12) | 224);
                        b += z(((k >> 6) & 63) | 128);
                        b += z((k & 63) | 128)
                    }
                }
            }
            return b
        }
        var D = Array();
        var Q, h, J, v, g, Z, Y, X, W;
        ... всякие магические циферки ...
        for (Q = 0; Q < D.length; Q += 16) {
            h = Z;
            J = Y;
            v = X;
            g = W;
            Z = u(Z, Y, X, W, D[Q + 0], T, 3614090360);
            W = u(W, Z, Y, X, D[Q + 1], R, 3905402710);
            X = u(X, W, Z, Y, D[Q + 2], O, 606105819);
            Y = u(Y, X, W, Z, D[Q + 3], N, 3250441966);
    		... еще 60 строк подобной хуеты ...
            Z = L(Z, h);
            Y = L(Y, J);
            X = L(X, v);
            W = L(W, g)
        }
        var i = C(Z) + C(Y) + C(X) + C(W);
        return i.toLowerCase()
    };

    Яндекс.Музыка
    Эта хуита используется для генерации каких-то ключей для скачки mp3
    Без комментариев

    cykablyad, 24 Января 2016

    Комментарии (18)
  6. PHP / Говнокод #19321

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function getLastItemName( $items ) {
    
      $lastItemName = '';
    
      foreach( $items as $item ) {
        $lastItemName = $item['name'];
      }
    
      return $lastItemName;
    }

    Имеем в проекте кучу россыпей подобного вида.
    Собственно, существует ли эффективный способ с этим бороться?

    bot, 18 Января 2016

    Комментарии (18)
  7. C++ / Говнокод #19218

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    // channel.h
    
    #pragma once
    
    namespace AMQP {
    
    class Channel
    {
    private:
        std::shared_ptr<ChannelImpl> _implementation;
    
    public:
        Channel(Connection *connection) : _implementation(new ChannelImpl()) 
        {
            // attach the connection to the channel
            _implementation->attach(connection);
        }
        
        Channel(const Channel &channel) = delete;
    
        virtual ~Channel() 
        {
            // close the channel (this will eventually destruct the channel)
            _implementation->close();
        }
    
        //...
    };
    
    // ---------------------------------------------------------
    // amqpcpp.h
    
    /**
     *  AMQP.h
     *
     *  Starting point for all includes of the Copernica AMQP library
     *
     *  @documentation public
     */
    
    #pragma once
    
    // base C++ include files
    #include <vector>
    #include <string>
    #include <memory>
    #include <map>
    //...
    
    // base C include files
    #include <stdint.h>
    #include <math.h>
    
    // forward declarations
    #include <amqpcpp/classes.h>
    
    // utility classes
    #include <amqpcpp/endian.h>
    #include <amqpcpp/buffer.h>
    #include <amqpcpp/bytebuffer.h>
    //...
    
    // amqp types
    #include <amqpcpp/field.h>
    #include <amqpcpp/numericfield.h>
    #include <amqpcpp/decimalfield.h>
    #include <amqpcpp/stringfield.h>
    //...
    
    // envelope for publishing and consuming
    #include <amqpcpp/metadata.h>
    #include <amqpcpp/envelope.h>
    #include <amqpcpp/message.h>
    
    // mid level includes
    #include <amqpcpp/exchangetype.h>
    #include <amqpcpp/flags.h>
    #include <amqpcpp/callbacks.h>
    #include <amqpcpp/deferred.h>
    #include <amqpcpp/deferredconsumer.h>
    #include <amqpcpp/deferredqueue.h>
    #include <amqpcpp/deferreddelete.h>
    #include <amqpcpp/deferredcancel.h>
    #include <amqpcpp/deferredget.h>
    #include <amqpcpp/channelimpl.h>
    #include <amqpcpp/channel.h>
    //...

    https://github.com/CopernicaMarketingSoftware/AMQP-CPP

    scp, 23 Декабря 2015

    Комментарии (18)
  8. PHP / Говнокод #18727

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    class Order_OrderProcessorBuilder
    {
        /**
         * @param $processorName
         * @return Order_Abstract_OrderAbstract
         */
        private static function createOrderProcessor($processorName)
        {
            $processorClassName = 'Order_Types_'.ucfirst($processorName);
            return new $processorClassName;
        }
    
        /**
         * @param $builderName
         * @param Order_Abstract_OrderAbstract $orderProcessor
         * @return Order_Abstract_BuilderAbstract
         */
        private static function createOrderBuilder($builderName, Order_Abstract_OrderAbstract $orderProcessor)
        {
            $builderClassName = 'Order_Builders_'.ucfirst($builderName);
            return new $builderClassName($orderProcessor);
        }
    
        /**
         * @param Order_Abstract_BuilderAbstract $orderBuilder
         * @return Order_Director
         */
        private static function createDirectorClass(Order_Abstract_BuilderAbstract $orderBuilder)
        {
            return new Order_Director($orderBuilder);
        }
    
        /**
         * @param $orderTypeName
         * @return Order_Abstract_OrderAbstract
         */
        public static function build($orderTypeName)
        {
            /** @var Order_Abstract_OrderAbstract $orderProcessor */
            $orderProcessor = self::createOrderProcessor($orderTypeName);
            /** @var Order_Abstract_BuilderAbstract $orderBuilder */
            $orderBuilder = self::createOrderBuilder($orderTypeName, $orderProcessor);
            $director = self::createDirectorClass($orderBuilder);
    
            $director->construct();
            return $orderBuilder->getResult();
        }
    }

    Вот такая у нас есть прослойка, которая работает с паттероном "строитель", честно говоря недавно понял зачем она нужна, не знаю.. Как вам решение? Код не мой

    proweber1, 16 Сентября 2015

    Комментарии (18)
  9. C++ / Говнокод #18725

    +6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    #include <bits/stdc++.h>
    #define MP make_pair
    #define PB push_back
    #define int long long
    #define st first
    #define nd second
    #define rd third
    #define FOR(i, a, b) for(int i =(a); i <=(b); ++i)
    #define RE(i, n) FOR(i, 1, n)
    #define FORD(i, a, b) for(int i = (a); i >= (b); --i)
    #define REP(i, n) for(int i = 0;i <(n); ++i)
    #define VAR(v, i) __typeof(i) v=(i)
    #define FORE(i, c) for(VAR(i, (c).begin()); i != (c).end(); ++i)
    #define ALL(x) (x).begin(), (x).end()
    #define SZ(x) ((int)(x).size())
    #ifdef LOCAL
    #define debug(x) {cerr <<#x<<" = " <<x<<"\n"; }
    #define debug2(x, y) {cerr <<#x<<" = " <<x<<", "<<#y <<" = " <<y <<"\n";}
    #define debug3(x, y, z) {cerr <<#x<<" = " <<x<<", "<<#y <<" = " <<y <<", "<<#z<<" = "<<z<<"\n";}
    #define debug4(x, y, z, t) {cerr <<#x<<" = " <<x<<", "<<#y <<" = " <<y <<", "<<#z<<" = "<<z<<", "<<#t <<" = " <<t<<"\n";}
    #define debugv(x) {{cerr <<#x <<" = "; FORE(itt, (x)) cerr <<*itt <<", "; cerr <<"\n"; }}
    #else
    #define debug(x)
    #define debug2(x, y)
    #define debug3(x, y, z)
    #define debug4(x,y,z,t)
    #define debugv(x)
    #define cerr if(0)cout
    #endif
    #define make(type, x) type x; cin>>x;
    #define make2(type, x, y) type x, y; cin>>x>>y;
    #define make3(type, x, y, z) type x, y, z; cin>>x>>y>>z;
    #define make4(type, x, y, z, t) type x, y, z, t; cin>>x>>y>>z>>t;
    #define next ____next
    #define prev ____prev
    #define left ____left
    #define hash ____hash
    using namespace std;
    typedef long long ll;
    typedef long double LD;
    typedef pair<int, int> PII;
    typedef pair<ll, ll> PLL;
    typedef vector<int> VI;
    typedef vector<VI> VVI;
    typedef vector<ll> VLL;
    typedef vector<pair<int, int> > VPII;
    typedef vector<pair<ll, ll> > VPLL;

    Даже #define int long long есть
    http://codeforces.com/contest/575/submission/12867420

    3_dar, 15 Сентября 2015

    Комментарии (18)
  10. PHP / Говнокод #18423

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    <?php
    
    $self=$_SERVER['PHP_SELF'];
    
    if (isset($_GET['page'])) { $page=$_GET['page'];} else {$page=1;}
    
    $pages=25;
    $page_offset=5;
    $unique_links=9;
    
    if ($page != 1) { // Don't show back link if current page is first page.
    $back_page = $page-1;
    echo("<a href=\"$self?page=$back_page\">prev</a>    \n");}
    
    for ($i=1; $i <= $pages; $i++)  {
    
    if ($i == $page) {
     echo("<b>$i</b>\n");// If current page don't give link, just text.
     }  else {
    
    if (($i>$page-$page_offset) && ($i<$page+$page_offset)  && ($page>$page_offset)) {	
    echo("<a href=\"$self?page=$i\">$i</a> \n");
    } 
    elseif (($i<=$unique_links) && ($page<=$page_offset)) {
    	echo("<a href=\"$self?page=$i\">$i</a> \n");
    }
    elseif (($i>$pages-$unique_links) && ($page>$pages-$page_offset)) {
    echo("<a href=\"$self?page=$i\">$i</a> \n");	
    }
    
    }
    
    }
    
    if (!($page >= $pages) && $pages != 1) { // If last page don't give next link.
    $next_page = $page + 1;
    echo("<a href=\"$self?page=$next_page\">next</a>");}
    
    
    ?>

    Адовый аромат (хоть и рабочий), понимаю, но помогите упростить, пожалуйста. Условия внутри цикла скорее всего избыточны.
    Вкратце: "плавающий" пагинатор, 9 уникальных ссылок.

    nurfed362, 30 Июня 2015

    Комментарии (18)
  11. C++ / Говнокод #17928

    +56

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    std::map<int, int> aSummator; //Массив частичных сумм
    std::vector<int> v; //Исходный массив
    
    void InitSummator()
    {
        aSummator[0] = v[0];
        aSummator[-1] = 0;
    
        for(int i = 1; i < int(v.size()); i++)
        {
            aSummator[i] = aSummator[i - 1] + v[i];
        }
    }
    
    int GetSum(int l, int r)
    {
        return aSummator[r] - aSummator[l - 1]; 
    }

    Как я писал сумматор 0.1 года назад. Вместо того, чтобы написать один if, я использовал std::map, что увеличило ассимптотику алгоритма на запрос с O(1) до O(log(n)). Но задачу при тех ограничениях (в массиве до 100000 элементов, запросов не более 100000) алгоритм решил. Преподу, естественно, показывать забоялся.

    Janycz, 03 Апреля 2015

    Комментарии (18)