The Challenge
Write a program that acts as a Fractran interpreter. The shortest interpreter by character count, in any language, is the winner. Your program must take two inputs: The fractran program to be executed, and the input integer n. The program may be in any form that is convenient for your program - for example, a list of 2-tuples, or a flat list. The output must be a single integer, being the value of the register at the end of execution.
Fractran
Fractran is a trivial esoteric language invented by John Conway. A fractran program consists of a list of positive fractions and an initial state n. The interpreter maintains a program counter, initially pointing to the first fraction in the list. Fractran programs are executed in the following fashion:
- Check if the product of the current state and the fraction currently under the program counter is an integer. If it is, multiply the current state by the current fraction and reset the program counter to the beginning of the list.
- Advance the program counter. If the end of the list is reached, halt, otherwise return to step 1.
For details on how and why Fractran works, see the esolang entry and this entry on good math/bad math.
Test Vectors
Program: [(3, 2)]
Input: 72 (2332)
Output: 243 (35)
Program: [(3, 2)]
Input: 1296 (2434)
Output: 6561 (38)
Program: