We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

Powder

From Esolang
Jump to navigation Jump to search
Powder
Paradigm(s) imperative, structured, functional, object-oriented
Designed by User:A
Appeared in 2019
Computational class Turing complete
Reference implementation No implementations
Influenced by JSON, Lua
File extension(s) .conf

Powder is an inefficient and lightweight esoteric programming language based on defining tables by User:A. This is created to provide an example of a lightweight and extensible general-purpose programming language. (In this case, it creates an object-oriented notation using tags.) This is partly influenced by JSON's structure.

Documentation

Operator Function
{ Begin a table
} Ends a table
: Make a tag
, Separator of table values
" Tag indicator
. Index tags
' Refer to value

Actual Documentation

{
	"This table enclosed by braces( {} ) is the main table. You
	cannot delete this from any Powder program." : 0,

	"That thing above enclosed by quotation marks is a tag.
	You can assign anything valid in the syntax to a tag: a table, a value, or
	a tag. You can use a colon( : ) to set a tag to a value. Note
	that a tag assignment has to end in a comma(,), except for the
	last tag in the main table, which is not mandatory. (You have
	to make sure that a tag does not contain quotation marks.)" : 0,

	"Assigning a tag to a 0 is equivalent to a multi-line comment." : 0,

	"Example:" : 1234, "This assigns the tag Example to 1234." : 0,

	"This is an example to assign a tag to a table:" : 0,

	"table_tag" :
	{
		"a" : 1,
		"b" : 3
	},

	"You can index values using dots(.) ." : 0,

	"value" : "table_tag" . "b",

	"You can even assign a tag to a tag!" : 0,

	"This is a program that will be executed : " :
	{
		"Some_tag" : 18
	},

	"And an example to execute a tag:" : "This is a program that will be executed : ",

	"Though, if you want the value of a tag, you can use another way to do that." : 0,

	"value" : 'Example',

	"This assigns value to 1234." : 0,

	"Object Orientation in Powder:" : 0,

	"Define a class called class1" : 0,

	"class1" :
	{
		"fine" :
		{
			"a" : 1
		}
	},

	"Supports identity, properties(just define a tag in a class and call it),
	and attributes." : 0,

	"class2" :
	{
		"done" :
		{
			"b" : 2
		}
	}
}

Computational Class

Powder can easily compile to Smallfuck with an extension.

> and < : these change the currently operating tag.
* : We can define a flip table in Powder to do this:
"flip" :
{
	"1" : 0,
	"0" : 1
},

[ and ] : these are quite complicated. First, we have to define an if table:
"if" :
{
	"0" : "tag_after_matching_]",
	"1" : 0
},
The 1 merely does nothing.

Then, we need to check the current cell to see if it is 0 (implementing [):

"result" : "if".&"current_cell",

Finally, we just have to implement a jump command.

"jump" : "the_matching_[",

Note that tags containing "matching" should be dynamically modified to make the jumps match.

Also, we have to grant Smallfuck an infinite tape. We will implement a command that adds a cell to the tape(&):

"cell" : 0,

Where cell is different in each cell.

Clearing a cell is simple: just set a cell to 0.

Examples

Hello, world!

{
	"output" :
	{
		"1" : 72,
		"2" : 101,
		"3" : 108,
		"4" : 108,
		"5" : 111,
		"6" : 44,
		"7" : 32,
		"8" : 119,
		"9" : 111,
		"10" : 114,
		"11" : 108,
		"12" : 100
		"13" : 33
	}
}

Cat program

{
	"input" : 12341234,
	"Put your input here." : 0,
	"output" : 'input'
}

Truth-machine

{
	"if" :
	{
		"1" : "infinite_loop",
		"0" : "halt"
	}
	"input" : 1,
	"result" : "if".'input',
	"halt" :
	{
		"output" : 0
	},
	"infinite_loop" :
	{
		"output" : 1,
		"result" : "infinite_loop"
	}
}

Deadfish non-interactive partial interpreter

This is a huge program (611 lines).

{
	"cnt" : 0,
	"ac" : 0,

	"Put your code here." : 0,
	"input" : 
	{
		"0" : 0,
		"1" : 0,
		"2" : 0,
		"3" : 0
	},

	"Note that this only implements a part of incrementing." : 0,
	"inc" :
	{
		"0" : 1,
		"1" : 2,
		"2" : 3,
		"3" : 4,
		"4" : 5,
		"5" : 6,
		"6" : 7,
		"7" : 8,
		"8" : 9,
		"9" : 10,
		"10" : 11,
		"11" : 12,
		"12" : 13,
		"13" : 14,
		"14" : 15,
		"15" : 16,
		"16" : 17,
		"17" : 18,
		"18" : 19,
		"19" : 20,
		"20" : 21,
		"21" : 22,
		"22" : 23,
		"23" : 24,
		"24" : 25,
		"25" : 26,
		"26" : 27,
		"27" : 28,
		"28" : 29,
		"29" : 30,
		"30" : 31,
		"31" : 32,
		"32" : 33,
		"33" : 34,
		"34" : 35,
		"35" : 36,
		"36" : 37,
		"37" : 38,
		"38" : 39,
		"39" : 40,
		"40" : 41,
		"41" : 42,
		"42" : 43,
		"43" : 44,
		"44" : 45,
		"45" : 46,
		"46" : 47,
		"47" : 48,
		"48" : 49,
		"49" : 50,
		"50" : 51,
		"51" : 52,
		"52" : 53,
		"53" : 54,
		"54" : 55,
		"55" : 56,
		"56" : 57,
		"57" : 58,
		"58" : 59,
		"59" : 60,
		"60" : 61,
		"61" : 62,
		"62" : 63,
		"63" : 64,
		"64" : 65,
		"65" : 66,
		"66" : 67,
		"67" : 68,
		"68" : 69,
		"69" : 70,
		"70" : 71,
		"71" : 72,
		"72" : 73,
		"73" : 74,
		"74" : 75,
		"75" : 76,
		"76" : 77,
		"77" : 78,
		"78" : 79,
		"79" : 80,
		"80" : 81,
		"81" : 82,
		"82" : 83,
		"83" : 84,
		"84" : 85,
		"85" : 86,
		"86" : 87,
		"87" : 88,
		"88" : 89,
		"89" : 90,
		"90" : 91,
		"91" : 92,
		"92" : 93,
		"93" : 94,
		"94" : 95,
		"95" : 96,
		"96" : 97,
		"97" : 98,
		"98" : 99,
		"99" : 100,
		"100" : 101,
		"101" : 102,
		"102" : 103,
		"103" : 104,
		"104" : 105,
		"105" : 106,
		"106" : 107,
		"107" : 108,
		"108" : 109,
		"109" : 110,
		"110" : 111,
		"111" : 112,
		"112" : 113,
		"113" : 114,
		"114" : 115,
		"115" : 116,
		"116" : 117,
		"117" : 118,
		"118" : 119,
		"119" : 120,
		"120" : 121,
		"121" : 122,
		"122" : 123,
		"123" : 124,
		"124" : 125,
		"125" : 126,
		"126" : 127,
		"127" : 128,
		"128" : 129,
		"129" : 130,
		"130" : 131,
		"131" : 132,
		"132" : 133,
		"133" : 134,
		"134" : 135,
		"135" : 136,
		"136" : 137,
		"137" : 138,
		"138" : 139,
		"139" : 140,
		"140" : 141,
		"141" : 142,
		"142" : 143,
		"143" : 144,
		"144" : 145,
		"145" : 146,
		"146" : 147,
		"147" : 148,
		"148" : 149,
		"149" : 150,
		"150" : 151,
		"151" : 152,
		"152" : 153,
		"153" : 154,
		"154" : 155,
		"155" : 156,
		"156" : 157,
		"157" : 158,
		"158" : 159,
		"159" : 160,
		"160" : 161,
		"161" : 162,
		"162" : 163,
		"163" : 164,
		"164" : 165,
		"165" : 166,
		"166" : 167,
		"167" : 168,
		"168" : 169,
		"169" : 170,
		"170" : 171,
		"171" : 172,
		"172" : 173,
		"173" : 174,
		"174" : 175,
		"175" : 176,
		"176" : 177,
		"177" : 178,
		"178" : 179,
		"179" : 180,
		"180" : 181,
		"181" : 182,
		"182" : 183,
		"183" : 184,
		"184" : 185,
		"185" : 186,
		"186" : 187,
		"187" : 188,
		"188" : 189,
		"189" : 190,
		"190" : 191,
		"191" : 192,
		"192" : 193,
		"193" : 194,
		"194" : 195,
		"195" : 196,
		"196" : 197,
		"197" : 198,
		"198" : 199,
		"199" : 200,
		"200" : 201,
		"201" : 202,
		"202" : 203,
		"203" : 204,
		"204" : 205,
		"205" : 206,
		"206" : 207,
		"207" : 208,
		"208" : 209,
		"209" : 210,
		"210" : 211,
		"211" : 212,
		"212" : 213,
		"213" : 214,
		"214" : 215,
		"215" : 216,
		"216" : 217,
		"217" : 218,
		"218" : 219,
		"219" : 220,
		"220" : 221,
		"221" : 222,
		"222" : 223,
		"223" : 224,
		"224" : 225,
		"225" : 226,
		"226" : 227,
		"227" : 228,
		"228" : 229,
		"229" : 230,
		"230" : 231,
		"231" : 232,
		"232" : 233,
		"233" : 234,
		"234" : 235,
		"235" : 236,
		"236" : 237,
		"237" : 238,
		"238" : 239,
		"239" : 240,
		"240" : 241,
		"241" : 242,
		"242" : 243,
		"243" : 244,
		"244" : 245,
		"245" : 246,
		"246" : 247,
		"247" : 248,
		"248" : 249,
		"249" : 250,
		"250" : 251,
		"251" : 252,
		"252" : 253,
		"253" : 254,
		"254" : 255,
		"255" : 0,
		"256" : 0,
	},

	"Here is the decrement prodecedure (partial)" : 0,
	"dec" :
	{
		"257" : 0,
		"256" : 0,
		"255" : 254,
		"254" : 253,
		"253" : 252,
		"252" : 251,
		"251" : 250,
		"250" : 249,
		"249" : 248,
		"248" : 247,
		"247" : 246,
		"246" : 245,
		"245" : 244,
		"244" : 243,
		"243" : 242,
		"242" : 241,
		"241" : 240,
		"240" : 239,
		"239" : 238,
		"238" : 237,
		"237" : 236,
		"236" : 235,
		"235" : 234,
		"234" : 233,
		"233" : 232,
		"232" : 231,
		"231" : 230,
		"230" : 229,
		"229" : 228,
		"228" : 227,
		"227" : 226,
		"226" : 225,
		"225" : 224,
		"224" : 223,
		"223" : 222,
		"222" : 221,
		"221" : 220,
		"220" : 219,
		"219" : 218,
		"218" : 217,
		"217" : 216,
		"216" : 215,
		"215" : 214,
		"214" : 213,
		"213" : 212,
		"212" : 211,
		"211" : 210,
		"210" : 209,
		"209" : 208,
		"208" : 207,
		"207" : 206,
		"206" : 205,
		"205" : 204,
		"204" : 203,
		"203" : 202,
		"202" : 201,
		"201" : 200,
		"200" : 199,
		"199" : 198,
		"198" : 197,
		"197" : 196,
		"196" : 195,
		"195" : 194,
		"194" : 193,
		"193" : 192,
		"192" : 191,
		"191" : 190,
		"190" : 189,
		"189" : 188,
		"188" : 187,
		"187" : 186,
		"186" : 185,
		"185" : 184,
		"184" : 183,
		"183" : 182,
		"182" : 181,
		"181" : 180,
		"180" : 179,
		"179" : 178,
		"178" : 177,
		"177" : 176,
		"176" : 175,
		"175" : 174,
		"174" : 173,
		"173" : 172,
		"172" : 171,
		"171" : 170,
		"170" : 169,
		"169" : 168,
		"168" : 167,
		"167" : 166,
		"166" : 165,
		"165" : 164,
		"164" : 163,
		"163" : 162,
		"162" : 161,
		"161" : 160,
		"160" : 159,
		"159" : 158,
		"158" : 157,
		"157" : 156,
		"156" : 155,
		"155" : 154,
		"154" : 153,
		"153" : 152,
		"152" : 151,
		"151" : 150,
		"150" : 149,
		"149" : 148,
		"148" : 147,
		"147" : 146,
		"146" : 145,
		"145" : 144,
		"144" : 143,
		"143" : 142,
		"142" : 141,
		"141" : 140,
		"140" : 139,
		"139" : 138,
		"138" : 137,
		"137" : 136,
		"136" : 135,
		"135" : 134,
		"134" : 133,
		"133" : 132,
		"132" : 131,
		"131" : 130,
		"130" : 129,
		"129" : 128,
		"128" : 127,
		"127" : 126,
		"126" : 125,
		"125" : 124,
		"124" : 123,
		"123" : 122,
		"122" : 121,
		"121" : 120,
		"120" : 119,
		"119" : 118,
		"118" : 117,
		"117" : 116,
		"116" : 115,
		"115" : 114,
		"114" : 113,
		"113" : 112,
		"112" : 111,
		"111" : 110,
		"110" : 109,
		"109" : 108,
		"108" : 107,
		"107" : 106,
		"106" : 105,
		"105" : 104,
		"104" : 103,
		"103" : 102,
		"102" : 101,
		"101" : 100,
		"100" : 99,
		"99" : 98,
		"98" : 97,
		"97" : 96,
		"96" : 95,
		"95" : 94,
		"94" : 93,
		"93" : 92,
		"92" : 91,
		"91" : 90,
		"90" : 89,
		"89" : 88,
		"88" : 87,
		"87" : 86,
		"86" : 85,
		"85" : 84,
		"84" : 83,
		"83" : 82,
		"82" : 81,
		"81" : 80,
		"80" : 79,
		"79" : 78,
		"78" : 77,
		"77" : 76,
		"76" : 75,
		"75" : 74,
		"74" : 73,
		"73" : 72,
		"72" : 71,
		"71" : 70,
		"70" : 69,
		"69" : 68,
		"68" : 67,
		"67" : 66,
		"66" : 65,
		"65" : 64,
		"64" : 63,
		"63" : 62,
		"62" : 61,
		"61" : 60,
		"60" : 59,
		"59" : 58,
		"58" : 57,
		"57" : 56,
		"56" : 55,
		"55" : 54,
		"54" : 53,
		"53" : 52,
		"52" : 51,
		"51" : 50,
		"50" : 49,
		"49" : 48,
		"48" : 47,
		"47" : 46,
		"46" : 45,
		"45" : 44,
		"44" : 43,
		"43" : 42,
		"42" : 41,
		"41" : 40,
		"40" : 39,
		"39" : 38,
		"38" : 37,
		"37" : 36,
		"36" : 35,
		"35" : 34,
		"34" : 33,
		"33" : 32,
		"32" : 31,
		"31" : 30,
		"30" : 29,
		"29" : 28,
		"28" : 27,
		"27" : 26,
		"26" : 25,
		"25" : 24,
		"24" : 23,
		"23" : 22,
		"22" : 21,
		"21" : 20,
		"20" : 19,
		"19" : 18,
		"18" : 17,
		"17" : 16,
		"16" : 15,
		"15" : 14,
		"14" : 13,
		"13" : 12,
		"12" : 11,
		"11" : 10,
		"10" : 9,
		"9" : 8,
		"8" : 7,
		"7" : 6,
		"6" : 5,
		"5" : 4,
		"4" : 3,
		"3" : 2,
		"2" : 1,
		"1" : 0,
		"0" : 0
	}

	"Implement a procedure to square the accumulator" : 0,
	"squ" :
	{
		"0" : 0,
		"1" : 1,
		"2" : 4,
		"3" : 9,
		"4" : 16,
		"5" : 25,
		"6" : 36,
		"7" : 49,
		"8" : 64,
		"9" : 81,
		"10" : 100,
		"11" : 121,
		"12" : 144,
		"13" : 169,
		"14" : 196,
		"15" : 225,
		"16" : 0,
	}

	"interpret the program (idso)" : 0,
	"interpret"
	{
		"105" : "increment_ac",
		"100" : "decrement_ac",
		"115" : "square_ac",
		"111" : "output_ac"
	}

	"i" : 0,
	"increment_ac" :
	{
		"ac" : "inc".'ac'
	}

	"d" : 0,
	"decrement_ac" :
	{
		"ac" : "dec".'ac'
	}

	"s" : 0,
	"square_ac" :
	{
		"ac" : "squ".'ac'
	}

	"o" : 0,
	"output_ac" :
	{
		"output" : 'ac'
	}

	"main loop " : 0,
	"forever" :
	{
		"Prompt(>> \n)" : 0,
		"output" :
		{
			"1" : 62,
			"2" : 62,
			"3" : 32,
			"4" : 10
		}

		"interpret"."input".'cnt',
		"cnt" : "inc".'cnt',
		
		"return" : "forever"
	}
}

Fibonacci sequence

This is limited in results.

{
	"fib" :
	{
		"0" : 0,
		"1" : 1,
		"2" : 1,
		"3" : 2,
		"4" : 3,
		"5" : 5,
		"6" : 8,
		"7" : 13,
		"8" : 21,
		"9" : 34,
		"10" : 55,
		"11" : 89,
		"12" : 144,
		"13" : 233,
		"14" : 377,
		"15" : 610,
		"16" : 987,
		"17" : 1597,
		"18" : 2584,
		"19" : 4181,
		"20" : 6765,
		"21" : 10946,
		"22" : 17711,
		"23" : 28657,
		"24" : 46368,
		"25" : 75025,
		"26" : 121393,
		"27" : 196418,
		"28" : 317811,
		"29" : 514229,
		"30" : 832040,
		"31" : 1346269,
		"32" : 2178309,
		"33" : 3524578,
		"34" : 5702887,
		"35" : 9227465,
		"36" : 14930352,
		"37" : 24157817,
		"38" : 39088169,
		"39" : 63245986,
		"40" : 102334155,
		"41" : 165580141,
		"42" : 267914296,
		"43" : 433494437,
		"44" : 701408733,
		"45" : 1134903170,
		"46" : 1836311903,
		"47" : 2971215073,
		"48" : 4807526976,
		"49" : 7778742049,
		"50" : 12586269025,
		"51" : 20365011074,
		"52" : 32951280099,
		"53" : 53316291173,
		"54" : 86267571272,
		"55" : 139583862445,
		"56" : 225851433717,
		"57" : 365435296162,
		"58" : 591286729879,
		"59" : 956722026041,
		"60" : 1548008755920,
		"61" : 2504730781961,
		"62" : 4052739537881,
		"63" : 6557470319842,
		"64" : 10610209857723,
		"65" : 17167680177565,
		"66" : 27777890035288,
		"67" : 44945570212853,
		"68" : 72723460248141,
		"69" : 117669030460994,
		"70" : 190392490709135,
		"71" : 308061521170129,
		"72" : 498454011879264,
		"73" : 806515533049393,
		"74" : 1304969544928657,
		"75" : 2111485077978050,
		"76" : 3416454622906707,
		"77" : 5527939700884757,
		"78" : 8944394323791464,
		"79" : 14472334024676221,
		"80" : 23416728348467685,
		"81" : 37889062373143906,
		"82" : 61305790721611591,
		"83" : 99194853094755497,
		"84" : 160500643816367088,
		"85" : 259695496911122585,
		"86" : 420196140727489673,
		"87" : 679891637638612258,
		"88" : 1100087778366101931,
		"89" : 1779979416004714189,
		"90" : 2880067194370816120,
		"91" : 4660046610375530309,
		"92" : 7540113804746346429,
		"93" : 12200160415121876738,
		"94" : 19740274219868223167,
		"95" : 31940434634990099905,
		"96" : 51680708854858323072,
		"97" : 83621143489848422977,
		"98" : 135301852344706746049,
		"99" : 218922995834555169026,
		"100" : 354224848179261915075,
		"101" : 573147844013817084101,
		"102" : 927372692193078999176,
		"103" : 1500520536206896083277,
		"104" : 2427893228399975082453,
		"105" : 3928413764606871165730,
		"106" : 6356306993006846248183,
		"107" : 10284720757613717413913,
		"108" : 16641027750620563662096,
		"109" : 26925748508234281076009,
		"110" : 43566776258854844738105,
		"111" : 70492524767089125814114,
		"112" : 114059301025943970552219,
		"113" : 184551825793033096366333,
		"114" : 298611126818977066918552,
		"115" : 483162952612010163284885,
		"116" : 781774079430987230203437,
		"117" : 1264937032042997393488322,
		"118" : 2046711111473984623691759,
		"119" : 3311648143516982017180081,
		"120" : 5358359254990966640871840,
		"121" : 8670007398507948658051921,
		"122" : 14028366653498915298923761,
		"123" : 22698374052006863956975682,
		"124" : 36726740705505779255899443,
		"125" : 59425114757512643212875125,
		"126" : 96151855463018422468774568,
		"127" : 155576970220531065681649693,
		"128" : 251728825683549488150424261,
		"129" : 407305795904080553832073954,
		"130" : 659034621587630041982498215,
		"131" : 1066340417491710595814572169,
		"132" : 1725375039079340637797070384,
		"133" : 2791715456571051233611642553,
		"134" : 4517090495650391871408712937,
		"135" : 7308805952221443105020355490,
		"136" : 11825896447871834976429068427,
		"137" : 19134702400093278081449423917,
		"138" : 30960598847965113057878492344,
		"139" : 50095301248058391139327916261,
		"140" : 81055900096023504197206408605,
		"141" : 131151201344081895336534324866,
		"142" : 212207101440105399533740733471,
		"143" : 343358302784187294870275058337,
		"144" : 555565404224292694404015791808,
		"145" : 898923707008479989274290850145,
		"146" : 1454489111232772683678306641953,
		"147" : 2353412818241252672952597492098,
		"148" : 3807901929474025356630904134051,
		"149" : 6161314747715278029583501626149,
		"150" : 9969216677189303386214405760200,
		"151" : 16130531424904581415797907386349,
		"152" : 26099748102093884802012313146549,
		"153" : 42230279526998466217810220532898,
		"154" : 68330027629092351019822533679447,
		"155" : 110560307156090817237632754212345,
		"156" : 178890334785183168257455287891792,
		"157" : 289450641941273985495088042104137,
		"158" : 468340976726457153752543329995929,
		"159" : 757791618667731139247631372100066,
		"160" : 1226132595394188293000174702095995,
		"161" : 1983924214061919432247806074196061,
		"162" : 3210056809456107725247980776292056,
		"163" : 5193981023518027157495786850488117,
		"164" : 8404037832974134882743767626780173,
		"165" : 13598018856492162040239554477268290,
		"166" : 22002056689466296922983322104048463,
		"167" : 35600075545958458963222876581316753,
		"168" : 57602132235424755886206198685365216,
		"169" : 93202207781383214849429075266681969,
		"170" : 150804340016807970735635273952047185,
		"171" : 244006547798191185585064349218729154,
		"172" : 394810887814999156320699623170776339,
		"173" : 638817435613190341905763972389505493,
		"174" : 1033628323428189498226463595560281832,
		"175" : 1672445759041379840132227567949787325,
		"176" : 2706074082469569338358691163510069157,
		"177" : 4378519841510949178490918731459856482,
		"178" : 7084593923980518516849609894969925639,
		"179" : 11463113765491467695340528626429782121,
		"180" : 18547707689471986212190138521399707760,
		"181" : 30010821454963453907530667147829489881,
		"182" : 48558529144435440119720805669229197641,
		"183" : 78569350599398894027251472817058687522,
		"184" : 127127879743834334146972278486287885163,
		"185" : 205697230343233228174223751303346572685,
		"186" : 332825110087067562321196029789634457848,
		"187" : 538522340430300790495419781092981030533,
		"188" : 871347450517368352816615810882615488381,
		"189" : 1409869790947669143312035591975596518914,
		"190" : 2281217241465037496128651402858212007295,
		"191" : 3691087032412706639440686994833808526209,
		"192" : 5972304273877744135569338397692020533504,
		"193" : 9663391306290450775010025392525829059713,
		"194" : 15635695580168194910579363790217849593217,
		"195" : 25299086886458645685589389182743678652930,
		"196" : 40934782466626840596168752972961528246147,
		"197" : 66233869353085486281758142155705206899077,
		"198" : 107168651819712326877926895128666735145224,
		"199" : 173402521172797813159685037284371942044301,
		"200" : 280571172992510140037611932413038677189525,

	},
	"input" : 5,
	"output" : "fib".'input'
}

A simple adder code snippet

In this snippet, you can only add using 0, 1, and 2. Implementing a whole adder would be impossible and tedious.

{
	"add" :
	{
		"0" :
		{
			"0" : 0
			"1" : 1
			"2" : 2
		}
		"1" :
		{
			"0" : 1
			"1" : 2
			"2" : 3
		}
		"2" :
		{
			"0" : 2
			"1" : 3
			"2" : 4
		}
	}
}

Factorial

This is a limited factorial function.

{
	"fac" :
	{
		"1" : 1,
		"2" : 2,
		"3" : 6,
		"4" : 24,
		"5" : 120,
		"6" : 720,
		"7" : 5040,
		"8" : 40320,
		"9" : 362880,
		"10" : 3628800,
		"11" : 39916800,
		"12" : 479001600,
		"13" : 6227020800,
		"14" : 87178291200,
		"15" : 1307674368000,
		"16" : 20922789888000,
		"17" : 355687428096000,
		"18" : 6402373705728000,
		"19" : 121645100408832000,
		"20" : 2432902008176640000,
		"21" : 51090942171709440000,
		"22" : 1124000727777607680000,
		"23" : 25852016738884976640000,
		"24" : 620448401733239439360000,
		"25" : 15511210043330985984000000,
		"26" : 403291461126605635584000000,
		"27" : 10888869450418352160768000000,
		"28" : 304888344611713860501504000000,
		"29" : 8841761993739701954543616000000,
		"30" : 265252859812191058636308480000000,
		"31" : 8222838654177922817725562880000000,
		"32" : 263130836933693530167218012160000000,
		"33" : 8683317618811886495518194401280000000,
		"34" : 295232799039604140847618609643520000000,
		"35" : 10333147966386144929666651337523200000000,
		"36" : 371993326789901217467999448150835200000000,
		"37" : 13763753091226345046315979581580902400000000,
		"38" : 523022617466601111760007224100074291200000000,
		"39" : 20397882081197443358640281739902897356800000000,
		"40" : 815915283247897734345611269596115894272000000000,
		"41" : 33452526613163807108170062053440751665152000000000,
		"42" : 1405006117752879898543142606244511569936384000000000,
		"43" : 60415263063373835637355132068513997507264512000000000,
		"44" : 2658271574788448768043625811014615890319638528000000000,
		"45" : 119622220865480194561963161495657715064383733760000000000,
		"46" : 5502622159812088949850305428800254892961651752960000000000,
		"47" : 258623241511168180642964355153611979969197632389120000000000,
		"48" : 12413915592536072670862289047373375038521486354677760000000000,
		"49" : 608281864034267560872252163321295376887552831379210240000000000,
		"50" : 30414093201713378043612608166064768844377641568960512000000000000,
		"51" : 1551118753287382280224243016469303211063259720016986112000000000000,
		"52" : 80658175170943878571660636856403766975289505440883277824000000000000,
		"53" : 4274883284060025564298013753389399649690343788366813724672000000000000,
		"54" : 230843697339241380472092742683027581083278564571807941132288000000000000,
		"55" : 12696403353658275925965100847566516959580321051449436762275840000000000000,
		"56" : 710998587804863451854045647463724949736497978881168458687447040000000000000,
		"57" : 40526919504877216755680601905432322134980384796226602145184481280000000000000,
		"58" : 2350561331282878571829474910515074683828862318181142924420699914240000000000000,
		"59" : 138683118545689835737939019720389406345902876772687432540821294940160000000000000,
		"60" : 8320987112741390144276341183223364380754172606361245952449277696409600000000000000,
		"61" : 507580213877224798800856812176625227226004528988036003099405939480985600000000000000,
		"62" : 31469973260387937525653122354950764088012280797258232192163168247821107200000000000000,
		"63" : 1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000,
		"64" : 126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000,
		"65" : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000,
		"66" : 544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000,
		"67" : 36471110918188685288249859096605464427167635314049524593701628500267962436943872000000000000000,
		"68" : 2480035542436830599600990418569171581047399201355367672371710738018221445712183296000000000000000,
		"69" : 171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000,
		"70" : 11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000,
		"71" : 850478588567862317521167644239926010288584608120796235886430763388588680378079017697280000000000000000,
		"72" : 61234458376886086861524070385274672740778091784697328983823014963978384987221689274204160000000000000000,
		"73" : 4470115461512684340891257138125051110076800700282905015819080092370422104067183317016903680000000000000000,
		"74" : 330788544151938641225953028221253782145683251820934971170611926835411235700971565459250872320000000000000000,
		"75" : 24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424000000000000000000,
		"76" : 1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224000000000000000000,
		"77" : 145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248000000000000000000,
		"78" : 11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344000000000000000000,
		"79" : 894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000,
		"80" : 71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000,
		"81" : 5797126020747367985879734231578109105412357244731625958745865049716390179693892056256184534249745940480000000000000000000,
		"82" : 475364333701284174842138206989404946643813294067993328617160934076743994734899148613007131808479167119360000000000000000000,
		"83" : 39455239697206586511897471180120610571436503407643446275224357528369751562996629334879591940103770870906880000000000000000000,
		"84" : 3314240134565353266999387579130131288000666286242049487118846032383059131291716864129885722968716753156177920000000000000000000,
		"85" : 281710411438055027694947944226061159480056634330574206405101912752560026159795933451040286452340924018275123200000000000000000000,
		"86" : 24227095383672732381765523203441259715284870552429381750838764496720162249742450276789464634901319465571660595200000000000000000000,
		"87" : 2107757298379527717213600518699389595229783738061356212322972511214654115727593174080683423236414793504734471782400000000000000000000,
		"88" : 185482642257398439114796845645546284380220968949399346684421580986889562184028199319100141244804501828416633516851200000000000000000000,
		"89" : 16507955160908461081216919262453619309839666236496541854913520707833171034378509739399912570787600662729080382999756800000000000000000000,
		"90" : 1485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112000000000000000000000,
		"91" : 135200152767840296255166568759495142147586866476906677791741734597153670771559994765685283954750449427751168336768008192000000000000000000000,
		"92" : 12438414054641307255475324325873553077577991715875414356840239582938137710983519518443046123837041347353107486982656753664000000000000000000000,
		"93" : 1156772507081641574759205162306240436214753229576413535186142281213246807121467315215203289516844845303838996289387078090752000000000000000000000,
		"94" : 108736615665674308027365285256786601004186803580182872307497374434045199869417927630229109214583415458560865651202385340530688000000000000000000000,
		"95" : 10329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000,
		"96" : 991677934870949689209571401541893801158183648651267795444376054838492222809091499987689476037000748982075094738965754305639874560000000000000000000000,
		"97" : 96192759682482119853328425949563698712343813919172976158104477319333745612481875498805879175589072651261284189679678167647067832320000000000000000000000,
		"98" : 9426890448883247745626185743057242473809693764078951663494238777294707070023223798882976159207729119823605850588608460429412647567360000000000000000000000,
		"99" : 933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000,
		"100" : 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
	},
	"input" : 123,
	"output" : "fac".'input'
}