a mne norm - По мотивам вчерашнего поста [entries|archive|friends|userinfo]
mattekudasai

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

По мотивам вчерашнего поста [Jul. 27th, 2018|11:58 am]
Previous Entry Add to Memories Tell A Friend Next Entry
[Tags|, ]

В принципе, эту хуйню можно сделать и не взорвав пердак стек, но System.exit это читерство.
Зато без if-ов и сравнений, а если с результатом нужно что-то сделать, результат можно и куда-нибудь бросить.
На этом со школозадачами пожалуй всё, а в нешколозадачи я не умею.

    static int[] etoPizdec = new int[Character.MAX_VALUE + 1];
    static {
        etoPizdec[0] = -1;
    }

    static int zeroOne(int x) {
        return etoPizdec[x] + 1;
    }

    static void reverse(char[] string) {
        Consumer<Integer>[] lengthAndRevert = new Consumer[2];
        lengthAndRevert[1] = l -> {};
        lengthAndRevert[0] = l -> {
            char[] reversed = new char[l];

            BiConsumer<Integer, Integer>[] revertor = new BiConsumer[2];
            revertor[1] = (sPos, rPos) -> reversed[rPos] = string[sPos];
            revertor[0] = (sPos, rPos) -> {
                System.out.println(reversed);
                System.exit(665);
            };

            int sPos = 0;
            int rPos = l - 2;
            while (true) {
                BiConsumer<Integer, Integer> f = revertor[zeroOne(string[sPos])];
                f.accept(sPos, rPos);
                sPos++;
                rPos--;
            }
        };

        int length = 0;
        int sPos = 0;
        while (true) {
            length++;
            lengthAndRevert[zeroOne(string[sPos])].accept(length);
            sPos++;
        }
    }


while (true) тут оставлен умышленно (хотя можно было бы точно так же возвращать значение функции или значение из масива и выходить из цикла kulturno), так как я засчитываю это за неявную условную операцию, а goto у меня для вас нет.
LinkLeave a comment