diff --git a/examples/example-01.txt b/examples/example-01.txt
new file mode 100644
index 0000000..a091ed5
Binary files /dev/null and b/examples/example-01.txt differ
diff --git a/examples/example-02.txt b/examples/example-02.txt
new file mode 100644
index 0000000..beb1242
Binary files /dev/null and b/examples/example-02.txt differ
diff --git a/examples/example-03.txt b/examples/example-03.txt
new file mode 100644
index 0000000..d470742
Binary files /dev/null and b/examples/example-03.txt differ
diff --git a/examples/example-04.txt b/examples/example-04.txt
new file mode 100644
index 0000000..1958d78
Binary files /dev/null and b/examples/example-04.txt differ
diff --git a/source/Triangulum/MainWindow.xaml b/source/Triangulum/MainWindow.xaml
index 06f18a2..f92fb4f 100644
--- a/source/Triangulum/MainWindow.xaml
+++ b/source/Triangulum/MainWindow.xaml
@@ -17,7 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program.If not, see .
-->
-
+
@@ -53,6 +53,7 @@
+
+
+
+
+
+
+
+ VerticalAlignment="Bottom"
+ HorizontalAlignment="Right"
+ Width="64" Checked="cbxCenter_Checked" />
+ Width="50" Checked="cbxInline_Checked"/>
@@ -258,9 +285,10 @@
Cursor="Hand"
Margin="0,0,10,14"
Click="btnGo_Click"
+ Width="75"
Height="22"
VerticalAlignment="Bottom"
HorizontalAlignment="Right"
- Width="75" Background="#FFF0F0F0"/>
+ Background="#FFF0F0F0"/>
diff --git a/source/Triangulum/MainWindow.xaml.cs b/source/Triangulum/MainWindow.xaml.cs
index 8e94c9e..ab1873d 100644
--- a/source/Triangulum/MainWindow.xaml.cs
+++ b/source/Triangulum/MainWindow.xaml.cs
@@ -28,6 +28,8 @@ You should have received a copy of the GNU General Public License
using System.Windows;
using System.Windows.Input;
using System.ComponentModel;
+using System.Numerics;
+using System.Linq;
namespace Triangulum
{
@@ -194,7 +196,11 @@ public void PascalsTriangle(ViewModel vm, int row)
List triangle = new List();
- System.Numerics.BigInteger no_row, c = 1, blk, i, j;
+ // System.Numerics.BigInteger
+ BigInteger row_no;
+ BigInteger c = 1;
+ BigInteger blk;
+ BigInteger i, j;
string spacer = string.Empty;
if (vm.Center_IsChecked == true)
@@ -202,11 +208,14 @@ public void PascalsTriangle(ViewModel vm, int row)
spacer = " ";
}
- no_row = row;
- for (i = 0; i < no_row; i++)
+ row_no = row;
+ for (i = 0; i < row_no; i++)
{
- for (blk = 1; blk <= no_row - i; blk++)
- triangle.Add(spacer);
+ List triangle_row = new List();
+
+ // Center
+ for (blk = 1; blk <= row_no - i; blk++)
+ triangle_row.Add(spacer);
for (j = 0; j <= i; j++)
{
@@ -217,28 +226,75 @@ public void PascalsTriangle(ViewModel vm, int row)
// Convert to Binary
if (vm.Binary_IsChecked == true)
+ {
if (c % 2 != 0)
if (vm.Binary1_IsChecked == true)
- triangle.Add("1 ");
+ {
+ triangle_row.Add("1 ");
+ }
else
- triangle.Add(" ");
+ {
+ triangle_row.Add(" ");
+ }
else
if (vm.Binary0_IsChecked == true)
- triangle.Add("0 ");
- else
- triangle.Add(" ");
+ {
+ triangle_row.Add("0 ");
+ }
+ else
+ {
+ triangle_row.Add(" ");
+ }
+ }
// Integers
else
- triangle.Add(string.Format("{0} ", c));
+ {
+ triangle_row.Add(string.Format("{0} ", c));
+ }
+
}
- // Linebreak
- triangle.Add("\n");
- }
+
+ // Decimal
+ if (vm.Decimal_IsChecked == true)
+ {
+ string join = string.Join("", triangle_row);
+
+ // Remove WhiteSpaces
+ join = Regex.Replace(join, " ", "");
+
+ // Convert Binary to Decimal
+ BigInteger sequence = BinaryToDec(join);
+
+ // Add to Triangle
+ triangle.Add(Convert.ToString(sequence));
+ }
+
+
+ // Sum
+ if (vm.Sum_IsChecked == true)
+ {
+ BigInteger sum = triangle_row
+ .Where(x => !string.IsNullOrWhiteSpace(x))
+ .Where(x => !string.IsNullOrEmpty(x))
+ .Aggregate(BigInteger.Zero, (x, a) => x + BigInteger.Parse(a));
+
+ triangle.Add(string.Join(" ", sum));
+ }
+
+
+ // Individual
+ if (vm.Decimal_IsChecked == false &&
+ vm.Sum_IsChecked == false)
+ {
+ triangle.Add(string.Join("", triangle_row));
+ }
+
+ } // End Loop
// Output
- string output = string.Join(string.Empty, triangle);
+ string output = string.Join("\n", triangle);
// Convert to ASCII
if (vm.ASCII_IsChecked == true)
@@ -262,6 +318,44 @@ public void PascalsTriangle(ViewModel vm, int row)
}
+
+ ///
+ /// Binary to Decimal
+ ///
+ static BigInteger BinaryToDec(string input)
+ {
+ char[] array = input.ToCharArray();
+ // Reverse since 16-8-4-2-1 not 1-2-4-8-16.
+ Array.Reverse(array);
+ /*
+ * [0] = 1
+ * [1] = 2
+ * [2] = 4
+ * etc
+ */
+ BigInteger sum = 0;
+
+ for (int i = 0; i < array.Length; i++)
+ {
+ if (array[i] == '1')
+ {
+ // Method uses raising 2 to the power of the index.
+ if (i == 0)
+ {
+ sum += 1;
+ }
+ else
+ {
+ sum += (BigInteger)Math.Pow(2, i);
+ }
+ }
+
+ }
+
+ return sum;
+ }
+
+
///
/// Binary to ASCII
///
@@ -290,9 +384,17 @@ private byte[] convertToBytes(string s)
///
/// Font Size - Slider
///
+ // Double Click
private void slFontSize_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
- slFontSize.Value = 9;
+ // Return to Default Size
+ slFontSize.Value = 12;
+ }
+ // Mouse Up
+ private void slFontSize_PreviewMouseUp(object sender, MouseButtonEventArgs e)
+ {
+ // Change Font Size
+ vm.Display_FontSize = slFontSize.Value;
}
@@ -310,11 +412,67 @@ private void cbxWrap_Unchecked(object sender, RoutedEventArgs e)
}
+ ///
+ /// Center - CheckBox
+ ///
+ private void cbxCenter_Checked(object sender, RoutedEventArgs e)
+ {
+ // Uncheck Inline
+ if (vm.Inline_IsChecked == true)
+ {
+ cbxInline.IsChecked = false;
+ vm.Inline_IsChecked = false;
+ }
+
+ // Uncheck ASCII
+ if (vm.ASCII_IsChecked == true)
+ {
+ cbxASCII.IsChecked = false;
+ vm.ASCII_IsChecked = false;
+ }
+
+ // Uncheck Decimal
+ if (vm.Decimal_IsChecked == true)
+ {
+ cbxDecimal.IsChecked = false;
+ vm.Decimal_IsChecked = false;
+ }
+
+ // Uncheck Sum
+ if (vm.Sum_IsChecked == true)
+ {
+ cbxSum.IsChecked = false;
+ vm.Sum_IsChecked = false;
+ }
+ }
+
+
+ ///
+ /// Inline - CheckBox
+ ///
+ private void cbxInline_Checked(object sender, RoutedEventArgs e)
+ {
+ // Uncheck Center
+ if (vm.Center_IsChecked == true)
+ {
+ cbxCenter.IsChecked = false;
+ vm.Center_IsChecked = false;
+ }
+ }
+
+
///
/// ASCII - CheckBox
///
private void cbxASCII_Checked(object sender, RoutedEventArgs e)
{
+ // Uncheck Center
+ if (vm.Center_IsChecked == true)
+ {
+ cbxCenter.IsChecked = false;
+ vm.Center_IsChecked = false;
+ }
+
// Uncheck Binary
cbxBinary.IsChecked = true;
cbx0.IsChecked = true;
@@ -323,8 +481,47 @@ private void cbxASCII_Checked(object sender, RoutedEventArgs e)
vm.Binary_IsChecked = true;
vm.Binary1_IsChecked = true;
vm.Binary0_IsChecked = true;
+
+ // Uncheck Decimal
+ cbxDecimal.IsChecked = false;
+ vm.Decimal_IsChecked = false;
+
+ // Uncheck Sum
+ cbxSum.IsChecked = false;
+ vm.Sum_IsChecked = false;
+ }
+
+ ///
+ /// Decimal - CheckBox
+ ///
+ private void cbxDecimal_Checked(object sender, RoutedEventArgs e)
+ {
+ // Uncheck Center
+ if (vm.Center_IsChecked == true)
+ {
+ cbxCenter.IsChecked = false;
+ vm.Center_IsChecked = false;
+ }
+
+ // Check Binary 0 & 1
+ cbxBinary.IsChecked = true;
+ cbx0.IsChecked = true;
+ cbx1.IsChecked = true;
+
+ vm.Binary_IsChecked = true;
+ vm.Binary0_IsChecked = true;
+ vm.Binary1_IsChecked = true;
+
+ // Uncheck ASCII
+ cbxASCII.IsChecked = false;
+ vm.ASCII_IsChecked = false;
+
+ // Uncheck Sum
+ cbxSum.IsChecked = false;
+ vm.Sum_IsChecked = false;
}
+
///
/// Binary - CheckBox
///
@@ -338,7 +535,11 @@ private void cbxBinary_Checked(object sender, RoutedEventArgs e)
vm.Binary_IsChecked = true;
//vm.Binary0_IsChecked = true;
vm.Binary1_IsChecked = true;
-
+
+
+ // Enable Decimal
+ vm.Decimal_IsEnabled = true;
+
}
// Unchecked
@@ -351,6 +552,12 @@ private void cbxBinary_Unchecked(object sender, RoutedEventArgs e)
vm.Binary_IsChecked = false;
vm.Binary0_IsChecked = false;
vm.Binary1_IsChecked = false;
+
+ // Uncheck Decimal
+ vm.Decimal_IsChecked = false;
+
+ // Disable Decimal
+ vm.Decimal_IsEnabled = false;
}
// Binary 0 - CheckBox
@@ -376,6 +583,31 @@ private void cbx1_Checked(object sender, RoutedEventArgs e)
}
+ ///
+ /// Sum - CheckBox
+ ///
+ // Unchecked
+ private void cbxSum_Checked(object sender, RoutedEventArgs e)
+ {
+ // Uncheck Center
+ cbxCenter.IsChecked = false;
+ vm.Center_IsChecked = false;
+
+ // Uncheck Decimal
+ cbxDecimal.IsChecked = false;
+ vm.Decimal_IsChecked = false;
+
+ // Uncheck ASCII
+ cbxASCII.IsChecked = false;
+ vm.ASCII_IsChecked = false;
+ }
+ // Unchecked
+ private void cbxSum_Unchecked(object sender, RoutedEventArgs e)
+ {
+
+ }
+
+
///
/// Rows - TextBox
///
@@ -424,7 +656,7 @@ private void btnGo_Click(object sender, RoutedEventArgs e)
{
// Rows Over 2500 Warning
//
- if (int.Parse(vm.Rows_Text) >= 2500)
+ if (int.Parse(vm.Rows_Text) >= 1000)
{
// Yes/No Dialog Confirmation
//
diff --git a/source/Triangulum/Properties/AssemblyInfo.cs b/source/Triangulum/Properties/AssemblyInfo.cs
index d9723ba..449a49d 100644
--- a/source/Triangulum/Properties/AssemblyInfo.cs
+++ b/source/Triangulum/Properties/AssemblyInfo.cs
@@ -51,5 +51,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.0.1.0")]
-[assembly: AssemblyFileVersion("0.0.1.0")]
+[assembly: AssemblyVersion("0.0.2.0")]
+[assembly: AssemblyFileVersion("0.0.2.0")]
diff --git a/source/Triangulum/ViewModel.cs b/source/Triangulum/ViewModel.cs
index edb49fd..f9b1f04 100644
--- a/source/Triangulum/ViewModel.cs
+++ b/source/Triangulum/ViewModel.cs
@@ -83,19 +83,19 @@ public string Display_Text
}
}
// Font Size
- public string _FontSize_Text;
- public string FontSize_Text
+ public double _Display_FontSize = 12;
+ public double Display_FontSize
{
- get { return _FontSize_Text; }
+ get { return _Display_FontSize; }
set
{
- if (_FontSize_Text == value)
+ if (_Display_FontSize == value)
{
return;
}
- _Wrap_Text = value;
- OnPropertyChanged("FontSize_Text");
+ _Display_FontSize = value;
+ OnPropertyChanged("Display_FontSize");
}
}
// Text Wrap
@@ -246,5 +246,57 @@ public bool Binary1_IsChecked
}
+ // -------------------------
+ // Sum - Toggle
+ // -------------------------
+ private bool _Sum_IsChecked;
+ public bool Sum_IsChecked
+ {
+ get { return _Sum_IsChecked; }
+ set
+ {
+ if (_Sum_IsChecked == value) return;
+
+ _Sum_IsChecked = value;
+ }
+ }
+
+
+ // -------------------------
+ // Decimal - Toggle
+ // -------------------------
+ // Checked
+ private bool _Decimal_IsChecked;
+ public bool Decimal_IsChecked
+ {
+ get { return _Decimal_IsChecked; }
+ set
+ {
+ if (_Decimal_IsChecked == value) return;
+
+ _Decimal_IsChecked = value;
+ }
+ }
+
+ // Enabled
+ private bool _Decimal_IsEnabled = true;
+ public bool Decimal_IsEnabled
+ {
+ get { return _Decimal_IsEnabled; }
+ set
+ {
+ if (_Decimal_IsEnabled == value)
+ {
+ return;
+ }
+
+ _Decimal_IsEnabled = value;
+ OnPropertyChanged("Decimal_IsEnabled");
+ }
+ }
+
+
+
+
}
}