diff --git a/Qwilight/Compiler/BaseCompiler.cs b/Qwilight/Compiler/BaseCompiler.cs index 56911d8..1a1c739 100644 --- a/Qwilight/Compiler/BaseCompiler.cs +++ b/Qwilight/Compiler/BaseCompiler.cs @@ -430,7 +430,6 @@ else if (ModeComponent.InputFavorMode.Fill4 <= inputFavorMode && inputFavorMode <= ModeComponent.InputFavorMode.Fill48_4) { var filledNotes = new List(); - var fillLambda = Component.FillLambdas[(int)levyingInputMode, (int)inputFavorMode]; foreach (var note in Notes.ToArray()) { if (note.HasInput) @@ -442,15 +441,14 @@ else { var levyingInput = note.LevyingInput; - var filledLambda0 = fillLambda(levyingInput, 0.0); - var filledLambda1 = fillLambda(levyingInput, 1.0); - var filledInput0 = (int)Math.Ceiling(filledLambda0); - var filledInput1 = (int)Math.Floor(filledLambda1); + var filledFloatInput0 = GetFilledInput(levyingInput, 0.0); + var filledFloatInput1 = GetFilledInput(levyingInput, 1.0); + var filledInput0 = (int)Math.Ceiling(filledFloatInput0); + var filledInput1 = (int)Math.Floor(filledFloatInput1); - note.LevyingInput = filledInput0; - - if (filledLambda1 - filledLambda0 >= 1.0) + if (filledFloatInput1 - filledFloatInput0 >= 1.0) { + note.LevyingInput = filledInput0; for (var filledInput = filledInput0 + 1; filledInput <= filledInput1; ++filledInput) { Notes.Add(note switch @@ -465,7 +463,7 @@ } else { - note.LevyingInput = (int)Math.Round(fillLambda(levyingInput, 0.5)); + note.LevyingInput = (int)Math.Round(GetFilledInput(levyingInput, (double)(levyingInput - Component.DefaultInputs[(int)levyingInputMode].First()) / (Component.DefaultInputs[(int)levyingInputMode].Last() - Component.DefaultInputs[(int)levyingInputMode].First()))); if (filledNotes.Any(filledNote => filledNote.LevyingInput == note.LevyingInput && filledNote.IsCollided(note))) { WipeNote(note); @@ -475,11 +473,19 @@ filledNotes.Add(note); } } + + double GetFilledInput(int input, double random) + { + var a = (double)(Component.DefaultInputCounts[(int)Component.GetInputMode(inputFavorMode)] - 1) / Component.DefaultInputCounts[(int)levyingInputMode]; + return a * (input - Component.DefaultInputs[(int)levyingInputMode].First()) + Component.DefaultInputs[(int)Component.GetInputMode(inputFavorMode)].First() + a * random; + } } } } } + InputMode = Component.GetInputMode(inputFavorMode); + void WipeNote(BaseNote note) { Notes.Remove(note); @@ -488,67 +494,10 @@ defaultComputer.WaitAudioNoteMap.NewValue(note.Wait, audioNote); } } - - switch (inputFavorMode) - { - case ModeComponent.InputFavorMode._4: - case ModeComponent.InputFavorMode.Fill4: - InputMode = Component.InputMode._4; - break; - case ModeComponent.InputFavorMode._5: - case ModeComponent.InputFavorMode.Fill5: - InputMode = Component.InputMode._5; - break; - case ModeComponent.InputFavorMode._6: - case ModeComponent.InputFavorMode.Fill6: - InputMode = Component.InputMode._6; - break; - case ModeComponent.InputFavorMode._7: - case ModeComponent.InputFavorMode.Fill7: - InputMode = Component.InputMode._7; - break; - case ModeComponent.InputFavorMode._8: - case ModeComponent.InputFavorMode.Fill8: - InputMode = Component.InputMode._8; - break; - case ModeComponent.InputFavorMode._9: - case ModeComponent.InputFavorMode.Fill9: - InputMode = Component.InputMode._9; - break; - case ModeComponent.InputFavorMode._10: - case ModeComponent.InputFavorMode.Fill10: - InputMode = Component.InputMode._10; - break; - case ModeComponent.InputFavorMode._5_1: - case ModeComponent.InputFavorMode.Fill5_1: - InputMode = Component.InputMode._5_1; - break; - case ModeComponent.InputFavorMode._7_1: - case ModeComponent.InputFavorMode.Fill7_1: - InputMode = Component.InputMode._7_1; - break; - case ModeComponent.InputFavorMode._10_2: - case ModeComponent.InputFavorMode.Fill10_2: - InputMode = Component.InputMode._10_2; - break; - case ModeComponent.InputFavorMode._14_2: - case ModeComponent.InputFavorMode.Fill14_2: - InputMode = Component.InputMode._14_2; - break; - case ModeComponent.InputFavorMode._24_2: - case ModeComponent.InputFavorMode.Fill24_2: - InputMode = Component.InputMode._24_2; - break; - case ModeComponent.InputFavorMode._48_4: - case ModeComponent.InputFavorMode.Fill48_4: - InputMode = Component.InputMode._48_4; - break; - } } - var autoableInputs = Component.AutoableInputs[(int)InputMode]; + var autoableInputs = Component.AutoableInputs[(int)InputMode]; var inputCount = Component.InputCounts[(int)InputMode]; - var autoableInputCount = Component.AutoableInputCounts[(int)InputMode]; var isCounterWave = defaultComputer.ModeComponentValue.WaveModeValue == ModeComponent.WaveMode.Counter; foreach (var (wait, bpm) in WaitBPMMap) @@ -612,7 +561,7 @@ } var inputSaltComputer = new Random(defaultComputer.ModeComponentValue.Salt); var inputSalts = new int[inputCount + 1]; - for (var i = inputCount; i >= 0; --i) + for (var i = inputSalts.Length - 1; i >= 0; --i) { inputSalts[i] = inputSaltComputer.Next(); } @@ -681,14 +630,7 @@ var input = inputNote.LevyingInput; if (!autoableInputs.Contains(input)) { - inputNote.LevyingInput = autoableInputCount switch - { - 0 => inputCount + 1 - input, - 1 => inputCount + 2 - input, - 2 => inputCount + 1 - input, - 4 => inputCount + 1 - input, - _ => default - }; + inputNote.LevyingInput = 1 + inputCount + ((Component.DefaultInputs[(int)InputMode].First() - Component.Inputs[(int)InputMode].First()) - (Component.Inputs[(int)InputMode].Last() - Component.DefaultInputs[(int)InputMode].Last())) - input; } } break; @@ -702,22 +644,8 @@ var input = inputNote.LevyingInput; if (!autoableInputs.Contains(input)) { - var levyingInput = autoableInputCount switch - { - 0 => 1, - 1 => 2, - 2 => 2, - 4 => 3, - _ => default - }; - var lastInput = autoableInputCount switch - { - 0 => inputCount + 1, - 1 => inputCount + 1, - 2 => inputCount, - 4 => inputCount - 1, - _ => default - }; + var levyingInput = Component.DefaultInputs[(int)InputMode].First(); + var lastInput = levyingInput + Component.DefaultInputCounts[(int)InputMode]; var wait = inputNote.Wait; var longWait = inputNote.LongWait; var levyingSaltInput = inputNote.Salt % (lastInput - levyingInput) + levyingInput; @@ -749,23 +677,10 @@ var input = inputNote.LevyingInput; if (!autoableInputs.Contains(input)) { - var inputCountLength = inputCount - autoableInputCount; - var saltedInputs = new int[inputCountLength]; - for (var i = inputCountLength - 1; i >= 0; --i) + var saltedInputs = new int[Component.DefaultInputCounts[(int)InputMode]]; + for (var i = saltedInputs.Length - 1; i >= 0; --i) { - switch (autoableInputCount) - { - case 0: - saltedInputs[i] = i + 1; - break; - case 1: - case 2: - saltedInputs[i] = i + 2; - break; - case 4: - saltedInputs[i] = i + 3; - break; - } + saltedInputs[i] = i + Component.DefaultInputs[(int)InputMode].First(); } saltedInputs = saltedInputs.Except(saltedNotes.Where(saltedNote => saltedNote.IsCollided(inputNote)).Select(saltedNote => saltedNote.LevyingInput)).ToArray(); noteSaltComputer.Shuffle(saltedInputs); @@ -780,36 +695,24 @@ // 라인 랜덤 void SaltInput(BaseNote[] notes) { - var inputCountLength = inputCount - autoableInputCount; - var saltedInputs = new int[inputCountLength]; - for (var i = inputCountLength - 1; i >= 0; --i) + var defaultInputCount = Component.DefaultInputCounts[(int)InputMode]; + var saltedInputs = new int[defaultInputCount]; + for (var i = defaultInputCount - 1; i >= 0; --i) { - switch (autoableInputCount) - { - case 0: - saltedInputs[i] = i + 1; - break; - case 1: - case 2: - saltedInputs[i] = i + 2; - break; - case 4: - saltedInputs[i] = i + 3; - break; - } + saltedInputs[i] = i + Component.DefaultInputs[(int)InputMode].First(); } switch (defaultComputer.NoteSaltModeDate) { case Component.NoteSaltModeDate._1_14_27: if (isHalfInputSalt) { - var endInputCountHalfLength = (int)Math.Ceiling(inputCountLength / 2.0); - for (var i = inputCountLength - 1; i > endInputCountHalfLength; --i) + var endInputCountHalfLength = (int)Math.Ceiling(defaultInputCount / 2.0); + for (var i = defaultInputCount - 1; i > endInputCountHalfLength; --i) { - var j = endInputCountHalfLength + noteSaltComputer.Next(inputCountLength - endInputCountHalfLength); + var j = endInputCountHalfLength + noteSaltComputer.Next(defaultInputCount - endInputCountHalfLength); (saltedInputs[i], saltedInputs[j]) = (saltedInputs[j], saltedInputs[i]); } - var levyingInputCountHalfLength = inputCountLength / 2; + var levyingInputCountHalfLength = defaultInputCount / 2; for (var i = levyingInputCountHalfLength - 1; i > 0; --i) { var j = noteSaltComputer.Next(levyingInputCountHalfLength); @@ -818,9 +721,9 @@ } else { - for (var i = inputCountLength - 1; i > 0; --i) + for (var i = defaultInputCount - 1; i > 0; --i) { - var j = noteSaltComputer.Next(inputCountLength); + var j = noteSaltComputer.Next(defaultInputCount); (saltedInputs[i], saltedInputs[j]) = (saltedInputs[j], saltedInputs[i]); } } @@ -828,7 +731,7 @@ case Component.NoteSaltModeDate._1_6_11: if (isHalfInputSalt) { - var inputCountHalfLength = inputCountLength / 2; + var inputCountHalfLength = defaultInputCount / 2; var frontSaltedInputs = saltedInputs.Take(inputCountHalfLength).ToArray(); noteSaltComputer.Shuffle(frontSaltedInputs); var tailSaltedInputs = saltedInputs.TakeLast(inputCountHalfLength).ToArray(); @@ -846,14 +749,7 @@ var input = note.LevyingInput; if (!autoableInputs.Contains(input)) { - note.LevyingInput = autoableInputCount switch - { - 0 => saltedInputs[input - 1], - 1 => saltedInputs[input - 2], - 2 => saltedInputs[input - 2], - 4 => saltedInputs[input - 3], - _ => default - }; + note.LevyingInput = saltedInputs[input - Component.DefaultInputs[(int)InputMode].First()]; } } } @@ -995,7 +891,7 @@ var setNoteModeValue = defaultComputer.ModeComponentValue.SetNoteModeValue; if (setNoteModeValue == ModeComponent.SetNoteMode.Put || setNoteModeValue == ModeComponent.SetNoteMode.VoidPut) { - var voidPutInputs = Component.VoidPutInputs[(int)levyingInputMode, (int)InputMode]; + var inputsVoid = Enumerable.Range(1, inputCount).Where(i => !Notes.Any(note => note.LevyingInput == i)).ToArray(); var putNoteSet = defaultComputer.ModeComponentValue.PutNoteSet; var putNoteSetMillis = defaultComputer.ModeComponentValue.PutNoteSetMillis; foreach (var (wait, audioNotes) in defaultComputer.WaitAudioNoteMap) @@ -1007,21 +903,10 @@ switch (setNoteModeValue) { case ModeComponent.SetNoteMode.Put: - switch (autoableInputCount) - { - case 0: - NewNote(audioNote, GetInputs(1, inputCount)); - break; - case 1: - NewNote(audioNote, GetInputs(2, inputCount)); - break; - case 2: - NewNote(audioNote, GetInputs(2, inputCount - 1)); - break; - } + NewNote(audioNote, GetInputs(Component.DefaultInputs[(int)InputMode].First(), Component.DefaultInputs[(int)InputMode].Last())); break; case ModeComponent.SetNoteMode.VoidPut: - NewNote(audioNote, voidPutInputs); + NewNote(audioNote, inputsVoid); break; } int[] GetInputs(int levyingInput, int lastInput) diff --git a/Qwilight/Component.cs b/Qwilight/Component.cs index 5ad2f3d..94880df 100644 --- a/Qwilight/Component.cs +++ b/Qwilight/Component.cs @@ -111,20 +111,69 @@ public static readonly double[,] StandMap = new double[2, 6]; public static readonly double[,] PointMap = new double[2, 6]; public static readonly double[,,] HitPointsMap = new double[4, 8, 6]; + public static readonly int[][] Inputs = new int[17][]; public static readonly int[] InputCounts = new int[17]; + public static readonly int[][] DefaultInputs = new int[17][]; + public static readonly int[] DefaultInputCounts = new int[17]; public static readonly int[][] AutoableInputs = new int[17][]; public static readonly int[] AutoableInputCounts = new int[17]; public static readonly int[,][] InputMappingValues = new int[4, 17][]; public static readonly int[,][] BasePaintMap = new int[4, 17][]; public static readonly int[,][] FavorInputs = new int[17, 17][]; - public static readonly Func[,] FillLambdas = new Func[17, 30]; - public static readonly int[,][] VoidPutInputs = new int[17, 17][]; public static readonly bool[][] IsIn2P = new bool[17][]; - public static readonly int[] Input1PCounts = new int[17]; + public static readonly int[] InputCounts1P = new int[17]; public static readonly bool[] Has2P = new bool[17]; public static readonly int[,,][] LimiterCenterMap = new int[4, 17, 2][]; public static readonly bool[][] Limiter57Map = new bool[17][]; + public static InputMode GetInputMode(ModeComponent.InputFavorMode inputFavorMode) + { + switch (inputFavorMode) + { + case ModeComponent.InputFavorMode._4: + case ModeComponent.InputFavorMode.Fill4: + return InputMode._4; + case ModeComponent.InputFavorMode._5: + case ModeComponent.InputFavorMode.Fill5: + return InputMode._5; + case ModeComponent.InputFavorMode._6: + case ModeComponent.InputFavorMode.Fill6: + return InputMode._6; + case ModeComponent.InputFavorMode._7: + case ModeComponent.InputFavorMode.Fill7: + return InputMode._7; + case ModeComponent.InputFavorMode._8: + case ModeComponent.InputFavorMode.Fill8: + return InputMode._8; + case ModeComponent.InputFavorMode._9: + case ModeComponent.InputFavorMode.Fill9: + return InputMode._9; + case ModeComponent.InputFavorMode._10: + case ModeComponent.InputFavorMode.Fill10: + return InputMode._10; + case ModeComponent.InputFavorMode._5_1: + case ModeComponent.InputFavorMode.Fill5_1: + return InputMode._5_1; + case ModeComponent.InputFavorMode._7_1: + case ModeComponent.InputFavorMode.Fill7_1: + return InputMode._7_1; + case ModeComponent.InputFavorMode._10_2: + case ModeComponent.InputFavorMode.Fill10_2: + return InputMode._10_2; + case ModeComponent.InputFavorMode._14_2: + case ModeComponent.InputFavorMode.Fill14_2: + return InputMode._14_2; + case ModeComponent.InputFavorMode._24_2: + case ModeComponent.InputFavorMode.Fill24_2: + return InputMode._24_2; + case ModeComponent.InputFavorMode._48_4: + case ModeComponent.InputFavorMode.Fill48_4: + return InputMode._48_4; + default: + throw new ArgumentException(inputFavorMode.ToString()); + } + } + static Component() { #region v1.0.0 @@ -492,19 +541,42 @@ StandMap[(int)StandMapDate._1_14_118, (int)Judged.Lowest] = 0.0; #endregion - InputCounts[(int)InputMode._4] = 4; - InputCounts[(int)InputMode._5] = 5; - InputCounts[(int)InputMode._6] = 6; - InputCounts[(int)InputMode._7] = 7; - InputCounts[(int)InputMode._8] = 8; - InputCounts[(int)InputMode._9] = 9; - InputCounts[(int)InputMode._10] = 10; - InputCounts[(int)InputMode._5_1] = 6; - InputCounts[(int)InputMode._7_1] = 8; - InputCounts[(int)InputMode._10_2] = 12; - InputCounts[(int)InputMode._14_2] = 16; - InputCounts[(int)InputMode._24_2] = 26; - InputCounts[(int)InputMode._48_4] = 52; + Inputs[(int)InputMode._4] = [1, 2, 3, 4]; + Inputs[(int)InputMode._5] = [1, 2, 3, 4, 5]; + Inputs[(int)InputMode._6] = [1, 2, 3, 4, 5, 6]; + Inputs[(int)InputMode._7] = [1, 2, 3, 4, 5, 6, 7]; + Inputs[(int)InputMode._8] = [1, 2, 3, 4, 5, 6, 7, 8]; + Inputs[(int)InputMode._9] = [1, 2, 3, 4, 5, 6, 7, 8, 9]; + Inputs[(int)InputMode._10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + Inputs[(int)InputMode._5_1] = [1, 2, 3, 4, 5, 6]; + Inputs[(int)InputMode._7_1] = [1, 2, 3, 4, 5, 6, 7, 8]; + Inputs[(int)InputMode._10_2] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; + Inputs[(int)InputMode._14_2] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; + Inputs[(int)InputMode._24_2] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]; + Inputs[(int)InputMode._48_4] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52]; + + AutoableInputs[(int)InputMode._4] = Array.Empty(); + AutoableInputs[(int)InputMode._5] = Array.Empty(); + AutoableInputs[(int)InputMode._6] = Array.Empty(); + AutoableInputs[(int)InputMode._7] = Array.Empty(); + AutoableInputs[(int)InputMode._8] = Array.Empty(); + AutoableInputs[(int)InputMode._9] = Array.Empty(); + AutoableInputs[(int)InputMode._10] = Array.Empty(); + AutoableInputs[(int)InputMode._5_1] = [1]; + AutoableInputs[(int)InputMode._7_1] = [1]; + AutoableInputs[(int)InputMode._10_2] = [1, 12]; + AutoableInputs[(int)InputMode._14_2] = [1, 16]; + AutoableInputs[(int)InputMode._24_2] = [1, 26]; + AutoableInputs[(int)InputMode._48_4] = [1, 2, 51, 52]; + + for (var inputMode = (int)InputMode._4; inputMode <= (int)InputMode._48_4; ++inputMode) + { + DefaultInputs[inputMode] = Inputs[inputMode].Except(AutoableInputs[inputMode]).ToArray(); + + InputCounts[inputMode] = Inputs[inputMode].Length; + AutoableInputCounts[inputMode] = AutoableInputs[inputMode].Length; + DefaultInputCounts[inputMode] = DefaultInputs[inputMode].Length; + } InputMappingValues[(int)InputMapping.Mapping0, (int)InputMode._4] = [default, 1, 2, 3, 4]; InputMappingValues[(int)InputMapping.Mapping0, (int)InputMode._5] = [default, 1, 2, 3, 4, 5]; @@ -612,27 +684,6 @@ BasePaintMap[(int)InputMapping.Mapping3, (int)InputMode._24_2] = [default, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 1]; BasePaintMap[(int)InputMapping.Mapping3, (int)InputMode._48_4] = [default, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 51, 2, 1]; - AutoableInputs[(int)InputMode._4] = Array.Empty(); - AutoableInputs[(int)InputMode._5] = Array.Empty(); - AutoableInputs[(int)InputMode._6] = Array.Empty(); - AutoableInputs[(int)InputMode._7] = Array.Empty(); - AutoableInputs[(int)InputMode._8] = Array.Empty(); - AutoableInputs[(int)InputMode._9] = Array.Empty(); - AutoableInputs[(int)InputMode._10] = Array.Empty(); - AutoableInputs[(int)InputMode._5_1] = [1]; - AutoableInputs[(int)InputMode._7_1] = [1]; - AutoableInputs[(int)InputMode._10_2] = [1, 12]; - AutoableInputs[(int)InputMode._14_2] = [1, 16]; - AutoableInputs[(int)InputMode._24_2] = [1, 26]; - AutoableInputs[(int)InputMode._48_4] = [1, 2, 51, 52]; - - AutoableInputCounts[(int)InputMode._5_1] = 1; - AutoableInputCounts[(int)InputMode._7_1] = 1; - AutoableInputCounts[(int)InputMode._10_2] = 2; - AutoableInputCounts[(int)InputMode._14_2] = 2; - AutoableInputCounts[(int)InputMode._24_2] = 2; - AutoableInputCounts[(int)InputMode._48_4] = 4; - FavorInputs[(int)InputMode._4, (int)ModeComponent.InputFavorMode._4] = [default, 1, 2, 3, 4]; FavorInputs[(int)InputMode._4, (int)ModeComponent.InputFavorMode._5] = [default, 1, 2, 3, 4]; FavorInputs[(int)InputMode._4, (int)ModeComponent.InputFavorMode._6] = [default, 1, 2, 3, 4]; @@ -815,370 +866,6 @@ FavorInputs[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode._24_2] = [default, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26]; FavorInputs[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode._48_4] = [default, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52]; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 4.0 * (input - 1) + 1) + 3.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 4.0 * (input - 1) + 1) + 4.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 4.0 * (input - 1) + 1) + 5.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 4.0 * (input - 1) + 1) + 6.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 4.0 * (input - 1) + 1) + 7.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 4.0 * (input - 1) + 1) + 8.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 4.0 * (input - 1) + 1) + 9.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 4.0 * (input - 1) + 2) + 4.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 4.0 * (input - 1) + 2) + 6.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 4.0 * (input - 1) + 2) + 9.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 4.0 * (input - 1) + 2) + 13.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 4.0 * (input - 1) + 2) + 23.0 / 4.0 * random; - FillLambdas[(int)InputMode._4, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 4.0 * (input - 1) + 3) + 47.0 / 4.0 * random; - - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 5.0 * (input - 1) + 1) + 3.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 5.0 * (input - 1) + 1) + 4.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 5.0 * (input - 1) + 1) + 5.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 5.0 * (input - 1) + 1) + 6.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 5.0 * (input - 1) + 1) + 7.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 5.0 * (input - 1) + 1) + 8.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 5.0 * (input - 1) + 1) + 9.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 5.0 * (input - 1) + 2) + 4.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 5.0 * (input - 1) + 2) + 6.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 5.0 * (input - 1) + 2) + 9.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 5.0 * (input - 1) + 2) + 13.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 5.0 * (input - 1) + 2) + 23.0 / 5.0 * random; - FillLambdas[(int)InputMode._5, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 5.0 * (input - 1) + 3) + 47.0 / 5.0 * random; - - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 6.0 * (input - 1) + 1) + 3.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 6.0 * (input - 1) + 1) + 4.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 6.0 * (input - 1) + 1) + 5.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 6.0 * (input - 1) + 1) + 6.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 6.0 * (input - 1) + 1) + 7.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 6.0 * (input - 1) + 1) + 8.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 6.0 * (input - 1) + 1) + 9.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 6.0 * (input - 1) + 2) + 4.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 6.0 * (input - 1) + 2) + 6.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 6.0 * (input - 1) + 2) + 9.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 6.0 * (input - 1) + 2) + 13.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 6.0 * (input - 1) + 2) + 23.0 / 6.0 * random; - FillLambdas[(int)InputMode._6, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 6.0 * (input - 1) + 3) + 47.0 / 6.0 * random; - - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 7.0 * (input - 1) + 1) + 3.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 7.0 * (input - 1) + 1) + 4.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 7.0 * (input - 1) + 1) + 5.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 7.0 * (input - 1) + 1) + 6.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 7.0 * (input - 1) + 1) + 7.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 7.0 * (input - 1) + 1) + 8.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 7.0 * (input - 1) + 1) + 9.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 7.0 * (input - 1) + 2) + 4.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 7.0 * (input - 1) + 2) + 6.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 7.0 * (input - 1) + 2) + 9.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 7.0 * (input - 1) + 2) + 13.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 7.0 * (input - 1) + 2) + 23.0 / 7.0 * random; - FillLambdas[(int)InputMode._7, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 7.0 * (input - 1) + 3) + 47.0 / 7.0 * random; - - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 8.0 * (input - 1) + 1) + 3.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 8.0 * (input - 1) + 1) + 4.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 8.0 * (input - 1) + 1) + 5.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 8.0 * (input - 1) + 1) + 6.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 8.0 * (input - 1) + 1) + 7.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 8.0 * (input - 1) + 1) + 8.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 8.0 * (input - 1) + 1) + 9.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 8.0 * (input - 1) + 2) + 4.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 8.0 * (input - 1) + 2) + 6.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 8.0 * (input - 1) + 2) + 9.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 8.0 * (input - 1) + 2) + 13.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 8.0 * (input - 1) + 2) + 23.0 / 8.0 * random; - FillLambdas[(int)InputMode._8, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 8.0 * (input - 1) + 3) + 47.0 / 8.0 * random; - - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 9.0 * (input - 1) + 1) + 3.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 9.0 * (input - 1) + 1) + 4.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 9.0 * (input - 1) + 1) + 5.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 9.0 * (input - 1) + 1) + 6.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 9.0 * (input - 1) + 1) + 7.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 9.0 * (input - 1) + 1) + 8.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 9.0 * (input - 1) + 1) + 9.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 9.0 * (input - 1) + 2) + 4.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 9.0 * (input - 1) + 2) + 6.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 9.0 * (input - 1) + 2) + 9.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 9.0 * (input - 1) + 2) + 13.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 9.0 * (input - 1) + 2) + 23.0 / 9.0 * random; - FillLambdas[(int)InputMode._9, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 9.0 * (input - 1) + 3) + 47.0 / 9.0 * random; - - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 10.0 * (input - 1) + 1) + 3.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 10.0 * (input - 1) + 1) + 4.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 10.0 * (input - 1) + 1) + 5.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 10.0 * (input - 1) + 1) + 6.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 10.0 * (input - 1) + 1) + 7.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 10.0 * (input - 1) + 1) + 8.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 10.0 * (input - 1) + 1) + 9.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 10.0 * (input - 1) + 2) + 4.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 10.0 * (input - 1) + 2) + 6.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 10.0 * (input - 1) + 2) + 9.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 10.0 * (input - 1) + 2) + 13.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 10.0 * (input - 1) + 2) + 23.0 / 10.0 * random; - FillLambdas[(int)InputMode._10, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 10.0 * (input - 1) + 3) + 47.0 / 10.0 * random; - - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 5.0 * (input - 2) + 1) + 3.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 5.0 * (input - 2) + 1) + 4.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 5.0 * (input - 2) + 1) + 5.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 5.0 * (input - 2) + 1) + 6.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 5.0 * (input - 2) + 1) + 7.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 5.0 * (input - 2) + 1) + 8.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 5.0 * (input - 2) + 1) + 9.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 5.0 * (input - 2) + 2) + 4.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 5.0 * (input - 2) + 2) + 6.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 5.0 * (input - 2) + 2) + 9.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 5.0 * (input - 2) + 2) + 13.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 5.0 * (input - 2) + 2) + 23.0 / 5.0 * random; - FillLambdas[(int)InputMode._5_1, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 5.0 * (input - 2) + 3) + 47.0 / 5.0 * random; - - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 7.0 * (input - 2) + 1) + 3.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 7.0 * (input - 2) + 1) + 4.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 7.0 * (input - 2) + 1) + 5.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 7.0 * (input - 2) + 1) + 6.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 7.0 * (input - 2) + 1) + 7.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 7.0 * (input - 2) + 1) + 8.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 7.0 * (input - 2) + 1) + 9.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 7.0 * (input - 2) + 2) + 4.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 7.0 * (input - 2) + 2) + 6.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 7.0 * (input - 2) + 2) + 9.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 7.0 * (input - 2) + 2) + 13.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 7.0 * (input - 2) + 2) + 23.0 / 7.0 * random; - FillLambdas[(int)InputMode._7_1, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 7.0 * (input - 2) + 3) + 47.0 / 7.0 * random; - - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 10.0 * (input - 2) + 1) + 3.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 10.0 * (input - 2) + 1) + 4.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 10.0 * (input - 2) + 1) + 5.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 10.0 * (input - 2) + 1) + 6.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 10.0 * (input - 2) + 1) + 7.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 10.0 * (input - 2) + 1) + 8.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 10.0 * (input - 2) + 1) + 9.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 10.0 * (input - 2) + 2) + 4.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 10.0 * (input - 2) + 2) + 6.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 10.0 * (input - 2) + 2) + 9.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 10.0 * (input - 2) + 2) + 13.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 10.0 * (input - 2) + 2) + 23.0 / 10.0 * random; - FillLambdas[(int)InputMode._10_2, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 10.0 * (input - 2) + 3) + 47.0 / 10.0 * random; - - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 14.0 * (input - 2) + 1) + 3.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 14.0 * (input - 2) + 1) + 4.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 14.0 * (input - 2) + 1) + 5.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 14.0 * (input - 2) + 1) + 6.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 14.0 * (input - 2) + 1) + 7.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 14.0 * (input - 2) + 1) + 8.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 14.0 * (input - 2) + 1) + 9.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 14.0 * (input - 2) + 2) + 4.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 14.0 * (input - 2) + 2) + 6.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 14.0 * (input - 2) + 2) + 9.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 14.0 * (input - 2) + 2) + 13.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 14.0 * (input - 2) + 2) + 23.0 / 14.0 * random; - FillLambdas[(int)InputMode._14_2, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 14.0 * (input - 2) + 3) + 47.0 / 14.0 * random; - - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 24.0 * (input - 2) + 1) + 3.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 24.0 * (input - 2) + 1) + 4.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 24.0 * (input - 2) + 1) + 5.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 24.0 * (input - 2) + 1) + 6.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 24.0 * (input - 2) + 1) + 7.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 24.0 * (input - 2) + 1) + 8.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 24.0 * (input - 2) + 1) + 9.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 24.0 * (input - 2) + 2) + 4.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 24.0 * (input - 2) + 2) + 6.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 24.0 * (input - 2) + 2) + 9.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 24.0 * (input - 2) + 2) + 13.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 24.0 * (input - 2) + 2) + 23.0 / 24.0 * random; - FillLambdas[(int)InputMode._24_2, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 24.0 * (input - 2) + 3) + 47.0 / 24.0 * random; - - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill4] = (input, random) => (3.0 / 48.0 * (input - 3) + 1) + 3.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill5] = (input, random) => (4.0 / 48.0 * (input - 3) + 1) + 4.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill6] = (input, random) => (5.0 / 48.0 * (input - 3) + 1) + 5.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill7] = (input, random) => (6.0 / 48.0 * (input - 3) + 1) + 6.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill8] = (input, random) => (7.0 / 48.0 * (input - 3) + 1) + 7.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill9] = (input, random) => (8.0 / 48.0 * (input - 3) + 1) + 8.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill10] = (input, random) => (9.0 / 48.0 * (input - 3) + 1) + 9.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill5_1] = (input, random) => (4.0 / 48.0 * (input - 3) + 2) + 4.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill7_1] = (input, random) => (6.0 / 48.0 * (input - 3) + 2) + 6.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill10_2] = (input, random) => (9.0 / 48.0 * (input - 3) + 2) + 9.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill14_2] = (input, random) => (13.0 / 48.0 * (input - 3) + 2) + 13.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill24_2] = (input, random) => (23.0 / 48.0 * (input - 3) + 2) + 23.0 / 48.0 * random; - FillLambdas[(int)InputMode._48_4, (int)ModeComponent.InputFavorMode.Fill48_4] = (input, random) => (47.0 / 48.0 * (input - 3) + 3) + 47.0 / 48.0 * random; - - VoidPutInputs[(int)InputMode._4, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._4, (int)InputMode._5] = [5]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._6] = [5, 6]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._7] = [5, 6, 7]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._8] = [5, 6, 7, 8]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._9] = [5, 6, 7, 8, 9]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._10] = [5, 6, 7, 8, 9, 10]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._5_1] = [6]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._7_1] = [6, 7, 8]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._10_2] = [6, 7, 8, 9, 10, 11]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._14_2] = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._24_2] = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._4, (int)InputMode._48_4] = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._5, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._5, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._5, (int)InputMode._6] = [6]; - VoidPutInputs[(int)InputMode._5, (int)InputMode._7] = [6, 7]; - VoidPutInputs[(int)InputMode._5, (int)InputMode._8] = [6, 7, 8]; - VoidPutInputs[(int)InputMode._5, (int)InputMode._9] = [6, 7, 8, 9]; - VoidPutInputs[(int)InputMode._5, (int)InputMode._10] = [6, 7, 8, 9, 10]; - VoidPutInputs[(int)InputMode._5, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._5, (int)InputMode._7_1] = [7, 8]; - VoidPutInputs[(int)InputMode._5, (int)InputMode._10_2] = [7, 8, 9, 10, 11]; - VoidPutInputs[(int)InputMode._5, (int)InputMode._14_2] = [7, 8, 9, 10, 11, 12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._5, (int)InputMode._24_2] = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._5, (int)InputMode._48_4] = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._6, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._6, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._6, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._6, (int)InputMode._7] = [7]; - VoidPutInputs[(int)InputMode._6, (int)InputMode._8] = [7, 8]; - VoidPutInputs[(int)InputMode._6, (int)InputMode._9] = [7, 8, 9]; - VoidPutInputs[(int)InputMode._6, (int)InputMode._10] = [7, 8, 9, 10]; - VoidPutInputs[(int)InputMode._6, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._6, (int)InputMode._7_1] = [8]; - VoidPutInputs[(int)InputMode._6, (int)InputMode._10_2] = [8, 9, 10, 11]; - VoidPutInputs[(int)InputMode._6, (int)InputMode._14_2] = [8, 9, 10, 11, 12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._6, (int)InputMode._24_2] = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._6, (int)InputMode._48_4] = [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._7, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._7, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._7, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._7, (int)InputMode._7] = Array.Empty(); - VoidPutInputs[(int)InputMode._7, (int)InputMode._8] = [8]; - VoidPutInputs[(int)InputMode._7, (int)InputMode._9] = [8, 9]; - VoidPutInputs[(int)InputMode._7, (int)InputMode._10] = [8, 9, 10]; - VoidPutInputs[(int)InputMode._7, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._7, (int)InputMode._7_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._7, (int)InputMode._10_2] = [9, 10, 11]; - VoidPutInputs[(int)InputMode._7, (int)InputMode._14_2] = [9, 10, 11, 12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._7, (int)InputMode._24_2] = [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._7, (int)InputMode._48_4] = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._8, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._8, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._8, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._8, (int)InputMode._7] = Array.Empty(); - VoidPutInputs[(int)InputMode._8, (int)InputMode._8] = Array.Empty(); - VoidPutInputs[(int)InputMode._8, (int)InputMode._9] = [9]; - VoidPutInputs[(int)InputMode._8, (int)InputMode._10] = [9, 10]; - VoidPutInputs[(int)InputMode._8, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._8, (int)InputMode._7_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._8, (int)InputMode._10_2] = [10, 11]; - VoidPutInputs[(int)InputMode._8, (int)InputMode._14_2] = [10, 11, 12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._8, (int)InputMode._24_2] = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._8, (int)InputMode._48_4] = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._9, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._9, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._9, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._9, (int)InputMode._7] = Array.Empty(); - VoidPutInputs[(int)InputMode._9, (int)InputMode._8] = Array.Empty(); - VoidPutInputs[(int)InputMode._9, (int)InputMode._9] = Array.Empty(); - VoidPutInputs[(int)InputMode._9, (int)InputMode._10] = [10]; - VoidPutInputs[(int)InputMode._9, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._9, (int)InputMode._7_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._9, (int)InputMode._10_2] = [11]; - VoidPutInputs[(int)InputMode._9, (int)InputMode._14_2] = [11, 12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._9, (int)InputMode._24_2] = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._9, (int)InputMode._48_4] = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._10, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._10, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._10, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._10, (int)InputMode._7] = Array.Empty(); - VoidPutInputs[(int)InputMode._10, (int)InputMode._8] = Array.Empty(); - VoidPutInputs[(int)InputMode._10, (int)InputMode._9] = Array.Empty(); - VoidPutInputs[(int)InputMode._10, (int)InputMode._10] = Array.Empty(); - VoidPutInputs[(int)InputMode._10, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._10, (int)InputMode._7_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._10, (int)InputMode._10_2] = [12]; - VoidPutInputs[(int)InputMode._10, (int)InputMode._14_2] = [12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._10, (int)InputMode._24_2] = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._10, (int)InputMode._48_4] = [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._6] = [6]; - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._7] = [6, 7]; - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._8] = [6, 7, 8]; - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._9] = [6, 7, 8, 9]; - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._10] = [6, 7, 8, 9, 10]; - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._7_1] = [7, 8]; - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._10_2] = [7, 8, 9, 10, 11, 12]; - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._14_2] = [7, 8, 9, 10, 11, 12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._24_2] = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._5_1, (int)InputMode._48_4] = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._7] = Array.Empty(); - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._8] = [8]; - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._9] = [8, 9]; - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._10] = [8, 9, 10]; - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._7_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._10_2] = [9, 10, 11]; - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._14_2] = [9, 10, 11, 12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._24_2] = [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._7_1, (int)InputMode._48_4] = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._7] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._8] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._9] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._10] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._7_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._10_2] = Array.Empty(); - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._14_2] = [12, 13, 14, 15]; - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._24_2] = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._10_2, (int)InputMode._48_4] = [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._7] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._8] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._9] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._10] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._7_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._10_2] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._14_2] = Array.Empty(); - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._24_2] = [16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; - VoidPutInputs[(int)InputMode._14_2, (int)InputMode._48_4] = [17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._7] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._8] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._9] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._10] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._7_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._10_2] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._14_2] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._24_2] = Array.Empty(); - VoidPutInputs[(int)InputMode._24_2, (int)InputMode._48_4] = [27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]; - - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._4] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._5] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._6] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._7] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._8] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._9] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._10] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._5_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._7_1] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._10_2] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._14_2] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._24_2] = Array.Empty(); - VoidPutInputs[(int)InputMode._48_4, (int)InputMode._48_4] = Array.Empty(); - IsIn2P[(int)InputMode._4] = new bool[5]; IsIn2P[(int)InputMode._5] = new bool[6]; IsIn2P[(int)InputMode._6] = new bool[7]; @@ -1193,19 +880,19 @@ IsIn2P[(int)InputMode._24_2] = new bool[27]; IsIn2P[(int)InputMode._48_4] = new bool[53]; - Input1PCounts[(int)InputMode._4] = 4; - Input1PCounts[(int)InputMode._5] = 5; - Input1PCounts[(int)InputMode._6] = 6; - Input1PCounts[(int)InputMode._7] = 7; - Input1PCounts[(int)InputMode._8] = 8; - Input1PCounts[(int)InputMode._9] = 9; - Input1PCounts[(int)InputMode._10] = 10; - Input1PCounts[(int)InputMode._5_1] = 6; - Input1PCounts[(int)InputMode._7_1] = 8; - Input1PCounts[(int)InputMode._10_2] = 6; - Input1PCounts[(int)InputMode._14_2] = 8; - Input1PCounts[(int)InputMode._24_2] = 26; - Input1PCounts[(int)InputMode._48_4] = 52; + InputCounts1P[(int)InputMode._4] = 4; + InputCounts1P[(int)InputMode._5] = 5; + InputCounts1P[(int)InputMode._6] = 6; + InputCounts1P[(int)InputMode._7] = 7; + InputCounts1P[(int)InputMode._8] = 8; + InputCounts1P[(int)InputMode._9] = 9; + InputCounts1P[(int)InputMode._10] = 10; + InputCounts1P[(int)InputMode._5_1] = 6; + InputCounts1P[(int)InputMode._7_1] = 8; + InputCounts1P[(int)InputMode._10_2] = 6; + InputCounts1P[(int)InputMode._14_2] = 8; + InputCounts1P[(int)InputMode._24_2] = 26; + InputCounts1P[(int)InputMode._48_4] = 52; Has2P[(int)InputMode._10_2] = true; Has2P[(int)InputMode._14_2] = true; diff --git a/Qwilight/Compute/DefaultCompute.cs b/Qwilight/Compute/DefaultCompute.cs index f5dac8c..515fbf5 100644 --- a/Qwilight/Compute/DefaultCompute.cs +++ b/Qwilight/Compute/DefaultCompute.cs @@ -460,7 +460,7 @@ public int InheritedTotalNotes { get; set; } - public int Input1PCount { get; set; } + public int InputCount1P { get; set; } public bool[] IsIn2P { get; set; } @@ -835,13 +835,13 @@ var inputCount = Component.InputCounts[(int)InputMode]; if (AlwaysNotP2Position) { - Input1PCount = inputCount; + InputCount1P = inputCount; IsIn2P = new bool[inputCount + 1]; Has2P = false; } else { - Input1PCount = Component.Input1PCounts[(int)InputMode]; + InputCount1P = Component.InputCounts1P[(int)InputMode]; IsIn2P = Component.IsIn2P[(int)InputMode]; Has2P = Component.Has2P[(int)InputMode]; } @@ -1978,8 +1978,7 @@ while (postedTrapNotesMillis >= 60.0) { postedTrapNotesMillis -= 60.0; - var autoableInputCount = Component.AutoableInputCounts[(int)InputMode]; - var input = 1 + autoableInputCount + Random.Shared.Next(Component.InputCounts[(int)InputMode] - autoableInputCount); + var input = Utility.GetSaltedValue(Component.DefaultInputs[(int)InputMode].ToArray()); var wait = Math.Floor(Math.Min(LoopingCounter + 1000.0 * Random.Shared.Next(1000 / 60) / (1000 / 60), Length + Component.QuitWait)); var isTrapNote = true; foreach (var handlingNote in _handlingNotes) @@ -2036,8 +2035,7 @@ while (postedSaltNotesMillis >= 60.0) { postedSaltNotesMillis -= 60.0; - var autoableInputCount = Component.AutoableInputCounts[(int)InputMode]; - var input = 1 + autoableInputCount + Random.Shared.Next(Component.InputCounts[(int)InputMode] - autoableInputCount); + var input = Utility.GetSaltedValue(Component.DefaultInputs[(int)InputMode]); foreach (var handlingNote in _handlingNotes) { if (handlingNote.HasStand && handlingNote.Judged == Component.Judged.Not && handlingNote.IsVisibleHalf(this) && handlingNote.TargetInput == handlingNote.LevyingInput) diff --git a/Qwilight/System/DrawingSystem/DrawingSystem.cs b/Qwilight/System/DrawingSystem/DrawingSystem.cs index 6f85946..3ec03ec 100644 --- a/Qwilight/System/DrawingSystem/DrawingSystem.cs +++ b/Qwilight/System/DrawingSystem/DrawingSystem.cs @@ -439,7 +439,7 @@ var isIn2P = defaultComputer.IsIn2P; var has2P = defaultComputer.Has2P; var inputCount = Component.InputCounts[(int)inputMode]; - var input1PCount = defaultComputer.Input1PCount; + var inputCount1P = defaultComputer.InputCount1P; var mainPosition = drawingComponentValue.mainPosition; var p2Position = drawingComponentValue.p2Position; var p1Length = drawingComponentValue.p1BuiltLength; diff --git a/Qwilight/System/UI/DrawingComponent.cs b/Qwilight/System/UI/DrawingComponent.cs index 0bb1afc..7425191 100644 --- a/Qwilight/System/UI/DrawingComponent.cs +++ b/Qwilight/System/UI/DrawingComponent.cs @@ -469,9 +469,9 @@ var floatingNotePosition0s = new float[inputCount + 1]; var floatingNoteLengths = new float[inputCount + 1]; var slashNotePosition0s = new float[inputCount + 1]; - var p1BuiltLengthFunc = new Func(e => (float)(MainNoteLengthBuiltMap.Skip(1).Take(defaultComputer.Input1PCount).DefaultIfEmpty(0).Max() * e)); + var p1BuiltLengthFunc = new Func(e => (float)(MainNoteLengthBuiltMap.Skip(1).Take(defaultComputer.InputCount1P).DefaultIfEmpty(0).Max() * e)); var p2BuiltLengthFunc = new Func(e => (float)(MainNoteLengthBuiltMap.Skip(1).Max() * e)); - var p1Length = new Func(e => (float)(MainNoteLengthBuiltMap.Skip(1).Take(Component.Input1PCounts[(int)inputMode]).DefaultIfEmpty(0).Max() * e)); + var p1Length = new Func(e => (float)(MainNoteLengthBuiltMap.Skip(1).Take(Component.InputCounts1P[(int)inputMode]).DefaultIfEmpty(0).Max() * e)); var lsCaller = new Script(); lsCaller.Globals["judgmentStage"] = defaultComputer.JudgmentStage; lsCaller.Globals["autoableInputCount"] = autoableInputCount; diff --git a/Qwilight/Utilities/Utility.cs b/Qwilight/Utilities/Utility.cs index 5d27f0d..af43004 100644 --- a/Qwilight/Utilities/Utility.cs +++ b/Qwilight/Utilities/Utility.cs @@ -532,5 +532,11 @@ } return (T)(object)0; } + + public static T GetSaltedValue(T[] values) + { + Random.Shared.Shuffle(values); + return values.First(); + } } } \ No newline at end of file diff --git a/Qwilight/View/MainWindow/Layer0View.xaml.cs b/Qwilight/View/MainWindow/Layer0View.xaml.cs index a667350..1b105b5 100644 --- a/Qwilight/View/MainWindow/Layer0View.xaml.cs +++ b/Qwilight/View/MainWindow/Layer0View.xaml.cs @@ -118,7 +118,7 @@ if (autoComputer?.IsHandling == true) { var statusValue = status.Value; - var targetInputCount = Component.Input1PCounts[(int)autoComputer.InputMode] * 6; + var targetInputCount = Component.InputCounts1P[(int)autoComputer.InputMode] * 6; if (targetInputCount > 0) { diff --git a/Qwilight/View/MainWindow/MainWindow.xaml.cs b/Qwilight/View/MainWindow/MainWindow.xaml.cs index a6a7dd9..8e29514 100644 --- a/Qwilight/View/MainWindow/MainWindow.xaml.cs +++ b/Qwilight/View/MainWindow/MainWindow.xaml.cs @@ -360,12 +360,12 @@ var p1BuiltLength = drawingComponentValue.p1BuiltLength; var positionX = pointPosition.X - drawingComponentValue.mainPosition; var inputMode = defaultComputer.InputMode; - var input1PCount = defaultComputer.Input1PCount; + var inputCount1P = defaultComputer.InputCount1P; var mainNoteLengthLevyingMap = drawingComponentValue.MainNoteLengthLevyingMap; var mainNoteLengthBuiltMap = drawingComponentValue.MainNoteLengthBuiltMap; if (0.0 <= positionX && positionX < p1BuiltLength) { - for (var input = input1PCount; input > 0; --input) + for (var input = inputCount1P; input > 0; --input) { if (mainNoteLengthLevyingMap[input] <= positionX && positionX < mainNoteLengthBuiltMap[input]) { @@ -379,7 +379,7 @@ var inputCount = Component.InputCounts[(int)inputMode]; if (p1BuiltLength <= positionX && positionX < drawingComponentValue.p2BuiltLength) { - for (var input = inputCount; input > input1PCount; --input) + for (var input = inputCount; input > inputCount1P; --input) { if (mainNoteLengthLevyingMap[input] <= positionX && positionX < mainNoteLengthBuiltMap[input]) { diff --git a/Qwilight/ViewModel/MainViewModel.cs b/Qwilight/ViewModel/MainViewModel.cs index ec65f31..5ca653e 100644 --- a/Qwilight/ViewModel/MainViewModel.cs +++ b/Qwilight/ViewModel/MainViewModel.cs @@ -20,7 +20,6 @@ using System.Diagnostics; using System.IO; using System.Net.Http; -using System.Security.Cryptography; using System.Text; using System.Windows; using System.Windows.Input; @@ -2137,12 +2136,12 @@ public void SaltEntryView() { - var entryItemPosition = 1 + (EntryItems[1].IsLogical ? 1 : 0) + RandomNumberGenerator.GetInt32(EntryItems.Count - EntryItems.Count(entryItem => entryItem.IsLogical)); - if (entryItemPosition == EntryItemPosition) - { - ++entryItemPosition; - } - EntryItemValue = EntryItems.ElementAtOrDefault(entryItemPosition); + var entryItems = EntryItems.ToArray(); + EntryItemValue = Utility.GetSaltedValue(entryItems + .Skip(Array.FindIndex(entryItems, entryItem => !entryItem.IsLogical)) + .SkipLast(entryItems.Length - Array.FindLastIndex(entryItems, entryItem => !entryItem.IsLogical) - 1) + .Except([EntryItemValue]) + .ToArray()); } public void Want(EntryItem wantEntryItem = null)