logmein Posted December 3, 2012 Posted December 3, 2012 (edited) Hi there! I have been learning linear algebra in my university for months. The subject was rather hard, I did't understand it much so I sent a email to my teacher to ask him. But I realized that typing a matrix by text was extremely hard. I don't want to make a LaTex function, save to a file, attach it to the mail, bla bla bla!!! It's complicated! So I spent 2 hours yesterday to make this tool. Just type the number of lines and columns and matrix values, it will generate a quite nice matrix in ASCII characters Enjoy! Notes: It will rearrage your numbers to straight columns. 1x1 will cause error. expandcollapse popupConsoleWrite (@CRLF & '------------------------------------MATRIX TEST-----------------------------------------' &@CRLF) Dim $c = 6;column Dim $l = 4;line Dim $n = '1,6,2,4,b,a,7,6,6,0,44,4,6,3,6,2,6,8,9,6,6,1,2,logmein' $split = StringSplit ($n,',') If $c * $l <> $split[0] Then ConsoleWrite ('! Matrix values number do not match the columns and lines !' & @CRLF) Exit EndIf Dim $char[$l][$c], $len[$l][$c], $maxlen[$c][3] For $i = 0 To $l-1 For $u = 0 To $c -1 $v = $i*($c) + $u +1 $char[$i][$u] = $split[$v] $len[$i][$u] = StringLen ($split[$v]) If $len[$i][$u] > $maxlen[$u][0] Then $maxlen[$u][0] = $len[$i][$u] $maxlen[$u][1] = $i $maxlen[$u][2] = $u EndIf Next Next Local $finallen For $u = 0 To $c - 1 $finallen += $maxlen[$u][0] Next ConsoleWrite (' _' & _Repeat(' ',$finallen + $c) & '_' & @CRLF) For $i = 0 To $l-1;write lines For $u = 0 To $c-1;write columns $v = $i*($c) + $u +1 $char[$i][$u] = $split[$v] Switch $u Case 0; the first column If StringLen ($char[$i][$u])<$maxlen[$u][0] Then ConsoleWrite ('| ' & $char[$i][$u] & _Repeat(' ', $maxlen[$u][0]-StringLen ($char[$i][$u])+1)) Else ConsoleWrite ('| ' & $char[$i][$u] & ' ') EndIf Case 1 To $c-2 ;middle columns If $i > 0 Then If StringLen ($char[$i][$u]) < $maxlen[$u][0] Then ConsoleWrite ($char[$i][$u] & _Repeat(' ', $maxlen[$u][0]-StringLen ($char[$i][$u])+1)) Else ConsoleWrite ($char[$i][$u] & ' ' ) EndIf Else If StringLen ($char[$i][$u]) < $maxlen[$u][0] Then ConsoleWrite ($char[$i][$u] & _Repeat(' ', $maxlen[$u][0]-StringLen ($char[$i][$u])+1)) Else ConsoleWrite ($char[$i][$u] & ' ' ) EndIf EndIf Case Else ; the last column If StringLen ($char[$i][$u])<$maxlen[$u][0] Then ConsoleWrite ($char[$i][$u] & _Repeat(' ', $maxlen[$u][0]-StringLen ($char[$i][$u])+1) & ' |' & @CRLF) Else ConsoleWrite ($char[$i][$u] & ' |' & @CRLF) EndIf EndSwitch Next Next ConsoleWrite ('|_' & _Repeat(' ',$finallen + $c ) & '_|' & @CRLF) Func _Repeat($chars, $times);repeat a character in a specified time Local $rChar For $a = 1 To $times $rChar &= $chars Next Return $rChar EndFunc ;==>_Repeat Edited December 3, 2012 by logmein [font=arial, helvetica, sans-serif][s]Total USB Security 3.0 Beta[/s] | [s]Malware Kill[/s] | Malware Scanner | Screen Hider | Locker | Matrix Generator[s]AUTO-SYNC 1.0 | MD5 Hash Generator | URL Checker | Tube Take [/s]| Random Text[/font]
logmein Posted December 4, 2012 Author Posted December 4, 2012 No one cares? [font=arial, helvetica, sans-serif][s]Total USB Security 3.0 Beta[/s] | [s]Malware Kill[/s] | Malware Scanner | Screen Hider | Locker | Matrix Generator[s]AUTO-SYNC 1.0 | MD5 Hash Generator | URL Checker | Tube Take [/s]| Random Text[/font]
guinness Posted December 4, 2012 Posted December 4, 2012 I have examples with 0 posts and 0 stars, so what is the problem? UDF List:  _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
logmein Posted December 5, 2012 Author Posted December 5, 2012 Mod, please close this thread. [font=arial, helvetica, sans-serif][s]Total USB Security 3.0 Beta[/s] | [s]Malware Kill[/s] | Malware Scanner | Screen Hider | Locker | Matrix Generator[s]AUTO-SYNC 1.0 | MD5 Hash Generator | URL Checker | Tube Take [/s]| Random Text[/font]
spudw2k Posted December 7, 2012 Posted December 7, 2012 (edited) No one cares?Mod, please close this thread.wah! Just like guinness said...I have examples with 0 posts and 0 stars, so what is the problem?We all experience this. If your intent was to get some sort of accolade from the community, better get used to disappointment.Asking for a mod to close the post because you are un-pleased with the response demonstrates a lack of respect for the forum and is frankly a waste of time.Who knows...maybe one day a member will come across your post and find it useful. I've experienced acknowledgment years after some of my posts. Edited December 7, 2012 by spudw2k Spoiler Things I've Made: Always On Top Tool ◊ AU History â—ŠÂ Deck of Cards â—Š HideIt â—Š ICU â—Š Icon Freezer â—Š Ipod Ejector â—Š Junos Configuration Explorer â—Š Link Downloader â—Š MD5 Folder Enumerator â—Š PassGen â—ŠÂ Ping Tool â—Š Quick NIC â—Š Read OCR â—Š RemoteIT â—Š SchTasksGui â—Š SpyCam â—Š System Scan Report Tool â—Š System UpTime â—Š Transparency Machine ◊ VMWare ESX Builder Misc Code Snippets: ADODB Example â—Š CheckHover ◊ Detect SafeMode â—Š DynEnumArray â—Š GetNetStatData ◊ HashArray â—Š IsBetweenDates â—Š Local Admins â—Š Make Choice â—Š Recursive File List â—Š Remove Sizebox Style â—Š Retrieve PNPDeviceID â—Š Retrieve SysListView32 Contents â—Š Set IE Homepage â—Š Tickle Expired Password â—Š Transpose Array Projects: Drive Space Usage GUI â—ŠÂ LEDkIT â—Š Plasma_kIt â—ŠÂ Scan Engine Builder â—Š SpeeDBurner â—Š SubnetCalc Cool Stuff: AutoItObject UDF â—Š Extract Icon From Proc â—Š GuiCtrlFontRotate â—Š Hex Edit Funcs â—Š Run binary â—Š Service_UDF Â
kylomas Posted December 8, 2012 Posted December 8, 2012 (edited) logmein, People not commenting on this script just means that whomever is reading it has nothing to say, it is not a reflection on you or the script. As spudw2k said, sometime in the future someone may run across this and need something from it. With that in mind, I would like to show you another way to do this. Please accept this as intended, instructional only. expandcollapse popup#include <GUIConstantsEx.au3> #include <windowsConstants.au3> #include <StaticConstants.au3> #include <editConstants.au3> local $str local $numcols = 5 ; inital # columns local $numents = 100 ; number of test entries to generate local $entlngth= 5 ; length of each test entry local $gui010 = guicreate('Display Matrix',500) local $size = WinGetClientSize($gui010) local $edt010 = guictrlcreateedit('',0,0,$size[0],$size[1]-30, bitor($es_readonly,$ws_hscroll, $ws_vscroll)) guictrlsetfont(-1,10,800,default,'courier new') guictrlcreatelabel('Number of columns:',10,$size[1]-25,120,20) guictrlsetfont(-1,8.5,600,default,'Lucinda Console') local $inp010 = guictrlcreateinput($numcols,130,$size[1]-25,40,20) local $btn010 = guictrlcreatebutton('Display Matrix',190,$size[1]-25,130,20) guictrlsetfont(-1,10,800) guictrlsetcolor(-1,0xaa0000) local $btn020 = guictrlcreatebutton('Re-Gen String ',350,$size[1]-25,130,20) guictrlsetfont(-1,10,800) guictrlsetcolor(-1,0xaa0000) guisetstate() _GenRandomString() While 1 switch guigetmsg() case $gui_event_close Exit case $btn010 _DisplayMatrix() case $btn020 _GenRandomString() _DisplayMatrix() EndSwitch wend func _DisplayMatrix() local $a10 = stringsplit($str,','), $out = '',$numcols = guictrlread($inp010) guictrlsetdata($edt010,'') for $1 = 1 to $a10[0] ; $numcols is the number of columns per row. This is controlled by using ; modulo integer arithmetic to insert a carrige return/line feed when we have processed $colnum entries ; from the input, in this case an array. ; The strings are padded using the stringformat function (similar to sprintf in "c") if mod($1,$numcols) = 0 then $out &= stringformat('%-' & $entlngth+3 & 's',$a10[$1]) & @crlf else $out &= stringformat('%-' & $entlngth+3 & 's',$a10[$1]) endif Next guictrlsetdata($edt010,$out) endfunc func _GenRandomString() $str = '' for $1 = 1 to $numents for $2 = 1 to random(1,$entlngth,1) $str &= chr(random(65,90,1)) next $str &= ',' Next endfunc kylomas edit: corrected spacing control Edited December 8, 2012 by kylomas Forum Rules        Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
Malkey Posted December 10, 2012 Posted December 10, 2012 Personally, I prefer right aligned columns in the matrix display. expandcollapse popupLocal $c = 6 ; column Local $l = 4 ; line Local $Mat = '1,666,2,4,b,a,7,6,6,0,44,4,6,3,6,2,6,8,9,6,6,1,2,logmein' ConsoleWrite(@CRLF & '------------------------------------MATRIX TEST (Right aligned) -----------------------------------------' & @CRLF) _MatrixDisplay($Mat) ; Right aligned ConsoleWrite(@CRLF & '------------------------------------MATRIX TEST (Left aligned) -----------------------------------------' & @CRLF) _MatrixDisplay($Mat, 0) ; Left Aligned Func _MatrixDisplay(ByRef $n, $iRightAlign = 1) Local $split = StringSplit($n, ',') ; Find array of Max. column width for each column. Local $aMax[$c] For $i = 1 To $split[0] If StringLen($split[$i]) > $aMax[Mod($i - 1, $c)]Then $aMax[Mod($i - 1, $c)] = StringLen($split[$i]) Next ; Add appropiate number of spaces to each element depending on which column the element is in. Local $iRowLen = 0 For $i = 1 To $split[0] If $iRightAlign = 1 Then $split[$i] = StringRight(_Repeat(" ", $aMax[Mod($i - 1, $c)] + 1) & $split[$i], $aMax[Mod($i - 1, $c)] + 1) ; Right aligned Else $split[$i] = StringLeft($split[$i] & _Repeat(" ", $aMax[Mod($i - 1, $c)] + 1), $aMax[Mod($i - 1, $c)] + 1) ; Left aligned EndIf If $i <= $c Then $iRowLen += StringLen($split[$i]) ; For use in top and bottom matrix display. Next ; Create matrix display Local $sMatrix = " _" & _Repeat(" ", $iRowLen) & "_" & @CRLF For $i = 1 To $l $sMatrix &= "| " For $u = 1 To $c $sMatrix &= $split[(($i - 1) * $c) + $u] Next $sMatrix &= " |" & @CRLF Next $sMatrix &= " -" & _Repeat(" ", $iRowLen) & "-" & @CRLF ConsoleWrite($sMatrix & @LF) EndFunc ;==>_MatrixDisplay Func _Repeat($chars, $times);repeat a character in a specified time Local $rChar For $a = 1 To $times $rChar &= $chars Next Return $rChar EndFunc ;==>_Repeat
logmein Posted December 14, 2012 Author Posted December 14, 2012 @Malkey and @kylomas Wow, thanks for your scripts! It's nice and simple! :thumbsup: @spudw2k Uhm, I understood. Thanks! [font=arial, helvetica, sans-serif][s]Total USB Security 3.0 Beta[/s] | [s]Malware Kill[/s] | Malware Scanner | Screen Hider | Locker | Matrix Generator[s]AUTO-SYNC 1.0 | MD5 Hash Generator | URL Checker | Tube Take [/s]| Random Text[/font]
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now