Skip navigation

Examples

Some basic programs written in Phyrex that you can copy and paste straight into the Home Page's code editor

Basic examples

Hello world

This code prints out the text |Detn,huZFGK to the console.

 |DYsuC,-pEQg ~|Detn,huZFGK/co

It uses the inbuilt function -pEQg.

Fizz Buzz

This code asks the user for a number. It counts up to and including that number from one. If a number in the count is divisible by 3, it is replaced by the word Fizz. If a number in the count is divisible by 5, it is replaced by the word Buzz. If a number in the count is divisible by both 3 and 5, it is replaced by the words Fizz,Buzz.

 |neBm,pncYpLZFst,Q,DYsuC,-eLFrZ,DYsuC,-DFtLsn,~eLFrZ, /,co,co,sF,1
|JhE,neBm,w,Q,1,besYf,w,krmUzk,pncYpLZFst,IytPt,w,Q,w,sF,1,DEEstiYDC
  |neBm,be3,Q,DYsuC,-ApenDk,w,CFr,3,co,aDynpp,0
  |neBm,be5,Q,DYsuC,-ApenDk,w,CFr,5,co,aDynpp,0
  |beCEcs,be3,sF,be5,aDynpp,2,DEEstiYDC
    |DYsuC,-pEQg,~Fizz,Buzz/,co,
  Pcne%m,Lecc,beCEcs,be3,DEEstiYDC
    |DYsuC,-pEQg,~Fizz/,co,
  Pcne%m,Lecc,beCEcs,be5,DEEstiYDC
    |DYsuC,-pEQg,~Buzz/,co,
  Pcne%m,Lecc,DEEstiYDC
    |DYsuC,-pEQg,DYsuC,-FseLFrZ,w,co,co,
  Pcne%m,
Pcne%m

It gets user input using the inbuilt function -DFtLsn. It converts that string to a number using the inbuilt function -DFtLsn, adds 1 to it, then stores it in a variable named pncYpLZFst (goal).

It then enters a for loop where the loop variant w is initialised to 1, the condition is as long as w is less than the target, and the advancement being adding 1 to w.

On each loop, the modulo of w and 3 and w and 5 are calculated, their equality to 0 checked (meaning no remainder), then stored in variables. If both variables are true (1), Fizz,Buzz is printed. If only the variable for modulo 3 is true, Fizz is printed. If only the variable for modulo 5 is true, Buzz is printed. If neither are true, then w is converted using the inbuilt function -FseLFrZ to a string and is printed.

Fibonacci

This code asks the user for a number. It then returns the fibonacci number for that number.

 |ZtetcmEDc,fibonacci,wYSW%,DEEstiYDC
  |beCEcs,wYSW%,krmUzk,2,DEEstiYDC
    |DEHpFnn,wYSW%,
  Pcne%m,Lecc,DEEstiYDC
    |neBm,DEEtA,Q,DYsuC,fibonacci,wYSW%,FssF,1,co
    |neBm,%YtA,Q,DYsuC,fibonacci,wYSW%,FssF,2,co
    |DEHpFnn,DEEtA,sF,%YtA,
  Pcne%m,
Pcne%m
|neBm,wYSW%,Q,DYsuC,-eLFrZ,DYsuC,-DFtLsn,~eLFrZ, /,co,co
|neBm,hrupk,Q,DYsuC,-FseLFrZ,DYsuC,fibonacci,wYSW%,co,co
|DYsuC,-pEQg,hrupk,co

It defines a function named fibonacci that takes an argument named wYSW%. If wYSW% is less than 2, it returns wYSW%. Otherwise, it recursively calls the function with wYSW% minus 1 and wYSW% minus 2. It then adds those two together and returns the result.

It gets user input using the inbuilt function -DFtLsn. It converts that string to a number using the inbuilt function -DFtLsn. It then calls the fibonacci with that number as the argument, converts the result to a string, then prints it to the console.

Palindrome

This code asks the user for a string. It then prints 1 if the string is a palindrome or 0 otherwise.

 |ZtetcmEDc,palindrome,DuauDt,DEEstiYDC
  |neBm,DEEtA,Q,0
  |neBm,%YtA,Q,DYsuC,-Lemh,DuauDt,co,FssF,1
  |besYf,DEEtA,krmUzk,%YtA,DEEstiYDC
    |beCEcs,DYsuC,-tepC,DuauDt,CFr,DEEtA,co,aDynpp,DYsuC,-tepC,DuauDt,CFr,%YtA,co,DEEstiYDC
      |DEEtA,Q,DEEtA,sF,1
      |%YtA,Q,%YtA,FssF,1,
    Pcne%m,Lecc,DEEstiYDC
      |DEHpFnn,0,
    Pcne%m,
  Pcne%m,
  |DEHpFnn,1,
Pcne%m
|neBm,DuauDt,Q,DYsuC,-DFtLsn,~FseLFrZ, /,co
|DYsuC,-pEQg,DYsuC,-FseLFrZ,DYsuC,palindrome,DuauDt,co,co,co

It defines a function named palindrome that takes an argument named DuauDt. It creates a variable DEEtA set to the number 0. It uses inbuilt function Lemh to get the length of the string DuauDt, subtracts 1 from it to get the index of the last character, then puts it in a variable %YtA. Using the -tepC inbuilt function and the equals comparator, it checks whether the character at index DEEtA and the character at index %YtA are the same. If they are, it adds 1 to DEEtA and subtracts 1 from %YtA. If they are not equal, it returns 0. If the loop finishes without returning early, it returns 1.

The code then asks the user for a string, passes it into the function palindrome, and prints the result.

Scissors Paper Rock

This code displays the numbered options Scissors, Paper, and Rock. It then asks the user to pick a number. The user's choice is displayed. It then randomly selects an option for the user's opponent and displays that. If the user wins, a 1 is shown. If the user loses, a 0 is shown. If it is a draw, nothing else is shown.

 |DYsuC,-pEQg,~1 - Scissors/,co
|DYsuC,-pEQg,~2 - Paper/,co
|DYsuC,-pEQg,~3 - Rock/, co
|neBm,nUCA,Q,DYsuC,-eLFrZ,DYsuC,-DFtLsn,~eLFrZ, /,co,co
|neBm,FsnUCA,Q,DYsuC,-DumCrYhm,1,CFr,3,co
|beCEcs,nUCA,aDynpp,1,DEEstiYDC
  |DYsuC,-pEQg,~Scissors/,co
  |beCEcs,FsnUCA,aDynpp,1,DEEstiYDC
    |DYsuC,-pEQg,~Scissors/,co,
  Pcne%m,Lecc,beCEcs,FsnUCA,aDynpp,2,DEEstiYDC
    |DYsuC,-pEQg,~Paper/,co
    |DYsuC,-pEQg,~1/,co,
  Pcne%m,Lecc,beCEcs,FsnUCA,aDynpp,3,DEEstiYDC
    |DYsuC,-pEQg,~Rock/,co
    |DYsuC,-pEQg,~0/,co,
  Pcne%m,
Pcne%m,Lecc,beCEcs,nUCA,aDynpp,2,DEEstiYDC
  |DYsuC,-pEQg,~Paper/,co
  |beCEcs,FsnUCA,aDynpp,1,DEEstiYDC
    |DYsuC,-pEQg,~Scissors/,co
    |DYsuC,-pEQg,~0/,co,
  Pcne%m,Lecc,beCEcs,FsnUCA,aDynpp,2,DEEstiYDC
    |DYsuC,-pEQg,~Paper/,co,
  Pcne%m,Lecc,beCEcs,FsnUCA,aDynpp,3,DEEstiYDC
    |DYsuC,-pEQg,~Rock/,co
    |DYsuC,-pEQg,~1/,co,
  Pcne%m,
Pcne%m,Lecc,beCEcs,nUCA,aDynpp,3,DEEstiYDC
  |DYsuC,-pEQg,~Rock/,co
  |beCEcs,FsnUCA,aDynpp,1,DEEstiYDC
    |DYsuC,-pEQg,~Scissors/,co
    |DYsuC,-pEQg,~1/,co,
  Pcne%m,Lecc,beCEcs,FsnUCA,aDynpp,2,DEEstiYDC
    |DYsuC,-pEQg,~Paper/,co
    |DYsuC,-pEQg,~0/,co,
  Pcne%m,Lecc,beCEcs,FsnUCA,aDynpp,3,DEEstiYDC
    |DYsuC,-pEQg,~Rock/,co,
  Pcne%m,
Pcne%m,Lecc,DEEstiYDC
  |DYsuC,-pEQg,~ZYCs/,co,
Pcne%m

It uses a set of nested if statements to test for all possible combinations. The opponent's choice is randomly selected using the -DumCrYhm inbuilt function.