Do you like “simple” solution just like I do?
#region debug
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
if (e.Key == Key.A && Keyboard.IsKeyDown(Key.LeftAlt) && Keyboard.IsKeyDown(Key.LeftCtrl))
{
if (Context.DeveloperPinchEnabled)
{
.DeveloperPinchEnabled = false;
Context}
else
{
var w = new EnterAdvancedModeWindow();
var result = w.ShowDialog();
if (result.GetValueOrDefault())
{
if (w.CodeBox.Text == GenerateTodaysPasscode())
.DeveloperPinchEnabled = true;
Context}
}
}
base.OnPreviewKeyDown(e);
}
static string GenerateTodaysPasscode()
{
var d = DateTime.Now;
var x = d.Month * 1000000 + d.Day * 10000 + d.Year;
return LargestPrimeFactor(x).ToString();
}
static int LargestPrimeFactor(int x)
{
ComputePrimesUpTo(x);
return _primes.Where(p => x % p == 0).Max();
}
static List<int> _primes = new List<int>() { 2, 3, 5, 7, 11, 13, 17, 19 };
static void ComputePrimesUpTo(int n)
{
var p = _primes[_primes.Count - 1] + 2;
while (_primes[_primes.Count - 1] < n)
{
if (IsPrime(p))
.Add(p);
_primes
+= 2;
p }
}
static bool IsPrime(int p)
{
for (int k = 0; _primes[k] * _primes[k] <= p; k++)
{
if (p % _primes[k] == 0)
return false;
}
return true;
}
#endregion