当语言只有“循环非零”时,如何比较数字?

问题描述 投票:0回答:1

作为一个业余爱好项目,我一直在为 Chef(一种深奥的编程语言)开发 IDE。在用 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);
        }
    }
}

我的问题是,当我只有一个非零循环时,比较两个数字的最佳方法是什么?

programming-languages
1个回答
0
投票

我唯一能想到的就是以某种方式对数字进行舍入,这样你就可以将它们递减直到一为零。这是在 Brainfuck 中完成的方式,它有完全相同的问题,但没有非整数。

© www.soinside.com 2019 - 2024. All rights reserved.