Last active
April 9, 2021 10:21
-
-
Save ormaaj/4a1b756e54dbed2e6fd7e1262c332519 to your computer and use it in GitHub Desktop.
C# plinq factorial
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 | |
1 | |
2 | |
6 | |
24 | |
120 | |
720 | |
5040 | |
40320 | |
362880 | |
3628800 | |
39916800 | |
479001600 | |
6227020800 | |
87178291200 | |
1307674368000 | |
20922789888000 | |
355687428096000 | |
6402373705728000 | |
121645100408832000 | |
2432902008176640000 | |
51090942171709440000 | |
1124000727777607680000 | |
25852016738884976640000 | |
620448401733239439360000 | |
15511210043330985984000000 | |
403291461126605635584000000 | |
10888869450418352160768000000 | |
304888344611713860501504000000 | |
8841761993739701954543616000000 | |
265252859812191058636308480000000 | |
8222838654177922817725562880000000 | |
263130836933693530167218012160000000 | |
8683317618811886495518194401280000000 | |
295232799039604140847618609643520000000 | |
10333147966386144929666651337523200000000 | |
371993326789901217467999448150835200000000 | |
13763753091226345046315979581580902400000000 | |
523022617466601111760007224100074291200000000 | |
20397882081197443358640281739902897356800000000 | |
815915283247897734345611269596115894272000000000 | |
33452526613163807108170062053440751665152000000000 | |
1405006117752879898543142606244511569936384000000000 | |
60415263063373835637355132068513997507264512000000000 | |
2658271574788448768043625811014615890319638528000000000 | |
119622220865480194561963161495657715064383733760000000000 | |
5502622159812088949850305428800254892961651752960000000000 | |
258623241511168180642964355153611979969197632389120000000000 | |
12413915592536072670862289047373375038521486354677760000000000 | |
608281864034267560872252163321295376887552831379210240000000000 | |
30414093201713378043612608166064768844377641568960512000000000000 | |
1551118753287382280224243016469303211063259720016986112000000000000 | |
80658175170943878571660636856403766975289505440883277824000000000000 | |
4274883284060025564298013753389399649690343788366813724672000000000000 | |
230843697339241380472092742683027581083278564571807941132288000000000000 | |
12696403353658275925965100847566516959580321051449436762275840000000000000 | |
710998587804863451854045647463724949736497978881168458687447040000000000000 | |
40526919504877216755680601905432322134980384796226602145184481280000000000000 | |
2350561331282878571829474910515074683828862318181142924420699914240000000000000 | |
138683118545689835737939019720389406345902876772687432540821294940160000000000000 | |
8320987112741390144276341183223364380754172606361245952449277696409600000000000000 | |
507580213877224798800856812176625227226004528988036003099405939480985600000000000000 | |
31469973260387937525653122354950764088012280797258232192163168247821107200000000000000 | |
1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000 | |
126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000 | |
8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000 | |
544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000 | |
36471110918188685288249859096605464427167635314049524593701628500267962436943872000000000000000 | |
2480035542436830599600990418569171581047399201355367672371710738018221445712183296000000000000000 | |
171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000 | |
11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000 | |
850478588567862317521167644239926010288584608120796235886430763388588680378079017697280000000000000000 | |
61234458376886086861524070385274672740778091784697328983823014963978384987221689274204160000000000000000 | |
4470115461512684340891257138125051110076800700282905015819080092370422104067183317016903680000000000000000 | |
330788544151938641225953028221253782145683251820934971170611926835411235700971565459250872320000000000000000 | |
24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424000000000000000000 | |
1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224000000000000000000 | |
145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248000000000000000000 | |
11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344000000000000000000 | |
894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000 | |
71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000 | |
5797126020747367985879734231578109105412357244731625958745865049716390179693892056256184534249745940480000000000000000000 | |
475364333701284174842138206989404946643813294067993328617160934076743994734899148613007131808479167119360000000000000000000 | |
39455239697206586511897471180120610571436503407643446275224357528369751562996629334879591940103770870906880000000000000000000 | |
3314240134565353266999387579130131288000666286242049487118846032383059131291716864129885722968716753156177920000000000000000000 | |
281710411438055027694947944226061159480056634330574206405101912752560026159795933451040286452340924018275123200000000000000000000 | |
24227095383672732381765523203441259715284870552429381750838764496720162249742450276789464634901319465571660595200000000000000000000 | |
2107757298379527717213600518699389595229783738061356212322972511214654115727593174080683423236414793504734471782400000000000000000000 | |
185482642257398439114796845645546284380220968949399346684421580986889562184028199319100141244804501828416633516851200000000000000000000 | |
16507955160908461081216919262453619309839666236496541854913520707833171034378509739399912570787600662729080382999756800000000000000000000 | |
1485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112000000000000000000000 | |
135200152767840296255166568759495142147586866476906677791741734597153670771559994765685283954750449427751168336768008192000000000000000000000 | |
12438414054641307255475324325873553077577991715875414356840239582938137710983519518443046123837041347353107486982656753664000000000000000000000 | |
1156772507081641574759205162306240436214753229576413535186142281213246807121467315215203289516844845303838996289387078090752000000000000000000000 | |
108736615665674308027365285256786601004186803580182872307497374434045199869417927630229109214583415458560865651202385340530688000000000000000000000 | |
10329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000 | |
991677934870949689209571401541893801158183648651267795444376054838492222809091499987689476037000748982075094738965754305639874560000000000000000000000 | |
96192759682482119853328425949563698712343813919172976158104477319333745612481875498805879175589072651261284189679678167647067832320000000000000000000000 | |
9426890448883247745626185743057242473809693764078951663494238777294707070023223798882976159207729119823605850588608460429412647567360000000000000000000000 | |
933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections; | |
using System.Collections.Generic; | |
using System.Collections.Concurrent; | |
using System.Linq; | |
using System.Text; | |
using System.Threading; | |
using System.Threading.Tasks; | |
using System.Numerics; | |
namespace curry { | |
a public static class Y { | |
public delegate T2 Rec<T1, T2>(Rec<T1, T2> f, T1 x); | |
public delegate Func<T1, T2> Rec2<T1, T2>(Rec2<T1, T2> f); | |
public static Func<T, T> Fix<T>(this Rec<T, T> f) { | |
return x => f(f, x); | |
} | |
public static Func<T1, T2> Fix<T1, T2>(this Rec<T1, T2> f) { | |
return x => f(f, x); | |
} | |
public static Func<T, T> Fix<T>(Func<Func<T, T>, Func<T, T>> f) { | |
return ((Rec2<T, T>)(g => g(g)))(h => x => f(h(h))(x)); | |
} | |
public static Func<T1, T2> Fix<T1, T2>(Func<Func<T1, T2>, Func<T1, T2>> f) { | |
return ((Rec2<T1, T2>)(g => g(g)))(h => x => f(h(h))(x)); | |
} | |
public static Func<T2> Partial<T1, T2>(this Func<T1, T2> f, T1 arg) { | |
return () => f(arg); | |
} | |
public static Func<T2, T3> Partial<T1, T2, T3>(this Func<T1, T2, T3> f, T1 arg) { | |
return x => f.Partial(arg)(x); | |
} | |
//public static Func<T2, T3> Partial<T1, T2, T3>(this Func<T1, T2, T3> f, T1 arg) { | |
// return | |
//return ((Func<T1, Func<T2, T3>>)(x => (Func<T2, T3>)(y => f(x, y))))(arg); | |
//} | |
//public static Func<T2, T3, T4> Partial<T1, T2, T3, T4>(this Func<T1, T2, T3, T4> f, T1 arg) { | |
// return x => f.Partial<T2, T3, T4>(x); | |
//} | |
} | |
public class NodeThing<T> { | |
public T Value; | |
public NodeThing() { } | |
public NodeThing(T value) { | |
Value = value; | |
} | |
public static implicit operator NodeThing<T>(T x) { | |
return new NodeThing<T>(x); | |
} | |
public static explicit operator T(NodeThing<T> x) { | |
return x.Value; | |
} | |
} | |
class Test1 { | |
public void Run(int max) { | |
ParallelEnumerable.Range(1, max) | |
.AsOrdered() | |
.SelectMany( | |
x => Enumerable.Range(1, max), | |
(x, y) => x * y | |
) | |
.Select((x, count) => string.Concat(x, count < Math.Pow(max, 2) - 1 ? ", " : string.Empty)) | |
.ForAll(Console.Write); | |
} | |
} | |
class Test2 { | |
public void Run() { | |
Console.WriteLine(string.Join(" ", Environment.GetEnvironmentVariables() | |
.Cast<DictionaryEntry>() | |
.SelectMany(x => new[] { "setenv", x.Key, x.Value, ";" }) | |
)); | |
class Test3 { | |
public void Run() { | |
var myRandom = new Random(); | |
var myQueue = new ConcurrentQueue<string>( | |
ParallelEnumerable.Range(0, 100) | |
.AsOrdered() | |
.Select(x => { | |
Thread.Sleep(myRandom.Next(5)); | |
return Y.Fix<BigInteger>( | |
f => n => n == 0 ? 1 : n * f(n - 1) | |
)((BigInteger)x).ToString(); | |
})); | |
myQueue.AsParallel().AsOrdered().ForAll(Console.WriteLine); | |
//Console.WriteLine(String.Join("\n", myQueue)); | |
} | |
} | |
class Test4 { | |
public void Run() { | |
Console.WriteLine(string.Join(", ", testFun(new List<NodeThing<int>> { 1, 2, 3, 4, 5 }))); | |
} | |
IEnumerable<int> testFun(IList<NodeThing<int>> x) { | |
return x.Select((n, idx) => idx < x.Count - 1 ? x[idx + 1].Value = n.Value * 2 : n.Value); | |
} | |
} | |
class Program { | |
static void Main() { | |
new Test3().Run(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment