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

    В номинации:
    За время:
  2. Куча / Говнокод #25540

    +1

    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
    # это комментарий #
    COMMENT это понятно что COMMENT
    CO это тоже ко-ко-коментарий CO
    
    CO функция принимает 3 параметра типа INT и возвращает ссылку на массив CO
    PROC range = (INT start, end, step)REF[]INT : (
        INT length = ABS((end - start) % step);
        NEW [0 : length - 1]INT result; CO массив в куче CO
        CO LWB —– нижний индекс массива, UPB —– верхний CO
        FOR i FROM LWB result TO UPB result
        DO
            result[i] := start + i * step
        OD;
        result CO функции возвращают результат последнего вычесленного выражения CO
    );
    
    CO можно определять свои операторы CO
    OP RANGE = (INT start, end)REF[]INT: range(start, end, (start < end | 1 | -1));
    PRIO RANGE = 5; CO для бинарных операторов нужно задать приоритет, у сложения/вычитания приоритет = 6 CO
    
    CO для операторов возможна перегрузка по количеству и типу аргументов CO
    OP RANGE = (INT end)REF[]INT: 0 RANGE end;
    
    OP ACCUM = ([]INT x, PROC(INT,INT)INT f)INT : (
        INT length = UPB x - LWB x;
        IF length = 0 THEN
            1
        ELIF length = 1 THEN
            x[LWB x]
        ELSE
            INT result;
            result := x[LWB x];
            FOR i FROM LWB x + 1 TO UPB x
            DO
                result := f(result, x[i])
            OD;
            result
        FI
    );
    PRIO ACCUM = 5;
    
    CO правый операнд у ACCUM —– лямбда CO
    OP ! = (INT x)INT: 1 RANGE x + 1 ACCUM ((INT x, y)INT: x * y);
    
    printf(($g(0), "! = ", g(0), l$, 7, !7));
    
    OP MAP = ([]INT x, PROC(INT)INT f)REF[]INT : (
        NEW [LWB x : UPB x]INT result;
        FOR i FROM LWB x TO UPB x
        DO
            result[i] := f(x[i])
        OD;
        result
    );
    PRIO MAP = 5;
    
    PROC pow = (INT x, n)INT: x ^ n;
    
    CO каррирование CO
    printf(($g(0), " "$, RANGE 10 MAP pow(2, )));
    print(new line);
    
    OP FOREACH = (REF[]INT x, PROC(REF INT)VOID f)VOID : (
        FOR i FROM LWB x TO UPB x
        DO
            f(x[i])
        OD
    );
    PRIO FOREACH = 5;
    
    REF[]INT a = -5 RANGE 6;
    a FOREACH ((REF INT x)VOID:
        x := x ^ 2
    );
    
    printf(($g(0), " "$, a))

    https://tio.run/##jVVdbxJBFH3nV1xbTXZ1iaBpNVQfkFIlKV2C1T40mJBIkYRgUzFdEx@wtRpTPx70hyCWlkLBvzDzF/wj9dw7s0uBmgiF7syce@fOuecM5Xr1ZX3xbvX8fJ70F72nRqT6aqTO8O6qISbauqV66pTmYxk/n8@urUe438AN9TcMhhjqjzJrQQCHOP5Sx6oriePR18wGGT8mUe/1PhL29QfV09@wiywP8TlTbdXVe3Sbt@aoNufQe/zEu/R4mnKoUPVIdbDFierwov5kI/U7vA/VANn3CTnbxEl5FsEdrqBQ9DO0U25UK3SfHM71qlneaXpUaTz38FzZdovZlc0Sr6TIiRFe/FyvNKrNF4hJP3jsOABT3ES6dM2ELQl2LbtBmwmE2oA4JSXXTuXV63pzCSVMlsR/KFZ/BH8oj1MAsrrxgP60fvxpfSdh5li@T0mIOgKvff1uIo9qe/SkMA7qgI6WPrBhNvGKX6QarRT9vGxgSqJ1XyLNSHDLBs4vM7tZK1Hqvjkv3UCO63JkQfnL5uA221SDL2mU/sqNauEQJ8AN9GeRyJ7IDYcZYOEI4V31izXY0YfMjV0YshLHC6yQY5lmJeGUaELMMDwSzoAbicC6wtqAxaw/QyZSVE9WmSkuALu39CFn8QtUTK89zM4qJNJGymjIuSgeM6B7PKK3lMQnnnRRUqGY86OMC0YDR1wMqZ/SUdb6EOc5mCkIYwhkCKLscU5w5CNexTGsdRjWAxwG8Ai6F65GY2JuWhIZ07ZczYaitMXQomF1lxZj2hky3CaLQb/A3z6W@mbSXjQDbCANRI4Ou7JnrczPfPBfCAqvipEx6XQDJplP2EXMot3ApjOZJ3nGGtsGHrHLOdLDx@W5LfefhmbxB/ApWyIwWs6tjJcTtP4ouxYZIilP2dWLkOQkJNiUVCWLfJyNVi5cBFMOY3uFceO1KcMG8F4y9GsQoS7YdTLhlmOePaSuldwIFVp2jDbXQy4WijVkdMH66bdYDTLiOyhSBd9FLDiDDq8eKAf9/Mkqtb28EvYxcKWBSdtAcx4T7Ti2dW8MJsAd84btvL1TazS3HOdq1Um4Hs1xsjmPzKh@1aM7Hl25wzbjrfLpwqVCsCKYudrlujbcpgytpekmzTRhogH/uiu3nDHnk1dkRLKplSmWH6Xtl7sRTx41QhqeUcM2oc92EcOKE42Xzc/GNEk0B2IMycmEbITszi2PXCZK0E6jskv1WqNimcMxs@nMIy4hYikkEBOsXfepn1sGi/IvZPC/6ZlkJGJhvC8zEW1dxkR8wZ5hcSlWjoBOWA7kxJWkJGMgDgJbt2KXqUYIKbvu@flf
    Давайте течь от "Algol-68".

    BOKCEJIbHblu_nemyx, 13 Апреля 2019

    Комментарии (36)
  3. Python / Говнокод #25489

    0

    1. 1
    {% for item in object.items %}

    Внезапно выяснилось, что ебаная жинжа пытается не делает object['items'], а сначала ищет метод items().

    syoma, 31 Марта 2019

    Комментарии (36)
  4. Java / Говнокод #25430

    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
    [code]
      protected AbstractPopup init(Project project,
                         @NotNull JComponent component,
                         @Nullable JComponent preferredFocusedComponent,
                         boolean requestFocus,
                         boolean focusable,
                         boolean movable,
                         String dimensionServiceKey,
                         boolean resizable,
                         @Nullable String caption,
                         @Nullable Computable<Boolean> callback,
                         boolean cancelOnClickOutside,
                         @Nullable Set<JBPopupListener> listeners,
                         boolean useDimServiceForXYLocation,
                         ActiveComponent commandButton,
                         @Nullable IconButton cancelButton,
                         @Nullable MouseChecker cancelOnMouseOutCallback,
                         boolean cancelOnWindow,
                         @Nullable ActiveIcon titleIcon,
                         boolean cancelKeyEnabled,
                         boolean locateByContent,
                         boolean placeWithinScreenBounds,
                         @Nullable Dimension minSize,
                         float alpha,
                         @Nullable MaskProvider maskProvider,
                         boolean inStack,
                         boolean modalContext,
                         @Nullable Component[] focusOwners,
                         @Nullable String adText,
                         int adTextAlignment,
                         boolean headerAlwaysFocusable,
                         @NotNull List<? extends Pair<ActionListener, KeyStroke>> keyboardActions,
                         Component settingsButtons,
                         @Nullable final Processor<? super JBPopup> pinCallback,
                         boolean mayBeParent,
                         boolean showShadow,
                         boolean showBorder,
                         Color borderColor,
                         boolean cancelOnWindowDeactivation,
                         @Nullable BooleanFunction<KeyEvent> keyEventHandler) {
    [/code]
    // https://github.com/JetBrains/intellij-community/blob/master/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java

    HEymHblu_nemyx, 06 Марта 2019

    Комментарии (36)
  5. C# / Говнокод #25385

    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
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.AI;
    public class SimpleEngine : MonoBehaviour
    {
    NavMeshAgent main;
    Vector3 Pos2;
    void Start()
    {
    main = GetComponent<NavMeshAgent>();
    Pos2 = new Vector3(-43, 5, 0);
    }
    void Update()
    {
    main.SetDestination(Pos2);
    if (GameObject.Find("Planedelete").GetComponent<TriggerDelete>().newDestroy == true)
    {
    Destroy(gameObject); // Само удаление!!!
    }
    
    if (GameObject.Find("PlaneLight").GetComponent<TriggerLight>().Activate == true)
    {
    
    if (GameObject.Find("TrafficLight").GetComponent<TrafficLightController>().Logistic == true)
    {
    main.speed = 80;
    
    }
    if (GameObject.Find("TrafficLight").GetComponent<TrafficLightController>().Logistic == false)
    {
    main.speed = 0;
    
    }
    }
    if (GameObject.Find("PlaneLight").GetComponent<TriggerLight>().Activate == false)
    {
    main.speed = 80;
    main.acceleration = 8;
    }
    }
    }

    ШЕДЕВР ДОЛБОГНОМА ВСЕЯ UNITY3D...

    jarico_master, 17 Февраля 2019

    Комментарии (36)
  6. JavaScript / Говнокод #25166

    +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
    user_pref("general.useragent.override.3dn.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.at.ua", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.clan.su", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.do.am", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.moy.su", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.my1.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.narod.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.ae", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.com", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.es", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.hu", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.kz", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.lv", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.net", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.org", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");

    Ко-ко-ко, куд-кудах-тах-тах!

    nemyx, 08 Декабря 2018

    Комментарии (36)
  7. Куча / Говнокод #25128

    −6

    1. 1
    Давайте хвалить "NodeJS".

    AnalThermos, 28 Ноября 2018

    Комментарии (36)
  8. Куча / Говнокод #24313

    0

    1. 1
    Серьёзный вопрос к местным игроделам:

    А есть ли какое-нибудь универсальное исследование, которое говорит, как должны быть устроены формулки в rpg/mmorpg?
    Типа что номер уровня должен зависеть как корень степени 2.8 от количества exp, hp -- линейно от str и int, а дамаг -- как среднее геометрическое дамага перса и дамага его оружия.
    Пробовал гуглить/читать геймдев -- нашёл только пространственные рассуждения "начни делать хоть как-то, а потом с помощью говна и палок отбалансируй".

    P.S. Да, я хочу написать игру и сидеть в неё играть.

    Bobik, 23 Мая 2018

    Комментарии (36)
  9. Assembler / Говнокод #23387

    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
    tms часть коррелятора
    
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
               movl          XAR6     ,#str_korel     ;
               movl          XAR7     ,#str_f1_faz    ;
               mov            AH      ,@@dlin_mass    ;
               dec            AH                      ;
               movb           AL      ,#0             ;
               movl          XAR1     ,ACC            ;
               movz           AR2     ,AH             ;
               mov     @@max_num      ,AL             ;
               mov   @@start_num      ,AR1            ;
               subb          XAR2     ,#1             ;
               mpy           ACC      ,@@index_f      ,#max_f__faz*dln_f__faz
               add           ACC      ,@@start_base   ;
               addl          XAR7     ,ACC            ;
               movb          XAR3     ,#0             ;
               movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,@@temp_R       ;
               movl            P      ,*+XAR7[AR0]    ;pl=alp ph=R
               mpyu          ACC      ,T     ,PH      ;R0
               mov    @@factor_R      ,AH             ;
    loopi_0:   movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,#0             ;
               movl          ACC      ,*+XAR7[AR0]    ;
               sub            AL      ,PL             ;alpa<0
               cmp            AL      ,@@factor_alp   ;
               movb            T      ,#1            ,LO
               sub            AH      ,PH             ;
               abs           ACC                      ;
               cmp            AH      ,@@factor_R     ;
               movb            T      ,#0            ,HI
               mov            AL      ,T              ;
               add     @@max_num      ,AL             ;
               banz       loopi_0     ,AR2--          ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
               movz           AR2     ,@@dlin_mass    ;
               subb          XAR2     ,#3             ;
    zabul:     movz           AR0     ,*+XAR6[AR1%++] ;
               push           AR3:AR2                 ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
               mov     @@start_n      ,AR1            ;
               movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,@@temp_R       ;
               movl            P      ,*+XAR7[AR0]    ;
               mpyu          ACC      ,T     ,PH      ;
               mov    @@factor_R      ,AH             ;
               movb       @@max_n     ,#0           ,UNC
    loopi_1:   movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,#0             ;
               movl          ACC      ,*+XAR7[AR0]    ;
               sub            AL      ,PL             ;alpa<0
               cmp            AL      ,@@factor_alp   ;
               movb            T      ,#1            ,LO
               sub            AH      ,PH             ;
               abs           ACC                      ;
               cmp            AH      ,@@factor_R     ;
               movb            T      ,#0            ,HI
               mov             AL     ,T              ;
               add       @@max_n      ,AL
               banz       loopi_1     ,AR2--
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    loopi_2:   movz           AR0     ,*+XAR6[AR1%++] ;
               mov             T      ,#0             ;
               movl          ACC      ,*+XAR7[AR0]    ;
               sub            AL      ,PL             ;alpa<0
               cmp            AL      ,@@factor_alp   ;
               movb            T      ,#1            ,LO
               sub            AH      ,PH             ;
               abs           ACC                      ;
               cmp            AH      ,@@factor_R     ;
               movb            T      ,#0            ,HI
               mov            AL      ,T              ;
               add       @@max_n      ,AL             ;
               banz       loopi_2     ,AR3--          ;
               pop            AR3:AR2                 ;

    maxxx, 06 Октября 2017

    Комментарии (36)
  10. Java / Говнокод #23368

    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
    class Functions //здесь функции
    {
      static void PrintInfo(String[] args) //инфа из стандартного ввода
      {
        try( BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) )
        {
          int lines=0;
          int words=0;
          int symbols=0;
          String s;
          while( (s=br.readLine()) != null )
          {
            lines++;
            words+=Functions.NumberWords(s);
            symbols+=Functions.NumberSymbols(s);
          }
          if(args.length == 0) {
            System.out.format("%7d%7d%7d\n", --lines, words, --symbols);
          }
        }
        catch(IOException e) {
          System.out.println("Ошибка: "+e);
        }
      }
    
      static int NumberWords(String s) //количество слов в строке
      {
        char c='-';
        int num=0;
        boolean change=false; //сделано чтобы пустые строки не прибавляли значение num
        
        for(int i=0; i<s.length(); i++) {
          if( s.charAt(i)==' ' && (c!=' ' && c!='\t')
              || s.charAt(i)=='\t' && (c!=' ' && c!='\t') ) num++; //новое слово
          c = s.charAt(i);
          if(!change ) change=true;
        }
        if(change && c!=' ') num++; //последнее слово
        return num;
      }
      
      static int NumberSymbols(String s)
      {
        int count=0;
        for(int i=0; i<=s.length(); i++)
          count++;
        return count;
      }
      
      static void getInfo()
      {
        try( BufferedReader b = new BufferedReader(new FileReader("help")) )
        {
          String s;
          while( (s=b.readLine()) != null )
            System.out.println(s);
        }
        catch(IOException e) {
          System.out.println("Файл справки отсутствует");
        }
      }
    }

    Переписываю все программы из linux на java, это говно-наработки

    GOVNOCODER-SYKA, 28 Сентября 2017

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

    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
    public static int index(string word, char comp)
            {
                int k = -1;
                for (int i = 0; i < word.Length; i++)
                    if (word[i] == comp)
                    {
                        k = i;
                        break;
                    }
                return k;
            }
    
            public static char[] strtocharr(string str)
            {
                char[] tmp = new char[str.Length];
                for (int i = 0; i < tmp.Length; i++)
                    tmp[i] = str[i];
                return tmp;
            }
    
            public static string charrtostr(char[] charr)
            {
                string tmp = null;
                for (int i = 0; i < charr.Length; i++)
                    tmp = String.Format("{0}{1}", tmp, charr[i]);
                return tmp;
            }
    
            public static char maskfromword(string word)
            {
                return word[word.Length - 1];
            }
    
            public static string maskfromword(string word, int n)
            {
                string mask = null;
                for (int i = 0; i < n; i++)
                    mask = String.Format("{0}{1}", mask, word[word.Length - 1]);
                return mask;
            }
    
            public static char Counter(char crnt, string word)
            {
                if (crnt != maskfromword(word))
                    crnt = word[index(word, crnt) + 1];
                else
                    crnt = word[0];
                return crnt;
            }
    
            public static string Counter(string prev, string word, int k)
            {
                char[] tmp = strtocharr(prev);
                if (k >= prev.Length - 1)
                    k = prev.Length - 1;
                else
                    for (int i = k + 1; i < prev.Length; i++)
                        tmp[i] = word[0];
                if (tmp[k] == maskfromword(word))
                    return MultiCounter(prev, word, k - 1);
                else
                    tmp[k] = Counter(tmp[k], word);
                return charrtostr(tmp);
            }

    Список методов, позволяющие сделать счетчик по словарю (полезно для генераторов словарей) на любое количество символов.

    Vero92, 18 Августа 2017

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