1. Список говнокодов пользователя artemohanjanyan

    Всего: 2

  2. Java / Говнокод #19525

    −35

    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
    import java.util.function.Predicate;
    
    public class BinarySearchSpan {
        // exists i:
        //      (forall j in (0..i) predicate.test(a[i]))
        //      && (forall j in [i, a.length): predicate.test(a[j]))
        public static int iterativeBinarySearch(int[] a, Predicate<Integer> predicate) {
            int l = -1, r = a.length;
    
            // (l == -1 || !predicate.test(a[l])) && (r == a.length || predicate.test(a[r]))
            while (l < r - 1) {
                int mid = l + (r - l) / 2;
                if (predicate.test(a[mid])) {
                    r = mid;
                }
                else {
                    l = mid;
                }
            }
    
            return r;
        }
        // if (exists i: predicate.test(a[i])) then
        //     result = min i: predicate.test(a[i])
        // else
        //     result = a.length
    
    
        public static void main(String[] args) {
            int a[] = new int[args.length - 1];
            for (int i = 1; i < args.length; ++i) {
                a[i - 1] = Integer.parseInt(args[i]);
            }
    
            int x = Integer.parseInt(args[0]);
    
            int i1 = iterativeBinarySearch(a, (a1) -> a1 <= x);
            int length = iterativeBinarySearch(a, (a1) -> a1 < x) - i1;
    
            System.out.println(i1 + " " + length);
        }
    }

    artemohanjanyan, 24 Февраля 2016

    Комментарии (0)
  3. Java / Говнокод #19523

    −34

    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
    public class BinarySearch {
        // for all i in [1..n): a[i - 1] >= a[i]
        public static int iterative_binary_search(int[] a, int x) {
            int l = -1, r = a.length;
    
            // (l == -1 || a[l] > x) && (r == a.length || a[r] <= x)
            while (l < r - 1) {
                assert (l < 0 || a[l] > x) && (r >= a.length || a[r] <= x);
    
                int mid = l + (r - l) / 2;
                if (a[mid] <= x) {
                    r = mid;
                }
                else {
                    l = mid;
                }
            }
    
            return r;
        }
        // if (exists i: a[i] <= x) then
        //     result = min i: a[i] <= x
        // else
        //     result = a.length
    
    
        // for all i in [1..n): a[i - 1] >= a[i]
        public static int recursive_binary_search(int[] a, int x) {
            return recursive_binary_search(a, x, -1, a.length);
        }
        // if (exists i: a[i] <= x) then
        //     result = min i: a[i] <= x
        // else
        //     result = a.length
    
    
        // for all i in [1..n): a[i - 1] >= a[i]
        // -1 <= l < r <= a.length
        // (l == -1 || a[l] > x) && (r == a.length || a[r] <= x)
        public static int recursive_binary_search(int[] a, int x, int l, int r) {
            if (l >= r - 1) {
                return r;
            }
    
            int mid = l + (r - l) / 2;
            if (a[mid] <= x) {
                r = mid;
            }
            else {
                l = mid;
            }
    
            return recursive_binary_search(a, x, l, r);
        }
        // if (exists i in ([l, r] intersect [0, a.length)): a[i] <= x) then
        //     result = min i: in ([l, r] intersect [0, a.length)): a[i] <= x
        // else
        //     result = r
    
    
        public static void main(String[] args) {
            int a[] = new int[args.length - 1];
            for (int i = 1; i < args.length; ++i) {
                a[i - 1] = Integer.parseInt(args[i]);
            }
    
            int x = Integer.parseInt(args[0]);
    
            System.out.println(iterative_binary_search(a, x));
        }
    }

    artemohanjanyan, 24 Февраля 2016

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