@@ -33,16 +33,36 @@ public static string FormatTruthTable(Ast ast, List<bool[]> table)
3333 {
3434 var sb = new StringBuilder ( ) ;
3535
36- sb . AppendLine ( $ "┏{ Repeat ( '━' , ast . Variables . Count * 3 + 2 ) } ┳{ Repeat ( '━' , 8 ) } ┓") ;
37- sb . AppendLine ( $ "┃ { String . Join ( " " , ast . Variables ) } ┃ Result ┃") ;
38- sb . AppendLine ( $ "┣{ Repeat ( '━' , ast . Variables . Count * 3 + 2 ) } ╋{ Repeat ( '━' , 8 ) } ┫") ;
36+ var variableLine = ast . Variables . Select ( v => Repeat ( '━' , v . Length + 2 ) ) . ToList ( ) ;
3937
40- foreach ( var row in table )
38+ sb . Append ( "┏━" ) ;
39+ variableLine . ForEach ( s => sb . Append ( s ) ) ;
40+ sb . AppendLine ( "━┳━━━━━━━━┓" ) ;
41+
42+ sb . Append ( "┃ " ) ;
43+ ast . Variables . ForEach ( v => sb . Append ( $ " { v } ") ) ;
44+ sb . AppendLine ( " ┃ Result ┃" ) ;
45+
46+ sb . Append ( "┣━" ) ;
47+ variableLine . ForEach ( s => sb . Append ( s ) ) ;
48+ sb . AppendLine ( "━╋━━━━━━━━┫" ) ;
49+
50+ foreach ( bool [ ] row in table )
4151 {
42- sb . AppendLine ( $ "┃ { String . Join ( " " , row [ 0 ..^ 1 ] . Select ( b => b ? "1" : "0" ) ) } ┃ { ( row [ ^ 1 ] ? "1" : "0" ) } ┃") ;
52+ sb . Append ( "┃ " ) ;
53+ for ( int i = 0 ; i < row . Length - 1 ; i ++ )
54+ {
55+ string pad1 = Repeat ( ' ' , ( int ) Math . Ceiling ( ast . Variables [ i ] . Length / 2.0f ) ) ;
56+ string pad2 = Repeat ( ' ' , ( int ) Math . Floor ( ast . Variables [ i ] . Length / 2.0f ) ) ;
57+ sb . Append ( $ "{ pad1 } { ( row [ i ] ? '1' : '0' ) } { pad2 } ") ;
58+ }
59+
60+ sb . AppendLine ( $ " ┃ { ( row [ ^ 1 ] ? '1' : '0' ) } ┃") ;
4361 }
4462
45- sb . AppendLine ( $ "┗{ Repeat ( '━' , ast . Variables . Count * 3 + 2 ) } ┻{ Repeat ( '━' , 8 ) } ┛") ;
63+ sb . Append ( "┗━" ) ;
64+ variableLine . ForEach ( s => sb . Append ( s ) ) ;
65+ sb . AppendLine ( "━┻━━━━━━━━┛" ) ;
4666
4767 return sb . ToString ( ) ;
4868 }
0 commit comments