-
-
Save Leanny/dfde4f885631c51318c7f145e45a7e83 to your computer and use it in GitHub Desktop.
Turnip Bruteforcer GPU
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 Alea; | |
using Alea.Parallel; | |
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
namespace Stonks | |
{ | |
class Program | |
{ | |
[GpuManaged] | |
public static float FromFloatSafe(uint fb) | |
{ | |
int sign = (int)((fb >> 31) & 1); | |
int exponent = (int)((fb >> 23) & 0xFF); | |
int mantissa = (int)(fb & 0x7FFFFF); | |
float fMantissa; | |
float fSign = sign == 0 ? 1.0f : -1.0f; | |
if (exponent != 0) | |
{ | |
exponent -= 127; | |
fMantissa = 1.0f + (mantissa / (float)0x800000); | |
} | |
else | |
{ | |
if (mantissa != 0) | |
{ | |
// denormal | |
exponent -= 126; | |
fMantissa = 1.0f / (float)0x800000; | |
} | |
else | |
{ | |
// +0 and -0 cases | |
fMantissa = 0; | |
} | |
} | |
float fExponent = (float)DeviceFunction.Pow(2.0, exponent); | |
float ret = fSign * fMantissa * fExponent; | |
return ret; | |
} | |
[GpuManaged] | |
static void Main(string[] args) | |
{ | |
var gpu = Gpu.Get(0); | |
const int oldBasePrice = 102; | |
const int whatPattern = 0; | |
const int currentPattern = 3; | |
int[] knownVals = new int[] { 102, 0, 79, 75, 71, 68, 64, 129, 138, 145, 164, 151, 71, 66 }; // sunday am, pm, monday am, pm, etc | |
long[] res = { 0, 0 }; | |
for (int advances = 0; res[1] == 0; advances++) | |
{ | |
Console.WriteLine(advances); | |
{ | |
gpu.LongFor(0, (long)uint.MaxValue + 1, seed => | |
{ | |
if (res[1] == 0) | |
{ | |
for (int q = 0; q < 1; q++) | |
{ | |
bool breakNext = false; | |
uint val; | |
float fval, randfloat; | |
uint id0, id1, id2, id3; | |
uint v1, v2, v3, randint; | |
id0 = 0x6C078965 * ((uint)seed ^ ((uint)seed >> 30)) + 1; | |
id1 = 0x6C078965 * ((uint)id0 ^ ((uint)id0 >> 30)) + 2; | |
id2 = 0x6C078965 * ((uint)id1 ^ ((uint)id1 >> 30)) + 3; | |
id3 = 0x6C078965 * ((uint)id2 ^ ((uint)id2 >> 30)) + 4; | |
for (int i = 0; i < advances; i++) | |
{ | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
} | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
int basePrice = (int)((((ulong)randint * (ulong)(110 - 90 + 1)) >> 32) + 90); | |
if (basePrice != oldBasePrice) break; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
int chance = (int)((((ulong)randint * (ulong)(99 - 0 + 1)) >> 32) + 0); | |
int nextPattern = 0; | |
if (whatPattern == 0) | |
{ | |
if (chance < 20) | |
{ | |
nextPattern = 0; | |
} | |
else if (chance < 50) | |
{ | |
nextPattern = 1; | |
} | |
else if (chance < 65) | |
{ | |
nextPattern = 2; | |
} | |
else | |
{ | |
nextPattern = 3; | |
} | |
} | |
else if (whatPattern == 1) { | |
if (chance < 50) | |
{ | |
nextPattern = 0; | |
} | |
else if (chance < 55) | |
{ | |
nextPattern = 1; | |
} | |
else if (chance < 75) | |
{ | |
nextPattern = 2; | |
} | |
else | |
{ | |
nextPattern = 3; | |
} | |
} else if (whatPattern == 2) { | |
if (chance < 25) | |
{ | |
nextPattern = 0; | |
} | |
else if (chance < 70) | |
{ | |
nextPattern = 1; | |
} | |
else if (chance < 75) | |
{ | |
nextPattern = 2; | |
} | |
else | |
{ | |
nextPattern = 3; | |
} | |
} else if (whatPattern == 3) { | |
if (chance < 45) | |
{ | |
nextPattern = 0; | |
} | |
else if (chance < 70) | |
{ | |
nextPattern = 1; | |
} | |
else if (chance < 85) | |
{ | |
nextPattern = 2; | |
} | |
else | |
{ | |
nextPattern = 3; | |
} | |
} | |
if (nextPattern != currentPattern) | |
{ | |
break; | |
} | |
int work; | |
int decPhaseLen1, decPhaseLen2, peakStart; | |
int hiPhaseLen1, hiPhaseLen2and3, hiPhaseLen3; | |
float rate; | |
switch (currentPattern) | |
{ | |
case 0: | |
// PATTERN 0: high, decreasing, high, decreasing, high | |
work = 2; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
decPhaseLen1 = (randint & 0x80000000) > 0 ? 3 : 2; | |
decPhaseLen2 = 5 - decPhaseLen1; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
hiPhaseLen1 = (int)((((ulong)randint * (ulong)(6 - 0 + 1)) >> 32) + 0); | |
hiPhaseLen2and3 = 7 - hiPhaseLen1; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
hiPhaseLen3 = (int)((((ulong)randint * (ulong)(hiPhaseLen2and3 - 1 - 0 + 1)) >> 32) + 0); | |
// high phase 1 | |
for (int i = 0; i < hiPhaseLen1; i++) | |
{ | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (1.4f - 0.9f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
} | |
if (breakNext) break; | |
// decreasing phase 1 | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.8f + ((fval - 1.0f) * (0.6f - 0.8f)); | |
rate = randfloat; | |
for (int i = 0; i < decPhaseLen1; i++) | |
{ | |
if ((int)(rate * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
rate -= 0.04f; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0 + ((fval - 1.0f) * (0.06f - 0)); | |
rate -= randfloat; | |
} | |
if (breakNext) break; | |
// high phase 2 | |
for (int i = 0; i < (hiPhaseLen2and3 - hiPhaseLen3); i++) | |
{ | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (1.4f - 0.9f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
} | |
if (breakNext) break; | |
// decreasing phase 2 | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.8f + ((fval - 1.0f) * (0.6f - 0.8f)); | |
rate = randfloat; | |
for (int i = 0; i < decPhaseLen2; i++) | |
{ | |
if ((int)(rate * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
rate -= 0.04f; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0f + ((fval - 1.0f) * (0.06f - 0f)); | |
rate -= randfloat; | |
} | |
if (breakNext) break; | |
// high phase 3 | |
for (int i = 0; i < hiPhaseLen3; i++) | |
{ | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (1.4f - 0.9f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
} | |
break; | |
case 1: | |
// PATTERN 1: decreasing middle, high spike, random low | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
peakStart = (int)((((ulong)randint * (ulong)(9 - 3 + 1)) >> 32) + 3); | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (0.85f - 0.9f)); | |
rate = randfloat; | |
for (work = 2; work < peakStart; work++) | |
{ | |
if ((int)(rate * basePrice + 0.99f) != knownVals[work]) { breakNext = true; break; } | |
rate -= 0.03f; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0 + ((fval - 1.0f) * (0.02f - 0)); | |
rate -= randfloat; | |
} | |
if (breakNext) break; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (1.4f - 0.9f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 1.4f + ((fval - 1.0f) * (2.0f - 1.4f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 2.0f + ((fval - 1.0f) * (6.0f - 2.0f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 1.4f + ((fval - 1.0f) * (2.0f - 1.4f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (1.4f - 0.9f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
for (; work < 14; work++) | |
{ | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.4f + ((fval - 1.0f) * (0.9f - 0.4f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work]) { breakNext = true; break; } | |
} | |
break; | |
case 2: | |
// PATTERN 2: consistently decreasing | |
rate = 0.9f; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0 + ((fval - 1.0f) * (0.05f - 0)); | |
rate -= randfloat; | |
for (work = 2; work < 14; work++) | |
{ | |
if ((int)(rate * basePrice + 0.99f) != knownVals[work]) { breakNext = true; break; } | |
rate -= 0.03f; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0 + ((fval - 1.0f) * (0.02f - 0)); | |
rate -= randfloat; | |
} | |
break; | |
case 3: | |
// PATTERN 3: decreasing, spike, decreasing | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
peakStart = (int)((((ulong)randint * (ulong)(9 - 2 + 1)) >> 32) + 2); | |
// decreasing phase before the peak | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (0.4f - 0.9f)); | |
rate = randfloat; | |
for (work = 2; work < peakStart; work++) | |
{ | |
if ((int)(rate * basePrice + 0.99f) != knownVals[work]) { breakNext = true; break; } | |
rate -= 0.03f; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0 + ((fval - 1.0f) * (0.02f - 0)); | |
rate -= randfloat; | |
} | |
if (breakNext) break; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (1.4f - 0.9f)); | |
if ((int)(randfloat * (float)basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (1.4f - 0.9f)); | |
if ((int)(randfloat * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 1.4f + ((fval - 1.0f) * (2.0f - 1.4f)); | |
rate = randfloat; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 1.4f + ((fval - 1.0f) * (rate) * basePrice - 1.4f); | |
if ((int)(0.99f + randfloat - 1) != knownVals[work++]) { breakNext = true; break; } | |
if ((int)(rate * basePrice + 0.99f) != knownVals[work++]) { breakNext = true; break; } | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 1.4f + ((fval - 1.0f) * (rate) * basePrice - 1.4f); | |
if ((int)(0.99f + randfloat - 1) != knownVals[work++]) { breakNext = true; break; } | |
// decreasing phase after the peak | |
if (work < 14) | |
{ | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0.9f + ((fval - 1.0f) * (0.4f - 0.9f)); | |
rate = randfloat; | |
for (; work < 14; work++) | |
{ | |
if ((int)(rate * basePrice + 0.99f) != knownVals[work]) { breakNext = true; break; } | |
rate -= 0.03f; | |
v1 = id0 ^ (id0 << 11); | |
id0 = id1; | |
v2 = id3; | |
v3 = v1 ^ (v1 >> 8) ^ v2 ^ (v2 >> 19); | |
id1 = id2; | |
id2 = v2; | |
id3 = v3; | |
randint = v3; | |
val = 0x3F800000 | (randint >> 9); | |
fval = FromFloatSafe(val); | |
randfloat = 0 + ((fval - 1.0f) * (0.02f - 0)); | |
rate -= randfloat; | |
} | |
if (breakNext) break; | |
} | |
break; | |
} | |
if (!breakNext) | |
{ | |
res[0] = seed; | |
res[1] = 1; | |
} | |
} | |
} | |
} | |
); gpu.Synchronize(); | |
if (res[1] == 1) | |
{ | |
Console.WriteLine(res[0]); | |
Console.WriteLine(advances); | |
return; | |
} | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment