Как я могу сравнивать числа, когда в языке есть только «цикл, а не ноль»? - PullRequest
0 голосов
/ 28 августа 2018

В качестве хобби-проекта я разрабатывал IDE для Chef , эзотерического языка программирования. При написании различных тестовых программ в Chef я понял, что реализация простого алгоритма сортировки или даже сравнение двух целых чисел, чтобы определить, какое из них больше, является серьезной проблемой, когда единственным оператором сравнения и ветвления в языке является цикл, который будет повторяться, пока число не равно нулю. Например:

Dissolve the sugar.         <-- execute loop if value of 'sugar' is non zero
  Add flour to mixing bowl. <-- add value of 'flour' into mixing bowl
  Set aside.                <-- break out of the loop
Stir until dissolved.       <-- mark the end of the loop

У меня есть рабочее решение для сравнения двух целых чисел в Chef, но оно длиной 40 строк!

Вот эквивалент моего подхода на Java, который большинство найдет более читабельным, чем код Chef, который я написал: -)

public static void main(String[] args) {

    int first = 100;
    int second = 200;

    int looper = 1;
    int tester;

    int difference = first - second;
    int inverse = difference * -1;
    while (looper != 0) {
        difference -= 1;
        inverse -= 1;

        tester = 1;
        while (difference != 0) {
            tester--;
            break;
        }
        while (tester != 0) {
            System.out.println("First is bigger");
            exit(1);
        }
        tester = 1;
        while (inverse != 0) {
            tester--;
            break;
        }
        while (tester != 0) {
            System.out.println("Second is bigger");
            exit(1);
        }
    }
}

Мой вопрос: каков наилучший способ сравнения двух чисел, когда у меня есть только цикл, отличный от нуля?

...