User:Thebigh/mysandbox: Difference between revisions

From Rosetta Code
Content added Content deleted
(start a very rough draft)
m (tweak)
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
Some FRACTRAN programs in case we ever have a category for it
A '''crossword''' is a puzzle game consisting of a grid of white and black squares. The white squares must be filled in with letters of the alphabet according to certain clues, such that horizontal rows and vertical columns of letters all form words. Black squares separate the words.


==A+B==
Given a dictionary of words (use unixdict.txt), the length of a word to be searched for, and a list of known letters and their position, write a program to find all words in the dictionary that fit the requirements.


Input a number of the form 2^a 3^b
* Show all solutions for "Three letter word, first letter D, third letter G"
<lang fractran>
2/3
</lang>
The output is 2^(a+b)


===Extra credit===
==Empty program==


A list of no fractions does nothing, then immediately stops.
Some "words" are actually phrases of several words with the lengths of each individual word in the phrase given. Search all combinations of words with those lengths for solutions.
<lang fractran></lang>

==Integer Sequence==
Given the number 1 as input the following program will, as its (3n-2)th step, produce the number 2^n.
<lang fractran> 2/3, 9/2, 2/1</lang>

==Logical operations==
It's not so hard to code up all sixteen possible two-input logic gates, so here they are. The input is 2^a 3^b where a,b are zero or one and the output is 5^1 for true and 5^0 for false. Gates that return true when all their inputs are false additionally require the flag 11 to be set as input (ie 2^a*3^b*11)- any FRACTRAN program with the number 1 as input either stops without doing anything or loops forever.

<lang fractran>
5/6, 1/2, 1/3 AND gate
5/6, 5/2, 5/3 OR gate
1/22, 5/11 NOT gate (uses 11 as a halt flag, result of 2^a*11 is 5^not(a))
1/6, 5/2, 5/3 XOR gate
1/66, 5/22, 5/33, 5/11 NAND gate (needs 11 flag)
5/66, 1/22, 1/33, 5/11 NXOR gate (needs flag)
1/66, 1/22, 1/33, 5/11 NOR gate (needs flag)

so much for all the commonly encountered ones, but there's still another eight to go. Most are obscure and of limited utility.

1/2, 1/3 ZERO gate, returns false regardless of its input
1/6, 5/2, 1/3 "A and not B", true only if A is true and B is false
5/2, 1/3 A , returns the state of A regardless of B
1/6, 1/2, 5/3 "B and not A", true only if B is true and A is false
1/2, 5/3 B , returns the state of B regardless of A
1/66, 1/33, 5/11 "A or not B" (needs flag)
1/66, 1/22, 5/11 "B or not A" (needs flag)
5/66, 5/22, 5/33, 5/11 ONE gate, returns true regardless of its input, needs flag

NOT A and NOT B are omitted because the one-input NOT gate is already up there.
</lang>

==Sort three variables==
FRACTRAN's only data type is positive integers. Suppose (a,b,c) are the integers to be sorted. Give the following as input:
2^a 3^b 5^c
<lang fractran>
1001/30, 143/6, 143/10, 143/15, 13/2, 13/3, 13/5
</lang>
Returns 7^A 11^B 13^C where (A,B,C) are (a,b,c) in ascending order.

Latest revision as of 11:27, 28 November 2021

Some FRACTRAN programs in case we ever have a category for it

A+B

Input a number of the form 2^a 3^b <lang fractran> 2/3 </lang> The output is 2^(a+b)

Empty program

A list of no fractions does nothing, then immediately stops. <lang fractran></lang>

Integer Sequence

Given the number 1 as input the following program will, as its (3n-2)th step, produce the number 2^n. <lang fractran> 2/3, 9/2, 2/1</lang>

Logical operations

It's not so hard to code up all sixteen possible two-input logic gates, so here they are. The input is 2^a 3^b where a,b are zero or one and the output is 5^1 for true and 5^0 for false. Gates that return true when all their inputs are false additionally require the flag 11 to be set as input (ie 2^a*3^b*11)- any FRACTRAN program with the number 1 as input either stops without doing anything or loops forever.

<lang fractran> 5/6, 1/2, 1/3 AND gate 5/6, 5/2, 5/3 OR gate 1/22, 5/11 NOT gate (uses 11 as a halt flag, result of 2^a*11 is 5^not(a)) 1/6, 5/2, 5/3 XOR gate 1/66, 5/22, 5/33, 5/11 NAND gate (needs 11 flag) 5/66, 1/22, 1/33, 5/11 NXOR gate (needs flag) 1/66, 1/22, 1/33, 5/11 NOR gate (needs flag)

so much for all the commonly encountered ones, but there's still another eight to go. Most are obscure and of limited utility.

1/2, 1/3 ZERO gate, returns false regardless of its input 1/6, 5/2, 1/3 "A and not B", true only if A is true and B is false 5/2, 1/3 A , returns the state of A regardless of B 1/6, 1/2, 5/3 "B and not A", true only if B is true and A is false 1/2, 5/3 B , returns the state of B regardless of A 1/66, 1/33, 5/11 "A or not B" (needs flag) 1/66, 1/22, 5/11 "B or not A" (needs flag) 5/66, 5/22, 5/33, 5/11 ONE gate, returns true regardless of its input, needs flag

NOT A and NOT B are omitted because the one-input NOT gate is already up there. </lang>

Sort three variables

FRACTRAN's only data type is positive integers. Suppose (a,b,c) are the integers to be sorted. Give the following as input: 2^a 3^b 5^c <lang fractran> 1001/30, 143/6, 143/10, 143/15, 13/2, 13/3, 13/5 </lang> Returns 7^A 11^B 13^C where (A,B,C) are (a,b,c) in ascending order.