Powder
Jump to navigation
Jump to search
| 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'
}